CPU性能指標(biāo)
- 用戶進(jìn)程使用CPU的比率
- 系統(tǒng)進(jìn)程使用CPU的比率
- WIO, 等待I/O 而是CPU處于空閑狀態(tài)的比率。
- CPU的空閑率
- CPU用于上下文交換的比率
6请唱,nice
7,real-time
8递雀,運行進(jìn)程隊列的長度
9泵喘,平均負(fù)載
Linux下常用監(jiān)控CPU性能的工具有
- iostat
只能查看所有CPU的平均信息 - vmstat
能查看所有CPU的平均信息,
能查看CPU隊列信息 - mpstat
能查看單個和所有的CPU信息弊知。 - sar
與mpstat類似 - top
- nmon
iostat
iostat
Linux 2.6.18-92.el5 08/30/2012
avg-cpu: %user %nice %system %iowait %steal %idle
1.16 0.01 0.62 0.18 0.00 98.03
vmstat
vmstat -n 5
procs -----------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 參數(shù)的意義是每隔 5 秒刷新一次
- procs
- r -- 下面的數(shù)字代表運行的序列。如果這個值連續(xù)大于系統(tǒng)的CPU個數(shù)表示系統(tǒng)運行較慢粱快, 有多數(shù)進(jìn)程等待CPU秩彤。 如果r的個數(shù)大于CPU的4倍的話, 則系統(tǒng)面臨CPU短缺或是CPU的速率過低事哭,造成系統(tǒng)運行過慢漫雷。
- System
- in -- 每秒產(chǎn)生的中斷次數(shù)
- cs -- 每秒產(chǎn)生的上下文切換次數(shù)。
這兩個值越大鳍咱,系統(tǒng)進(jìn)程消耗的CPU的時間越大降盹。
- CPU
- us -- 用戶進(jìn)程消耗CPU的時間百分比。長期居高不下谤辜, 就需要優(yōu)化程序了蓄坏。
- sy -- 系統(tǒng)進(jìn)程消耗CPU的時間百分比仅胞。 sy 值高, 并不是良性的表現(xiàn)剑辫。
- wa -- IO等待消耗的CPU時間百分比干旧, 值高時,說明IO等待比較嚴(yán)重妹蔽, 可能由于磁盤大量隨機訪問造成椎眯, 也有可能磁盤出現(xiàn)瓶頸。
id -- CPU 處于空閑時間百分比胳岂。如果持續(xù)為0且出現(xiàn)sy 是us 兩倍狀況编整,則系統(tǒng)面臨CPU資源短缺。當(dāng)發(fā)生此問題的時候請先調(diào)整應(yīng)用程序?qū)PU的占用情況.使得應(yīng)用程序能夠更有效的使用CPU.同時可以考慮增加更多的CPU.
mpstat - (Multiprocessor Statistics)
實施監(jiān)控乳丰, 信息存放在 /proc/stat文件中
mpstat -P ALL 2 10
Linux 2.6.18-92.el5 () 08/30/2012
08:16:34 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
08:16:36 PM all 0.78 0.00 0.26 0.26 0.00 0.26 0.00 98.44 1058.85
08:16:36 PM 0 0.52 0.00 0.52 0.00 0.00 0.52 0.00 98.44 1058.85
08: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 監(jiān)控哪個CPU, 一般使用ALL就可以了
- Internal 間隔的時間
- count 采樣的次數(shù)
輸出參數(shù)意義 - %user -- 用戶態(tài)CPU時間比
- %nice -- 負(fù)進(jìn)程的CPU時間
- %system - 核心態(tài)時間
- iowait -- IO 等待時間
- irq --
- soft
- idle
- intr/s 每秒CPU接收中斷的次數(shù)
sar
$ sar -u 2 10
Linux 2.6.18-92.el5 () 08/30/2012
08:28:36 PM CPU %user %nice %system %iowait %steal %idle
08:28:38 PM all 0.26 0.00 0.00 0.78 0.00 98.97
08:28:40 PM all 0.52 0.00 0.52 0.00 0.00 98.9
** sar [options] [-A] [-o file] t [n]**
- 在命令行中产园,n 和t 兩個參數(shù)組合起來定義采樣間隔和次數(shù)汞斧,t為采樣間隔,是必須有的參數(shù)什燕,n為采樣次數(shù)粘勒,是可選的,默認(rèn)值是1屎即,-o file表示將命令結(jié)果以二進(jìn)制格式存放在文件中庙睡,file 在此處不是關(guān)鍵字,是文件名options 為命令行選項技俐,sar命令的選項很多乘陪,下面只列出常用選項:
-A:所有報告的總和。
-u:CPU利用率
-v:進(jìn)程雕擂、I節(jié)點啡邑、文件和鎖表狀態(tài)。
-d:硬盤使用報告捂刺。
-r:內(nèi)存和交換空間的使用統(tǒng)計谣拣。
-g:串口I/O的情況募寨。
-b:緩沖區(qū)使用情況族展。
-a:文件讀寫情況。
-c:系統(tǒng)調(diào)用情況拔鹰。
-q:報告隊列長度和系統(tǒng)平均負(fù)載
-R:進(jìn)程的活動情況仪缸。
-y:終端設(shè)備活動情況。
-w:系統(tǒng)交換活動列肢。
-x { pid | SELF | ALL }:報告指定進(jìn)程ID的統(tǒng)計信息恰画,SELF關(guān)鍵字是sar進(jìn)程本身的統(tǒng)計宾茂,ALL關(guān)鍵字是所有系統(tǒng)進(jìn)程的統(tǒng)計
%user:CPU處在用戶模式下的時間百分比。
%nice:CPU處在帶NICE值的用戶模式下的時間百分比拴还。
%system:CPU處在系統(tǒng)模式下的時間百分比跨晴。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程序維護(hù)另一個虛擬處理器時片林,虛擬CPU的無意識等待時間百分比端盆。
%idle:CPU空閑時間百分比。
- 在所有的顯示中费封,我們應(yīng)主要注意%iowait和%idle焕妙,%iowait的值過高,表示硬盤存在I/O瓶頸弓摘,%idle值高焚鹊,表示CPU較空閑,如果%idle值高但系統(tǒng)響應(yīng)慢時韧献,有可能是CPU等待分配內(nèi)存末患,此時應(yīng)加大內(nèi)存容量。%idle值如果持續(xù)低于10锤窑,那么系統(tǒng)的CPU處理能力相對較低阻塑,表明系統(tǒng)中最需要解決的資源是CPU。
用sar進(jìn)行運行進(jìn)程隊列長度分析:
#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 準(zhǔn)備運行的進(jìn)程運行隊列果复。
plist-sz 進(jìn)程隊列里的進(jìn)程和線程的數(shù)量
ldavg-1 前一分鐘的系統(tǒng)平均負(fù)載(load average)
ldavg-5 前五分鐘的系統(tǒng)平均負(fù)載(load average)
ldavg-15 前15分鐘的系統(tǒng)平均負(fù)載(load average)
- 順便說一下load avarage的含義load average可以理解為每秒鐘CPU等待運行的進(jìn)程個數(shù).在Linux系統(tǒng)中陈莽,sar -q、uptime虽抄、w走搁、top等命令都會有系統(tǒng)平均負(fù)載load average的輸出,那么什么是系統(tǒng)平均負(fù)載呢迈窟? 系統(tǒng)平均負(fù)載被定義為在特定時間間隔內(nèi)運行隊列中的平均任務(wù)數(shù)私植。如果一個進(jìn)程滿足以下條件則其就會位于運行隊列中:
- 它沒有在等待I/O操作的結(jié)果
- 它沒有主動進(jìn)入等待狀態(tài)(也就是沒有調(diào)用'wait')
- 沒有被停止(例如:等待終止)
uptime
- 20:55:40 up 24 days, 3:06, 1 user, load average: 8.13, 5.90, 4.94
- 命令輸出的最后內(nèi)容表示在過去的1、5车酣、15分鐘內(nèi)運行隊列中的平均進(jìn)程數(shù)量曲稼。
- 一般來說只要每個CPU的當(dāng)前活動進(jìn)程數(shù)不大于3那么系統(tǒng)的性能就是良好的,如果每個CPU的任務(wù)數(shù)大于5湖员,那么就表示這臺機器的性能有嚴(yán)重問題贫悄。對 于上面的例子來說,假設(shè)系統(tǒng)有兩個CPU娘摔,那么其每個CPU的當(dāng)前任務(wù)數(shù)為:8.13/2=4.065窄坦。這表示該系統(tǒng)的性能是可以接受的。