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指令可以得到詳細的解釋。