Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save m41039/04f2dcfb293fc1eeb668606e7dbeefd2 to your computer and use it in GitHub Desktop.
Save m41039/04f2dcfb293fc1eeb668606e7dbeefd2 to your computer and use it in GitHub Desktop.
Linux中常用的監控CPU整體性能的工具有:
§ mpstat: mpstat 不但能查看所有CPU的平均信息,還能查看指定CPU的信息。
§ vmstat:只能查看所有CPU的平均信息;查看cpu隊列信息;
§ iostat: 只能查看所有CPU的平均信息。
§ sar: 與mpstat 一樣,不但能查看CPU的平均信息,還能查看指定CPU的信息。
§ top:顯示的信息同ps接近,但是top可以瞭解到CPU消耗,可以根據用戶指定的時間來更新顯示。
一,vmstat
[root@localhost ~]#vmstat -n 3 (每個3秒刷新一次)
PROC(ESSES)
--r:如果在processes中運行的序列(process r)是連續的大於在系統中的CPU的個數表示系統現在運行比較慢,有多數的進程等待CPU.
如果r的輸出數大於系統中可用CPU個數的4倍的話,則系統面臨著CPU短缺的問題,或者是CPU的速率過低,系統中有多數的進程在等待CPU,造成系統中進程運行過慢.
SYSTEM
--in:每秒產生的中斷次數
--cs:每秒產生的上下文切換次數
上面2個值越大,會看到由內核消耗的CPU時間會越大
CPU
-us:用戶進程消耗的CPU時間百分
us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程序算法或者進行加速(比如PHP/PERL)
-sy:內核進程消耗的CPU時間百分比(sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因)
-wa:IO等待消耗的CPU時間百分比
wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。
-id:CPU處於空閒狀態時間百分比,如果空閒時間(cpu id)持續為0並且系統時間(cpu sy)是用戶時間的兩倍(cpu us) 系統則面臨著CPU資源的短缺
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關鍵字是所有系統進程的統計。
用sar進行CPU利用率的分析
#sar -u 2 10
在顯示內容包括:
  %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 -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)
mpstat
mpstat 是Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裡,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。下面只介紹 mpstat與CPU相關的參數,mpstat的語法如下:
mpstat [-P {|ALL}] [internal [count]]
參數的含義如下:
參數 解釋
-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次採樣的間隔時間
count 採樣的次數,count只能和delay一起使用
當沒有參數時,mpstat則顯示系統啟動以後所有信息的平均值。有interval時,第一行的信息自系統啟動以來的平均信息。從第二行開始,輸出為前一個interval時間段的平均信息。與CPU有關的輸出的含義如下:
參數 解釋 從/proc/stat獲得數據
CPU 處理器ID
user 在internal時間段裡,用戶態的CPU時間(%) ,不包含 nice值為負 進程 dusr/dtotal*100
nice 在internal時間段裡,nice值為負進程的CPU時間(%) dnice/dtotal*100
system 在internal時間段裡,核心時間(%) dsystem/dtotal*100
iowait 在internal時間段裡,硬盤IO等待時間(%) diowait/dtotal*100
irq 在internal時間段裡,軟中斷時間(%) dirq/dtotal*100
soft 在internal時間段裡,軟中斷時間(%) dsoftirq/dtotal*100
idle 在internal時間段裡,CPU除去等待磁盤IO操作外的因為任何原因而空閒的時間閒置時間 (%) didle/dtotal*100
intr/s 在internal時間段裡,每秒CPU接收的中斷的次數 dintr/dtotal*100
CPU總的工作時間=total_cur=user+system+nice+idle+iowait+irq+softirq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment