[zt] Linux中常用的監控CPU整體效能工具
Linux中常用的監控CPU整體效能的工具有:
mpstat: mpstat 不但能檢視所有CPU的平均資訊,還能檢視指定CPU的資訊。
vmstat:只能檢視所有CPU的平均資訊;檢視cpu佇列資訊;
iostat: 只能檢視所有CPU的平均資訊。
sar: 與mpstat 一樣,不但能檢視CPU的平均資訊,還能檢視指定CPU的資訊。
top:顯示的資訊同ps接近,但是top可以瞭解到CPU消耗,可以根據使用者指定的時間來更新顯示。
oprofile:OProfile 是一個低開銷的系統全域性的效能監視工具。它使用處理器上的效能監視硬體來檢索關於核心以及系統上的可執行檔案的資訊,例如記憶體是何時被引用的;L2 快取請求數量;收到的硬體中斷數量等
1. /proc/stat/
包含了所有CPU活動的資訊,該檔案中的所有值都是從系統啟動開始累計到當前時刻。
CODE:
[work@builder ~]$ cat /proc/stat cpu 432661 13295 86656 422145968 171474 233 5346 cpu0 123075 2462 23494 105543694 16586 0 4615 cpu1 111917 4124 23858 105503820 69697 123 371 cpu2 103164 3554 21530 105521167 64032 106 334 cpu3 94504 3153 17772 105577285 21158 4 24 intr 1065711094 1057275779 92 0 6 6 0 4 0 3527 0 0 0 70 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7376958 0 0 0 0 0 0 0 1054602 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 19067887 btime 1139187531 processes 270014 procs_running 1 procs_blocked 0 |
輸出解釋
CPU 以及CPU0、CPU1、CPU2、CPU3每行的每個引數意思(以第一行為例)為:
引數 解釋
user (432661) 從系統啟動開始累計到當前時刻,使用者態的CPU時間(單位:jiffies) ,不包含 nice值為負程式。1jiffies=0.01秒
nice (13295) 從系統啟動開始累計到當前時刻,nice值為負的程式所佔用的CPU時間(單位:jiffies)
system (86656) 從系統啟動開始累計到當前時刻,核心時間(單位:jiffies)
idle (422145968) 從系統啟動開始累計到當前時刻,除硬碟IO等待時間以外其它等待時間(單位:jiffies)
iowait (171474) 從系統啟動開始累計到當前時刻,硬碟IO等待時間(單位:jiffies) ,
irq (233) 從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies)
softirq (5346) 從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
CPU時間=user+system+nice+idle+iowait+irq+softirq
“intr”這行給出中斷的資訊,第一個為自系統啟動以來,發生的所有的中斷的次數;然後每個數對應一個特定的中斷自系統啟動以來所發生的次數。
“ctxt”給出了自系統啟動以來CPU發生的上下文交換的次數。
“btime”給出了從系統啟動到現在為止的時間,單位為秒。
“processes (total_forks) 自系統啟動以來所建立的任務的個數目。
“procs_running”:當前執行佇列的任務的數目。
“procs_blocked”:當前被阻塞的任務的數目。
2. /proc/loadavg
該檔案中的所有值都是從系統啟動開始累計到當前時刻。該檔案只給出了所有CPU的集合資訊,不能該出每個CPU的資訊。
[root@localhost ~]# cat /proc/loadavg
4.61 4.36 4.15 9/84 5662
每個值的含義為:
引數 解釋
lavg_1 (4.61) 1-分鐘平均負載
lavg_5 (4.36) 5-分鐘平均負載
lavg_15(4.15) 15-分鐘平均負載
nr_running (9) 在取樣時刻,執行佇列的任務的數目,與/proc/stat的procs_running表示相同意思
nr_threads (84) 在取樣時刻,系統中活躍的任務的個數(不包括執行已經結束的任務)
last_pid(5662) 最大的pid值,包括輕量級程式,即執行緒。
假設當前有兩個CPU,則每個CPU的當前任務數為4.61/2=2.31
3. uptime
uptime是Linux系統常用的命令,用來報告系統已經執行多長時間,依此顯示的資訊:現在時間,系統已經執行了的時間,目前有多少登陸使用者, 1分鐘系統平均負載,5分鐘系統平均負載,15分鐘系統平均負載。該命令從/proc/loadavg 中獲得load average的資訊。
範例1:系統只用一個CPU
[root@localhost ~]# uptime
12:20:49 up 3 days,9:20, 5 users, load average 1.10 1.32 1.15
對於一個CPU的系統來說,範例1中的平均負載高了些。通常來說:如果系統有n個CPU而且平均負載小於n,則說明某些CPU還有空閒的時間片。透過該命令,你能知道CPU是否繁忙,但是無法知道為什麼忙。
4. 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值為負 程式 usr/total*100
nice 在internal時間段裡,nice值為負程式的CPU時間(%) nice/total*100
system 在internal時間段裡,核心時間(%) system/total*100
iowait 在internal時間段裡,硬碟IO等待時間(%) iowait/total*100
irq 在internal時間段裡,軟中斷時間(%) irq/total*100
soft 在internal時間段裡,軟中斷時間(%) softirq/total*100
idle 在internal時間段裡,CPU除去等待磁碟IO操作外的因為任何原因而空閒的時間閒置時間 (%) idle/total*100
intr/s 在internal時間段裡,每秒CPU接收的中斷的次數 intr/total*100
CPU總的工作時間=total_cur=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
其中_cur 表示當前值,_pre表示interval時間前的值。上表中的所有值可取到兩位小數點。
範例1:average mode (粗略資訊)
當mpstat不帶引數時,輸出為從系統啟動以來的平均值。
CODE:
[work@builder 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秒產生了4個處理器的統計資料包告
下面的命令可以每2秒產生了4個處理器的統計資料包告,一共產生三個interval 的資訊,然後再給出這三個interval的平均資訊。預設時,輸出是按照CPU 號排序。第一個行給出了從系統引導以來的所有活躍資料。接下來每行對應一個處理器的活躍狀態。。
CODE:
[work@builder linux-2.6.14]$ mpstat -P ALL 2 3 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 09:38:48 AM 0 2.01 0.00 1.01 0.50 0.00 0.00 96.48 5.03 09:38:48 AM 1 51.26 0.00 3.02 1.01 0.00 0.00 44.72 7.04 09:38:48 AM 2 17.09 0.00 2.01 0.50 0.00 0.00 81.41 0.00 09:38:48 AM 3 22.61 0.00 1.01 0.00 0.00 0.00 76.38 1006.03 09:38:48 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s 09:38:50 AM all 24.22 0.00 1.25 1.25 0.00 0.00 73.28 1049.75 09:38:50 AM 0 1.00 0.00 1.00 0.00 0.00 0.00 98.01 28.86 09:38:50 AM 1 93.03 0.00 3.48 0.00 0.00 0.00 2.99 25.37 09:38:50 AM 2 1.99 0.00 0.50 4.98 0.00 0.00 92.54 0.00 09:38:50 AM 3 1.00 0.00 0.50 0.00 0.00 0.00 98.51 995.52 09:38:50 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s 09:38:52 AM all 23.69 0.00 2.37 0.37 0.00 0.12 73.44 1028.36 09:38:52 AM 0 2.99 0.00 1.49 0.00 0.00 0.50 95.02 111.94 09:38:52 AM 1 52.74 0.00 2.99 1.00 0.00 0.00 42.29 4.48 09:38:52 AM 2 14.93 0.00 1.99 0.00 0.00 0.00 82.09 4.48 09:38:52 AM 3 23.38 0.00 1.99 0.50 0.00 0.00 73.13 907.46 Average: CPU %user %nice %system %iowait %irq %soft %idle intr/s Average: all 23.73 0.00 1.79 0.71 0.00 0.04 73.73 1032.28 Average: 0 2.00 0.00 1.16 0.17 0.00 0.17 96.51 48.75 Average: 1 65.72 0.00 3.16 0.67 0.00 0.00 29.95 12.31 Average: 2 11.31 0.00 1.50 1.83 0.00 0.00 85.36 1.50 Average: 3 15.64 0.00 1.16 0.17 0.00 0.00 82.70 969.55 [work@builder linux-2.6.14]$ |
範例3:比較帶引數和不帶引數的mpstat的結果。
在後臺開一個2G的檔案
> cat 1.img —/* 1.img=2GBytes
然後在另一個終端執行mpstat命令
CODE:
[root@localhost ~]# mpstat Linux 2.6.13 (localhost.localdomain) 2005年12月15日 13時48分52秒 CPU %user %nice %system %iowait %irq %soft %idle intr/s 13時48分52秒 all 1.57 0.00 0.24 0.15 0.12 0.01 97.92 308.12 [root@localhost ~]# mpstat Linux 2.6.13 (localhost.localdomain) 2005年12月15日 13時48分53秒 CPU %user %nice %system %iowait %irq %soft %idle intr/s 13時48分53秒 all 1.57 0.00 0.24 0.15 0.12 0.01 97.92 308.12 [root@localhost ~]# mpstat Linux 2.6.13 (localhost.localdomain) 2005年12月15日 13時48分53秒 CPU %user %nice %system %iowait %irq %soft %idle intr/s 13時48分53秒 all 1.57 0.00 0.24 0.15 0.12 0.01 97.92 308.12 [root@localhost ~]# mpstat Linux 2.6.13 (localhost.localdomain) 2005年12月15日 13時48分54秒 CPU %user %nice %system %iowait %irq %soft %idle intr/s 13時48分54秒 all 1.57 0.00 0.24 0.15 0.12 0.01 97.92 308.12 [root@localhost ~]# 然後再執行命令:mpstat 3 100 /*每隔3秒給出一次資訊,共給出100次*/ [root@localhost ~]# mpstat 3 100 Linux 2.6.13 (localhost.localdomain) 2005年12月15日 13時48分25秒 CPU %user %nice %system %iowait %irq %soft %idle intr/s 13時48分28秒 all 96.00 0.00 4.00 0.00 0.00 0.00 0.00 401.67 13時48分31秒 all 96.01 0.00 3.65 0.00 0.33 0.00 0.00 393.36 13時48分34秒 all 95.36 0.00 4.30 0.00 0.33 0.00 0.00 532.45 13時48分37秒 all 94.00 0.00 5.67 0.00 0.33 0.00 0.00 400.33 13時48分40秒 all 95.00 0.00 5.00 0.00 0.00 0.00 0.00 330.33 13時48分43秒 all 95.33 0.00 4.33 0.00 0.33 0.00 0.00 337.33 13時48分46秒 all 94.68 0.00 4.98 0.00 0.33 0.00 0.00 329.57 13時48分49秒 all 95.67 0.00 4.00 0.00 0.33 0.00 0.00 417.33 13時48分52秒 all 95.67 0.00 3.67 0.00 0.67 0.00 0.00 448.00 13時48分55秒 all 94.02 0.00 5.32 0.00 0.33 0.33 0.00 410.96 13時48分58秒 all 95.35 0.00 4.32 0.00 0.33 0.00 0.00 466.45 [root@localhost ~]# |
上兩表顯示出當要正確反映系統的情況,需要正確使用命令的引數。vmstat 和iostat 也需要注意這一問題。
5. vmstat
vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫, 是實時系統監控工具。該命令透過使用knlist子程式和/dev/kmen偽裝置驅動器訪問這些資料,輸出資訊直接列印在螢幕。vmstat反饋的與CPU相關的資訊包括:
(1)多少任務在執行
(2)CPU使用的情況
(3)CPU收到多少中斷
(4)發生多少上下文切換
下面只介紹 Vmstat與CPU相關的引數
vmstat的語法如下:
vmstat [delay [count]]
引數的含義如下:
引數 解釋
delay 相鄰的兩次取樣的間隔時間
count 取樣的次數,count只能和delay一起使用
當沒有引數時,vmstat則顯示系統啟動以後所有資訊的平均值。有delay時,第一行的資訊自系統啟動以來的平均資訊。從第二行開始,輸出為前一個delay時間段的平均資訊。當系統有多個CPU時,輸出為所有CPU的平均值。
與CPU有關的輸出的含義 (採用進一法)
引數 解釋 從/proc/stat獲得資料
任務的資訊
r 在internal時間段裡,執行佇列裡等待CPU的任務(任務)的個數,即不包含vmstat程式 procs_running-1
b 在internal時間段裡,被資源阻塞的任務數(I/0,頁面排程,等等.) ,通常情況下是接近0的 procs_blocked
CPU資訊 所有值取整(四捨五入)
us 在internal時間段裡,使用者態的CPU時間(%),包含 nice值為負程式 (user+nice)/total*100
sy 在internal時間段裡,核心態的CPU時間(%) (system+irq+softirq)/total*100
id 在internal時間段裡,cpu空閒的時間,不包括等待i/o的時間(%) idle/total*100
wa 在internal時間段裡,等待i/o的時間(%) iowait/total*100
系統資訊
in 在internal時間段裡,每秒發生中斷的次數 intr/interval
cs 在internal時間段裡,每秒上下文切換的次數,即每秒核心任務交換的次數 ctxt/interval
CODE:
total_cur=user+system+nice+idle+iowait+irq+softirq total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq total=total_cur-total_pre |
範例1:average mode (粗略資訊)
當vmstat不帶引數時,對應的輸出值是從系統啟動以來的平均值,而r和b則對應的是完成這一命令時,系統的值。從下面例子,可以看出系統基本出去閒置狀態(idle)。自啟動以來,CPU在使用者態消耗時間為5%,在核心態消耗為本1%,剩下的為閒置時間。需要指出的是:這裡的使用者態時間包括nice值為負的程式的時間。
CODE:
[root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 4580 428 98516 0 0 49 6 15 19 2 1 96 1 [root@localhost ~]# |
範例2:average mode (詳細資訊)
命令格式:
vmstat –s
這裡只討論與CPU相關資訊。“CPU ticks”表示自系統啟動CPU執行時間,這裡以tick為時間單位。用tick來西安市us,sy id 和wa的時間;forks指自從系統啟動以來,所建立的新任務的個數。這些資訊從/proc/stat 的第一行和”processes”行獲得。
CODE:
[root@localhost ~]# vmstat -s 255280 total memory 244216 used memory 206624 active memory 21208 inactive memory 11064 free memory 628 buffer memory 91396 swap cache 255992 total swap 24 used swap 255968 free swap 973400 non-nice user cpu ticks 477 nice user cpu ticks 206168 system cpu ticks 43567714 idle cpu ticks 373234 IO-wait cpu ticks 62732 IRQ cpu ticks 1972 softirq cpu ticks 22366502 pages paged in 88756936 pages paged out 0 pages swapped in 0 pages swapped out 135634319 interrupts 137288441 CPU context switches 1134440368 boot time 208990 forks [root@localhost ~]# |
結果解釋
引數 描述 /proc/stat
non-nice user cpu ticks 自系統啟動以來,CPU在使用者態下執行非nice程式的時間,單位為jiffies user
nice user cpu ticks 自系統啟動以來,CPU在使用者態下執行nice程式的時間,單位為jiffies nice
system cpu ticks 自系統啟動以來,CPU處於系統狀態的時間,單位為jiffies sys
idle cpu ticks 自系統啟動以來,CPU處於閒置狀態的時間,單位為jiffies idle
IO-wait cpu ticks 自系統啟動以來,CPU處理IO中斷的時間,單位為jiffies iowait
IRQ cpu ticks 自系統啟動以來,CPU處理硬中斷的時間,單位為jiffies irq
softing cpu ticks 自系統啟動以來,CPU處理軟中斷的時間,單位為jiffies Softirq
interrupts 自系統啟動以來,發生的所有的中斷的次數目 Intr
CPU context switches 自系統啟動以來,發生的上下文交換的次數 Ctxt
boot time 自系統啟動以來到現在執行的時間,單位為秒。 btime
forks 自系統啟動以來所建立的任務的個數目。 Process
範例3:定期取樣(delay [count])
定期取樣資料是指每隔delay時間,取樣一次。當count 為0時,vmstat 將不停地定期報告資訊;否則當報告count次後,vmstat 命令停止執行。
第一行的資訊如同範例1,是自系統啟動以來的平均資訊。從第二行開始,每行的意思是:r和b取樣那一時刻系統執行佇列和等待佇列的情況;而usystem引數(in,cs)以及CPU引數(us,sy,id,wa)對應的輸出值是系統在前一個delay的情況。
從下面例子可以看出上下文交換的次數小於中斷的發生次數。當系統大部分時間是空閒並且中斷大部分是時間中斷時,這種現象極可能發生。當時間中斷髮生時, 因為排程器沒有什麼任務可排程,所以很少發生上下文切換。
CODE:
[root@localhost ~]# vmstat 2 4 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 24 11032 652 91396 0 0 49 6 15 19 2 1 96 1 0 0 24 11032 652 91396 0 0 0 0 377 464 1 0 99 0 0 0 24 11024 652 91396 0 0 0 0 387 476 1 0 100 0 0 0 24 11024 652 91396 0 0 0 0 323 377 0 0 100 0 [root@localhost ~]# |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-496259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux中監控系統效能常用的命令!Linux
- Linux 效能監控工具Linux
- 幾個常用的linux效能監控命令Linux
- 監控Ubuntu Linux中的CPU/GPU 溫度UbuntuLinuxGPU
- Linux 中CPU 和 GPU 的行為監控LinuxGPU
- Linux常用的監控軟體介紹!Linux
- 在Linux中,如何進行硬體效能監控?Linux
- Linux下監控流量常用的三大工具!Linux
- 【合集】Linux運維常用的服務監控工具Linux運維
- 10多個 Linux 系統管理員必備的監控工具、常用的網站監控工具Linux網站
- 在Linux中,如何監控系統的效能?Linux
- 記憶體CPU監控記憶體
- linux監控工具auditLinux
- 一文詳解Linux系統常用監控工具Linux
- 在Linux中,如何進行磁碟效能監控?Linux
- 手把手教你安裝Linux效能監控工具——pydashLinux
- zabbix修改LINUX的CPU負載監控問題Linux負載
- Centos效能監控工具——netdata配置CentOS
- Linux 流量監控工具 iftopLinux
- Linux程式管理與效能監控Linux
- SQL Server 2005效能調整二(zt)SQLServer
- APM效能監控軟體的監控型別服務及監控流程型別
- 在Linux中,如何進行系統效能監控?Linux
- 在 Linux 上監控 CPU 和 GPU 溫度LinuxGPU
- 常用的4個伺服器效能監控命令伺服器
- Flutter效能監控工具(3)--- Observatory使用Flutter
- ios 手機app效能監控工具iOSAPP
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- Windows 2003自帶效能監控工具的使用Windows
- Linux 中如何使用 Htop 監控工具?【網路安全】Linux
- 在Linux中,什麼是系統監控和效能分析工具?舉例說明。Linux
- 進行Linux效能監控的命令介紹Linux
- 在Linux中,如何進行系統效能的持續監控?Linux
- ☕[JVM效能專題](1)效能監控-命令列工具JVM命令列
- Linux運維監控工具有哪些?Linux學習軟體推薦Linux運維
- Flutter效能監控工具(1)--- Observatory簡介Flutter
- 效能監控工具之Grafana+Prometheus+ExportersGrafanaPrometheusExport
- 效能測試監控工具--Jmeter + Grafana + InfluxDBJMeterGrafanaUX
- OpManager--強大的網路效能監控工具