Linux效能監控與分析之--- CPU__Linux

來源:互聯網
上載者:User

CPU效能指標

1. 使用者進程使用CPU的比率

2. 系統進程使用CPU的比率

3. WIO, 等待I/O 而是CPU處於空閑狀態的比率。

4. CPU的空閑率

5. CPU用於上下文交換的比率

6,nice

7,real-time

8,運行進程隊列的長度

9,平均負載


Linux下常用監控CPU效能的工具有

1. iostat

只能查看所有CPU的平均資訊

2. vmstat

能查看所有CPU的平均資訊,

能查看CPU隊列資訊

3. mpstat

能查看單個和所有的CPU資訊。

4. sar

與mpstat類似

5. top

6. nmon


iostat

$ iostatLinux 2.6.18-92.el5          08/30/2012avg-cpu:  %user   %nice %system %iowait  %steal   %idle           1.16    0.01    0.62    0.18    0.00   98.03

vmstat
$ vmstat -n 5procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0     96 1261196 981892 3638872    0    0     0    16    1    1  1  1 98  0  0

-n 5 參數的意義是每隔 5 秒重新整理一次

procs

    r   -- 下面的數字代表啟動並執行序列。如果這個值連續大於系統的CPU個數表示系統運行較慢, 有多數進程等待CPU。 如果r的個數大於CPU的4倍的話, 則系統面臨CPU短缺或是CPU的速率過低,造成系統運行過慢。

System

   in -- 每秒產生的中斷次數

   cs -- 每秒產生的環境切換次數。

   這兩個值越大,系統進程消耗的CPU的時間越大。

CPU

    us  -- 使用者進程消耗CPU的時間百分比。長期居高不下, 就需要最佳化程式了。

    sy   -- 系統進程消耗CPU的時間百分比。 sy 值高, 並不是良性的表現。

    wa  -- IO等待消耗的CPU時間百分比, 值高時,說明IO等待比較嚴重, 可能由於磁碟大量隨機訪問造成, 也有可能磁碟出現瓶頸。

    id  -- CPU 處於空閑時間百分比。如果持續為0且出現sy 是us 兩倍狀況,則系統面臨CPU資源短缺。當發生此問題的時候請先調整應用程式對CPU的佔用情況.使得應用程式能夠更有效使用CPU.同時可以考慮增加更多的CPU. 

mpstat - (Multiprocessor Statistics)

實施監控, 資訊存放在 /proc/stat檔案中

$ mpstat -P ALL 2 10Linux 2.6.18-92.el5 ()         08/30/201208:16:34 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s08:16:36 PM  all    0.78    0.00    0.26    0.26    0.00    0.26    0.00   98.44   1058.8508:16:36 PM    0    0.52    0.00    0.52    0.00    0.00    0.52    0.00   98.44   1058.8508:16:36 PM    1    0.52    0.00    0.00    0.00    0.00    0.00    0.00   99.48      0.00

以上意思是: 每隔2秒採樣所有CPU的使用狀況, 總過採樣10次。文法如下:

mpstat [-P {|ALL}] [internal [count]]

-P  監控哪個CPU, 一般使用ALL就可以了

Internal 間隔的時間

count 採樣的次數

輸出參數意義

%user  -- 使用者態CPU時間比

%nice -- 負進程的CPU時間

%system -  核心態時間

iowait -- IO 等待時間

irq --

soft

idle

intr/s 每秒CPU接收中斷的次數


sar

$ sar -u 2 10Linux 2.6.18-92.el5 ()         08/30/201208:28:36 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle08:28:38 PM       all      0.26      0.00      0.00      0.78      0.00     98.9708:28:40 PM       all      0.52      0.00      0.52      0.00      0.00     98.97

sar [options] [-A] [-o file] t [n]

在命令列中,n 和t 兩個參數組合起來定義採樣間隔和次數,t為採樣間隔,是必須有
的參數,n為採樣次數,是可選的,預設值是1,-o file表示將命令結果以二進位格式
存放在檔案中,file 在此處不是關鍵字,是檔案名稱。options 為命令列選項,sar命令
的選項很多,下面只列出常用選項:

-A:所有報告的總和。
-u:CPU利用率
-v:進程、I節點、檔案和鎖表狀態。
-d:硬碟使用報告。
-r:記憶體和交換空間的使用統計。
-g:串口I/O的情況。
-b:緩衝區使用方式。
-a:檔案讀寫情況。
-c:系統調用情況。
-q:報告隊列長度和系統平均負載
-R:進程的活動情況。
-y:終端裝置活動情況。
-w:系統交換活動。
-x { pid | SELF | ALL }:報告指定進程ID的統計資訊,SELF關鍵字是sar進程本身的統計,ALL關鍵字是所有系統進程的統計



    %user:CPU處在使用者模式下的時間百分比。
    %nice:CPU處在帶NICE值的使用者模式下的時間百分比。
 %system:CPU處在系統模式下的時間百分比。
 %iowait:CPU等待輸入輸出完成時間的百分比。
    %steal:管理程式維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
 %idle:CPU空閑時間百分比。
        在所有的顯示中,我們應主要注意%iowait和%idle,%iowait的值過高,表示硬碟存在I/O瓶頸,%idle值高,表示CPU較空閑,如果%idle值高但系統響應慢時,有可能是CPU等待分配記憶體,此時應加大記憶體容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。


用sar進行運行進程隊列長度分析:
#sar -q 2 10
Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009
07:58:14 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
07:58:16 PM         0         493          0.64        0.56        0.49
07:58:18 PM         1         491          0.64        0.56        0.49
07:58:20 PM         1         488          0.59        0.55        0.49
07:58:22 PM         0         487          0.59        0.55        0.49
07:58:24 PM         0         485          0.59        0.55        0.49
07:58:26 PM         1         483          0.78        0.59        0.50
07:58:28 PM         0         481          0.78        0.59        0.50
07:58:30 PM         1         480          0.72        0.58        0.50
07:58:32 PM         0         477          0.72        0.58        0.50
07:58:34 PM         0         474          0.72        0.58        0.50
Average:               0         484          0.68        0.57        0.49
 
runq-sz 準備啟動並執行進程運行隊列。
plist-sz  進程隊列裡的進程和線程的數量
ldavg-1  前一分鐘的系統平均負載(load average)
ldavg-5  前五分鐘的系統平均負載(load average)
ldavg-15  前15分鐘的系統平均負載(load average)
 
順便說一下load avarage的含義
load average可以理解為每秒鐘CPU等待啟動並執行進程個數.
在Linux系統中,sar -q、uptime、w、top等命令都會有系統平均負載load average的輸出,那麼什麼是系統平均負載呢。
  系統平均負載被定義為在特定時間間隔內運行隊列中的平均任務數。如果一個進程滿足以下條件則其就會位於運行隊列中:
  - 它沒有在等待I/O操作的結果
  - 它沒有主動進入等待狀態(也就是沒有調用'wait')
  - 沒有被停止(例如:等待終止)
  例如:
# uptime
  20:55:40 up 24 days,  3:06,  1 user,  load average: 8.13, 5.90, 4.94
  命令輸出的最後內容表示在過去的1、5、15分鐘內運行隊列中的平均進程數量。
  一般來說只要每個CPU的當前活動進程數不大於3那麼系統的效能就是良好的,如果每個CPU的任務數大於5,那麼就表示這台機器的效能有嚴重問題。對 於上面的例子來說,假設系統有兩個CPU,那麼其每個CPU的當前任務數為:8.13/2=4.065。這表示該系統的效能是可以接受的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.