Last active
January 12, 2024 09:40
-
-
Save m41039/04f2dcfb293fc1eeb668606e7dbeefd2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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