前面介紹了影響linux性能的幾個方面以及如何解決這些方面的問題,但是如何才能從系統上發現是某個方面或某幾個方面出現問題了呢,這就需要使用linux系統提供的幾個常用性能分析工具,下面就具體講述這幾個常用性能分析工具的使用。
1.vmstat指令vmstat是Virtual Meomory Statistics(虛拟記憶體統計)的縮寫,很多linux發行版本都預設安裝了此指令工具,利用vmstat指令可以對作業系統的記憶體資訊、程序狀态、CPU活動等進行監視,不足之處是無法對某個程序進行深入分析。
vmstat使用文法如下:
vmstat [-V] [-n] [delay [count]]
各個選項及參數含義如下:
l -V:表示列印出版本資訊,是可選參數。
l -n:表示在周期性循環輸出時,輸出的頭部資訊僅顯示一次。
l delay:表示兩次輸出之間的間隔時間。
l count:表示按照“delay”指定的時間間隔統計的次數。預設為1。
例如:
vmstat 3
表示每3秒鐘更新一次輸出資訊,循環輸出,按ctrl+c停止輸出。
vmstat 3 5
表示每3秒更新一次輸出資訊,統計5次後停止輸出。
2.iostat指令iostat是I/O statistics(輸入/輸出統計)的縮寫,主要的功能是對系統的磁盤I/O操作進行監視。它的輸出主要顯示磁盤讀寫操作的統計資訊,同時也會給出CPU使用情況。同vmstat一樣,iostat也不能對某個程序進行深入分析,僅對系統的整體情況進行分析。
iostat一般都不随系統安裝,要使用iostat工具,需要在系統上安裝一個Sysstat的工具包,Sysstat是一個開源軟體,官方位址為
可以選擇源代碼包或rpm包的方式安裝,這裡不在講述安裝過程,安裝完畢,系統會多出3個指令:iostat、sar和mpstat。然後就可以直接在系統下運作iostat指令了。
iostat使用文法如下:
iostat [ -c | -d ] [ -k ] [ -t ] [ -x [ device ] ] [ interval [ count ] ]
各個選項及參數含義如下:
-c:顯示CPU的使用情況。
-d:顯示磁盤的使用情況。
-k:每秒以k bytes為機關顯示資料。
-t:列印出統計資訊開始執行的時間。
-x device:指定要統計的磁盤裝置名稱,預設為所有的磁盤裝置。
interval:指定兩次統計間隔的時間;
count:按照“interval”指定的時間間隔統計的次數。
3.sar指令sar指令很強大,是分析系統性能的重要工具之一,通過sar指令,可以全面的擷取系統的CPU、運作隊列、磁盤I/O、分頁(交換區)、記憶體、CPU中斷、網絡等性能資料。
sar使用格式為:
sar [options] [g1] [-o filename] [interval [count] ]
各個選項及參數含義如下:
l options 為指令行選項,sar指令的選項很多,下面隻列出常用選項:
Ø -A:顯示系統所有資源裝置(CPU、記憶體、磁盤)的運作狀況。
Ø -u:顯示系統所有CPU在采樣時間内的負載狀态。
Ø -P:顯示目前系統中指定CPU的使用情況。
Ø -d:顯示系統所有硬碟裝置在采樣時間内的使用狀況。
Ø -r:顯示系統記憶體在采樣時間内的使用狀況。
Ø -b:顯示緩沖區在采樣時間内的使用情況。
Ø -v:顯示程序、檔案、I節點和鎖表狀态。
Ø -n:顯示網絡運作狀态。參數後面可跟DEV、EDEV、SOCK和FULL。DEV顯示網絡接口資訊,EDEV顯示網絡錯誤的統計資料,SOCK顯示套接字資訊,FULL顯示三個所有的資訊。它們可以單獨或者一起使用。
Ø -q:顯示了運作隊列的大小,它與系統當時的平均負載相同。
Ø -R:顯示程序在采樣時間内的活動情況。
Ø -y:顯示終端裝置在采樣時間内的活動情況。
Ø -w:顯示系統交換活動在采樣時間内的狀态。
l -o filename:表示将指令結果以二進制格式存放在檔案中,filename是檔案名。
l interval:表示采樣間隔時間,是必須有的參數。
l count:表示采樣次數,是可選參數,預設值是1。
例如:
要檢視系統CPU的整體負載狀況,每3秒統計一次,統計5次,可以使用以下組合:
sar –u 3 5
系統的CPU計數是從0開始的,如果要檢視第二顆CPU的運作負載,使用下面組合:
sar –P 1 3 5
要檢視系統磁盤的讀寫性能,使用以下組合:
sar -d 3 5
同理,檢視系統記憶體使用情況、網絡運作狀态,可以分别使用下面指令:
sar -r 5 2
sar -n DEV 5 3
4、系統性能分析标準
性能調優的主要目的是使系統能夠有效的利用各種資源,最大的發揮應用程式和系統之間的性能融合,使應用高效、穩定的運作。但是,衡量系統資源使用率好壞的标準沒有一個嚴格的定義,針對不同的系統和應用也沒有一個統一的說法,是以,這裡提供的标準其實是一個經驗值,表15.1給出了判定系統資源利用狀況的一般準則:
表1給出了判定系統資源利用狀況的一般準則:
表1
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iNmBDZ1MWM5MTYjVjM5UzY4QzMhNTY0QTOmdTOxIGZi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
5、總結 以上我們講解了三個常用的系統性能分析工具,其實linux下性能分析工具還有很多,例如uptime可以檢查CPU的平均負載,free可以檢視系統記憶體的使用狀況,ps、top可以配合監控系統的程序運作狀态,netstat可以監測網絡流量狀況等等,這些指令的使用方法前面已經講述很多,故不在這裡講解。
系統性能優化是個涉及面廣、繁瑣、長久的工作,尋找出現性能問題的根源往往是最難的部分,一旦找到出現問題的原因,性能問題也就迎刃而解。是以,解決問題的思路變得非常重要。
例如,linux系統下的一個網站系統,使用者反映,網站通路速度很慢,有時無法通路。
針對這個問題,第一步要做的是檢測網絡,可以通過ping指令檢查網站的域名解析是否正常,同時,ping伺服器位址的延時是否過大等等,通過這種方式,首先排除網絡可能出現的問題;如果網絡沒有問題,接着進入第二步,對linux系統的記憶體使用狀況進行檢查,因為網站響應速度慢,一般跟記憶體關聯比較大,通過free、vmstat等指令判斷記憶體資源是否緊缺,如果記憶體資源不存在問題,進入第三步,檢查系統CPU的負載狀況,可以通過sar、vmstat、top等指令的輸出綜合判斷CPU是否存在過載問題,如果CPU沒有問題,繼續進入第四步,檢查系統的磁盤I/O是否存在瓶頸,可以通過iostat、vmstat等指令檢查磁盤的讀寫性能,如果磁盤讀寫也沒有問題,linux系統自身的性能問題基本排除,最後要做的是檢查程式本身是否存在問題。通過這樣的思路,層層檢測,步步排查,性能問題就“無處藏身”,查找出現性能問題的環節也就變得非常簡單。