天天看點

學會使用Linux性能分析工具

Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴充性,能夠針對不同的應用和硬體環境調整,優化出滿足目前應用需要的最佳性能。是以企業在維護Linux系統、進行系統調優時,了解系統性能分析工具是至關重要的。

  在Linux下有很多系統性能分析工具,比較常見的有top、free、ps、time、timex、uptime等。下文将介紹幾個較為重要的性能分析工具vmstat、iostat和sar及其使用。

  用vmstat監視記憶體使用情況

  vmstat是Virtual Meomory Statistics(虛拟記憶體統計)的縮寫,可對作業系統的虛拟記憶體、程序、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。

  vmstat的文法如下:

  其中,-V表示列印出版本資訊;-n表示在周期性循環輸出時,輸出的頭部資訊僅顯示一次;delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對于vmstat輸出各字段的含義,可運作man vmstat檢視。

  用iostat監視I/O子系統情況

  iostat是I/O statistics(輸入/輸出統計)的縮寫,iostat工具将對系統的磁盤操作活動進行監視。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。同vmstat一樣,iostat也有一個弱點,就是它不能對某個程序進行深入分析,僅對系統的整體情況進行分析。

  iostat的文法如下:

  其中,-c為彙報CPU的使用情況;-d為彙報磁盤的使用情況;-k表示每秒按kilobytes位元組顯示資料;-t為列印彙報的時間;-v表示列印出版本資訊和用法;-x device指定要統計的裝置名稱,預設為所有的裝置;interval指每次統計間隔的時間;count指按照這個時間間隔統計的次數。

  iostat一般的輸出格式如下:

  對于輸出中各字段的含義,iostat的幫助中有詳細的說明。

  使用sar進行綜合分析

  表1 sar參數說明

  選項 功能

  -A 彙總所有的報告

  -a 報告檔案讀寫使用情況

  -B 報告附加的緩存的使用情況

  -b 報告緩存的使用情況

  -c 報告系統調用的使用情況

  -d 報告磁盤的使用情況

  -g 報告序列槽的使用情況

  -h 報告關于buffer使用的統計資料

  -m 報告IPC消息隊列和信号量的使用情況

  -n 報告命名cache的使用情況

  -p 報告調頁活動的使用情況

  -q 報告運作隊列和交換隊列的平均長度

  -R 報告程序的活動情況

  -r 報告沒有使用的記憶體頁面和硬碟塊

  -u 報告CPU的使用率

  -v 報告程序、i節點、檔案和鎖表狀态

  -w 報告系統交換活動狀況

  -y 報告TTY裝置活動狀況

  sar是System Activity Reporter(系統活動情況報告)的縮寫。顧名思義,sar工具将對系統目前的狀态進行取樣,然後通過計算資料和比例來表達系統的目前運作狀态。它的特點是可以連續對系統取樣,獲得大量的取樣資料;取樣資料和分析的結果都可以存入檔案,所需的負載很小。sar是目前Linux上最為全面的系統性能分析工具之一,可以從14個大方面對系統的活動進行報告,包括檔案的讀寫情況、系統調用的使用情況、序列槽、CPU效率、記憶體使用狀況、程序活動及IPC有關的活動等,使用也是較為複雜。

  sar的文法如下:

  它的含義是每隔t秒取樣一次,共取樣n次。其中-o file表示取樣結果将以二進制形式存入檔案file中。

  另一種文法如下:

  含義是表示從file檔案中取出資料,如果沒有指定-f file,則從标準資料檔案/var/adm/sa/sadd取資料,其中dd表示目前天。另外,-s time表示起始時間;-e time表示停止時間;-i sec表示取樣的時間間隔,如果不指定則表示取檔案中所有的資料。對于具體的選項參見表1。

  一般它與-q和-u聯合使用,以便對每個CPU的使用情況進行分析,比如運作如下指令:

  将輸出如下:

  由于sar指令太複雜,隻有通過熟練使用才能了解每個選項的含義,對于sar輸出中每個字段的含義運作man sar指令可以得到詳細的解釋。 

繼續閱讀