天天看點

系統性能優化分析—CPU消耗

分析CPU消耗,講白點,就是分析CPU的使用率,包括總的CPU使用率,每個CPU核的使用率和每個程序的CPU使用率。懂得這三種使用率的查詢和分析,這一塊就算搞定了。

一、總的CPU使用率

1、查詢指令

vmstat   2、指令格式 vmstat 1 10  (每隔一秒顯示一次系統的運作狀況,共顯示10次)   3、資料來源 /proc/stat   4、指令含義 vmstat指令用來獲得UNIX系統有關程序、虛存、頁面交換空間及CPU活動的資訊。這些資訊反映了系統的負載情況。vmstat首次運作時顯示自系統啟動開始的各項統計資訊,之後運作vmstat将顯示自上次運作該指令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。 (vmstat第一條結果是從系統開始到現在的平均值,不是實時的值。以後的每個結果也是統計時間内的平均值,而不是實時值。)   5、字段含義

系統性能優化分析—CPU消耗

  上圖紅色方框即是CPU各項名額的使用率情況。   us :在指定時間間隔内CPU在使用者态的使用率,即使用者程序消耗的CPU時間百分比。(=user+nice) us 列顯示了使用者方式下所花費 CPU 時間的百分比。us的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期大于 50%,需要考慮優化使用者的程式,比如算法等。   sy :在指定時間間隔内CPU在核心态的使用率,即核心程序消耗的CPU時間百分比。(=system+irq+soft) sy 列顯示了核心程序所花費的cpu時間的百分比。sy的值高時,說明系統核心消耗的CPU資源多。us+sy的參考值為<= 80%,如果us+sy 大于80%說明可能存在CPU資源不足。   id :在指定時間間隔内CPU空閑時間比,即CPU處于空閑狀态時間百分比。(=idle, 不包括等待I/O) id 列顯示了cpu處在空閑狀态的時間百分比。   wa :在指定時間間隔内CPU因為等待I/O而空閑的時間比,即IO等待消耗的CPU時間百分比。 wa 列顯示了IO等待所占用的CPU時間的百分比。這裡wa的參考值為 30%,如果wa超過30%,說明IO等待嚴重,這可能是磁盤大量随機通路造成的,也可能磁盤或者磁盤通路控制器的帶寬瓶頸造成的(主要是塊操作)。   6、其他補充 這裡user, irq, soft,idle是接下來要講的指令 mpstat 的名額;nice名額請參考另一篇博文《程序優先級,程序nice值和%nice的解釋》。   7、情景分析 如果CPU的sy和us值相加的百分比接近100%,或者運作隊列(r) 中等待的程序數(b) 總是不等于 0,則該系統受限于CPU。   vmstat的輸出哪些資訊值得關注?

--proc r:運作的程序比較多,系統很繁忙

--IO bo:磁盤寫的資料量稍大,如果大檔案的寫,10以内基本不用擔心,如果是小檔案2M以前基本正常

--CPU us:持續大于50,服務高峰期可以接受

--CPU wa:稍微有些同

