Linux系統(tǒng)vmstat命令怎么用
Linux系統(tǒng)中,當(dāng)我們需要對系統(tǒng)內(nèi)存,cpu等進(jìn)程進(jìn)行監(jiān)控時(shí)候,我們可以利用vmstat命令實(shí)現(xiàn),具體怎么操作呢。下面由學(xué)習(xí)啦小編為大家整理了linux系統(tǒng)中vmstat命令使用詳解,希望對大家有幫助!
Linux系統(tǒng)中vmstat命令使用詳解
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫,可對操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)控。
它能夠?qū)ο到y(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),無法對某個(gè)進(jìn)程進(jìn)行深入分析。vmstat 工具提供了一種低開銷的系統(tǒng)性能觀察方式。
(1)用法
用法: vmstat [選項(xiàng)參數(shù)]
或 vmstat [選項(xiàng)參數(shù)] [數(shù)字] [數(shù)字]
(2)功能:
功能: 報(bào)告虛擬內(nèi)存的統(tǒng)計(jì)信息,關(guān)于進(jìn)程、內(nèi)存、I/O等系統(tǒng)整體運(yùn)行狀態(tài)。
(3)選項(xiàng)參數(shù):
1) -d: 顯示磁盤相關(guān)統(tǒng)計(jì)信息。
2) -a: 顯示活躍和非活躍內(nèi)存
3) -f: 顯示從系統(tǒng)啟動(dòng)至今的fork數(shù)量。
4) -p: 顯示指定磁盤分區(qū)統(tǒng)計(jì)信息
5) -s: 顯示內(nèi)存相關(guān)統(tǒng)計(jì)信息及多種系統(tǒng)活動(dòng)數(shù)量。
6) -m: 顯示slabinfo
Linux系統(tǒng)中vmstat命令詳解實(shí)例
1)[sunjimeng@localhost ~]$ vmstat 顯示虛擬內(nèi)存使用情況
[sunjimeng@localhost ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
5 0 0 858580 752 506988 0 0 7 1 81 120 2 1 97 0 0
[sunjimeng@localhost ~]$
字段說明:
1.Procs(進(jìn)程)
r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量,這個(gè)值也可以判斷是否需要增加CPU。(長期大于1)
b: 等待IO的進(jìn)程數(shù)量。
2.Memory(內(nèi)存)
swpd: 使用虛擬內(nèi)存大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統(tǒng)性能。
free: 空閑物理內(nèi)存大小。
buff: 用作緩沖的內(nèi)存大小。
cache: 用作緩存的內(nèi)存大小,如果cache的值大的時(shí)候,說明cache處的文件數(shù)多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會非常小。
3.Swap
si: 每秒從交換區(qū)寫到內(nèi)存的大小,由磁盤調(diào)入內(nèi)存。
so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤。
注意:
內(nèi)存夠用的時(shí)候,這2個(gè)值都是0,如果這2個(gè)值長期大于0時(shí),系統(tǒng)性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑內(nèi)存(free)很少的或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了,不能光看這一點(diǎn),還要結(jié)合si和so,如果free很少,但是si和so也很少(大多時(shí)候是0),那么不用擔(dān)心,系統(tǒng)性能這時(shí)不會受到影響的。
4.IO(現(xiàn)在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數(shù)
bo: 每秒寫入的塊數(shù)
注意:
隨機(jī)磁盤讀寫的時(shí)候,這2個(gè)值越大(如超出1024k),能看到CPU在IO等待的值也會越大。
5.system(系統(tǒng))
in: 每秒中斷數(shù),包括時(shí)鐘中斷。
cs: 每秒上下文切換數(shù)。
注意:
上面2個(gè)值越大,會看到由內(nèi)核消耗的CPU時(shí)間會越大。
6.CPU(以百分比表示)
us: 用戶進(jìn)程執(zhí)行時(shí)間百分比(user time) us的值比較高時(shí),說明用戶進(jìn)程消耗的CPU時(shí)間多,但是如果長期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速。
sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時(shí)間百分比(system time) sy的值高時(shí),說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn),我們應(yīng)該檢查原因。
wa: IO等待時(shí)間百分比 wa的值高時(shí),說明IO等待比較嚴(yán)重,這可能由于磁盤大量作隨機(jī)訪問造成,也有可能磁盤出現(xiàn)瓶頸(塊操作)。
id: 空閑時(shí)間百分比
2)[sunjimeng@localhost ~]$ vmstat 2 每二秒顯示一次系統(tǒng)內(nèi)存的統(tǒng)計(jì)信息
[sunjimeng@localhost ~]$ vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 853508 752 507144 0 0 7 1 80 119 2 1 97 0 0
0 0 0 853508 752 507144 0 0 0 0 376 466 3 2 96 0 0......
3)[sunjimeng@localhost ~]$ vmstat 2 5 每二秒顯示一次系統(tǒng)內(nèi)存的統(tǒng)計(jì)信息,總共5次
[sunjimeng@localhost ~]$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 853888 752 507152 0 0 7 1 81 119 2 1 97 0 0
0 0 0 853888 752 507152 0 0 0 0 609 763 5 2 92 0 0
1 0 0 853888 752 507152 0 0 0 0 582 626 5 2 93 0 0
0 0 0 853888 752 507152 0 0 0 0 399 464 3 2 95 0 0
0 0 0 853888 752 507152 0 0 0 0 263 365 3 1 96 0 0
[sunjimeng@localhost ~]$
常見問題處理
如果r經(jīng)常大于4,且id經(jīng)常少于40,表示cpu的負(fù)荷很重。
如果pi,po長期不等于0,表示內(nèi)存不足。
如果disk經(jīng)常不等于0,且在b中的隊(duì)列大于3,表示io性能不好。
1.)如果在processes中運(yùn)行的序列(process r)是連續(xù)的大于在系統(tǒng)中的CPU的個(gè)數(shù)表示系統(tǒng)現(xiàn)在運(yùn)行比較慢,有多數(shù)的進(jìn)程等待CPU。
2.)如果r的輸出數(shù)大于系統(tǒng)中可用CPU個(gè)數(shù)的4倍的話,則系統(tǒng)面臨著CPU短缺的問題,或者是CPU的速率過低,系統(tǒng)中有多數(shù)的進(jìn)程在等待CPU,造成系統(tǒng)中進(jìn)程運(yùn)行過慢。
3.)如果空閑時(shí)間(cpu id)持續(xù)為0并且系統(tǒng)時(shí)間(cpu sy)是用戶時(shí)間的兩倍(cpu us)系統(tǒng)則面臨著CPU資源的短缺。
解決辦法:
當(dāng)發(fā)生以上問題的時(shí)候請先調(diào)整應(yīng)用程序?qū)PU的占用情況.使得應(yīng)用程序能夠更有效的使用CPU.同時(shí)可以考慮增加更多的CPU. 關(guān)于CPU的使用情況還可以結(jié)合mpstat, ps aux top prstat –a等等一些相應(yīng)的命令來綜合考慮關(guān)于具體的CPU的使用情況,和那些進(jìn)程在占用大量的CPU時(shí)間.一般情況下,應(yīng)用程序的問題會比較大一些.比如一些sql語句不合理等等都會造成這樣的現(xiàn)象.
內(nèi)存問題現(xiàn)象:
內(nèi)存的瓶頸是由scan rate (sr)來決定的.scan rate是通過每秒的始終算法來進(jìn)行頁掃描的.如果scan rate(sr)連續(xù)的大于每秒200頁則表示可能存在內(nèi)存缺陷.同樣的如果page項(xiàng)中的pi和po這兩欄表示每秒頁面的調(diào)入的頁數(shù)和每秒調(diào)出的頁數(shù).如果該值經(jīng)常為非零值,也有可能存在內(nèi)存的瓶頸,當(dāng)然,如果個(gè)別的時(shí)候不為0的話,屬于正常的頁面調(diào)度這個(gè)是虛擬內(nèi)存的主要原理.