--CPU id:持續小于50,服務高峰期可以接受   二、每個CPU核的使用率 1、查詢指令 mpstat   2、指令格式 mpstat [-P {|ALL}] [interval [count]]   參數的含義如下: 參數              解釋 -P {|ALL}       表示監控哪個CPU, cpu在[0,cpu個數-1]中取值 interval         相鄰的兩次采樣的間隔時間 count            采樣的次數,count隻能和delay一起使用   當沒有參數時,mpstat顯示自系統啟動以後所有資訊的平均值。有interval時,第一次輸出的資訊顯示自系統啟動以來的平均資訊,從第二次開始,輸出為前一個interval時間段的平均資訊。   3、資料來源 /proc/stat   4、指令含義 mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計資訊,這些資訊存放在/proc/stat檔案中。在多CPUs系統裡,其不但能檢視所有CPU的平均狀況資訊,而且能夠檢視特定CPU的資訊。   5、字段含義 [[email protected] linux-2.6.14]$ mpstat Linux 2.6.16.21-0.8-default (liyawei)   05/31/07 10:23:03     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s 10:23:05     all        0.50       0.00       0.00    1.99          0.00    0.00    0.00       97.51    271.64   CPU:處理器ID。 user:在interval時間段裡,使用者态的CPU時間(%),不包含nice值為負的程序。 nice:詳見另一篇博文《程序優先級,程序nice值和%nice的解釋》,此略。 sys :在interval時間段裡,核心态的CPU時間(%),比如程序的建立/切換、互斥鎖等CPU開銷。 iowait:在interval時間段裡,硬碟IO等待時間(%)。 irq  :在interval時間段裡,硬中斷時間(%)。 soft:在interval時間段裡,軟中斷時間(%)。 idle:在interval時間段裡,CPU除去等待磁盤IO操作外的因為任何原因而空閑的閑置時間(%)。 intr/s:在interval時間段裡,每秒CPU接收的中斷的次數。   6、示例 範例1:mpstat不帶參數,輸出為從系統啟動以來的平均值。 [[email protected] linux-2.6.14]$ mpstat Linux 2.6.9-5.31AXsmp (builder.redflag-linux.com) 12/16/2005 09:38:46 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s 09:38:48 AM all 23.28 0.00 1.75 0.50 0.00 0.00 74.47 1018.59   範例2:每2秒産生所有處理器的統計資料報告,一共産生三個interval 的資訊。 [[email protected] yum_dir]# mpstat -P ALL 2 3 Linux 2.6.18-164.el5 (server.sys.com)    01/04/2010 09:34:20 PM CPU   %user   %nice    %sys %iowait    %irq   %soft %steal   %idle    intr/s    (從系統啟動以來的平均資訊) 09:34:22 PM all    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00   1001.49 09:34:22 PM    0    0.00    0.00    0.50    0.00    0.00    0.00    0.00   99.50   1001.00 09:34:22 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00      0.00   09:34:22 PM CPU   %user   %nice    %sys %iowait    %irq   %soft %steal   %idle    intr/s     (前2秒的平均資訊) 09:34:24 PM all    0.00    0.00    0.25    0.00    0.00    0.00    0.00   99.75   1005.00 09:34:24 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00   1005.50 09:34:24 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00      0.00   09:34:24 PM CPU   %user   %nice    %sys %iowait    %irq   %soft %steal   %idle    intr/s     (前2秒的平均資訊) 09:34:26 PM all    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00   1001.49 09:34:26 PM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00   1001.00 09:34:26 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00      0.00   Average:     CPU   %user   %nice    %sys %iowait    %irq   %soft %steal   %idle    intr/s        (三個interval的平均資訊) Average:     all    0.00    0.00    0.08    0.00    0.00    0.00    0.00   99.92   1002.66 Average:       0    0.00    0.00    0.17    0.00    0.00    0.00    0.00   99.83   1002.49 Average:       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00 100.00      0.00   三、每個程序的CPU使用率 1、查詢指令 pidstat   2、指令格式 pidstat [-p <PID>] [interval [count]]   針對同一PID,當沒有參數時,pidstat顯示自系統啟動以後的資訊的平均值;有interval時,第一次輸出的資訊顯示自系統啟動以來的平均資訊,從第二次開始,輸出為前一個interval時間段的平均資訊。   3、資料來源 /proc/stat   4、示例 範例1:pidstat不帶參數,輸出為從系統啟動以來的平均值。

系統性能優化分析—CPU消耗

  範例2:每隔2秒,顯示5次,所有 活動程序的CPU使用情況(注意,僅顯示活動程序CPU資訊)。

系統性能優化分析—CPU消耗

  範例3:每隔2秒,顯示5次,PID為2190的程序的CPU使用情況顯示。

系統性能優化分析—CPU消耗

  (全文完)