學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > Linux系統(tǒng)中vmstat命令使用詳解

Linux系統(tǒng)中vmstat命令使用詳解

時(shí)間: 佳洲1085 分享

Linux系統(tǒng)中vmstat命令使用詳解

  Linux系統(tǒng)中vmstat命令是一個(gè)監(jiān)控工具。下面由學(xué)習(xí)啦小編為大家整理了linux系統(tǒng)中vmstat命令使用詳解,希望對(duì)大家有幫助!

  Linux系統(tǒng)中vmstat命令使用詳解

  vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫(xiě),可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)控。

  它能夠?qū)ο到y(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),無(wú)法對(duì)某個(gè)進(jìn)程進(jìn)行深入分析。vmstat 工具提供了一種低開(kāi)銷的系統(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:        顯示磁盤(pán)相關(guān)統(tǒng)計(jì)信息。

  2) -a:       顯示活躍和非活躍內(nèi)存

  3) -f:        顯示從系統(tǒng)啟動(dòng)至今的fork數(shù)量。

  4) -p:       顯示指定磁盤(pán)分區(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 ~]$

  字段說(shuō)明:

  1.Procs(進(jìn)程)

  r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量,這個(gè)值也可以判斷是否需要增加CPU。(長(zhǎng)期大于1)

  b: 等待IO的進(jìn)程數(shù)量。

  2.Memory(內(nèi)存)

  swpd: 使用虛擬內(nèi)存大小,如果swpd的值不為0,但是SI,SO的值長(zhǎng)期為0,這種情況不會(huì)影響系統(tǒng)性能。

  free: 空閑物理內(nèi)存大小。

  buff: 用作緩沖的內(nèi)存大小。

  cache: 用作緩存的內(nèi)存大小,如果cache的值大的時(shí)候,說(shuō)明cache處的文件數(shù)多,如果頻繁訪問(wèn)到的文件都能被cache處,那么磁盤(pán)的讀IO bi會(huì)非常小。

  3.Swap

  si: 每秒從交換區(qū)寫(xiě)到內(nèi)存的大小,由磁盤(pán)調(diào)入內(nèi)存。

  so: 每秒寫(xiě)入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤(pán)。

  注意:

  內(nèi)存夠用的時(shí)候,這2個(gè)值都是0,如果這2個(gè)值長(zhǎng)期大于0時(shí),系統(tǒng)性能會(huì)受到影響,磁盤(pán)IO和CPU資源都會(huì)被消耗。有些朋友看到空閑內(nèi)存(free)很少的或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了,不能光看這一點(diǎn),還要結(jié)合si和so,如果free很少,但是si和so也很少(大多時(shí)候是0),那么不用擔(dān)心,系統(tǒng)性能這時(shí)不會(huì)受到影響的。

  4.IO(現(xiàn)在的Linux版本塊的大小為1kb)

  bi: 每秒讀取的塊數(shù)

  bo: 每秒寫(xiě)入的塊數(shù)

  注意:

  隨機(jī)磁盤(pán)讀寫(xiě)的時(shí)候,這2個(gè)值越大(如超出1024k),能看到CPU在IO等待的值也會(huì)越大。

  5.system(系統(tǒng))

  in: 每秒中斷數(shù),包括時(shí)鐘中斷。

  cs: 每秒上下文切換數(shù)。

  注意:

  上面2個(gè)值越大,會(huì)看到由內(nèi)核消耗的CPU時(shí)間會(huì)越大。

  6.CPU(以百分比表示)

  us: 用戶進(jìn)程執(zhí)行時(shí)間百分比(user time) us的值比較高時(shí),說(shuō)明用戶進(jìn)程消耗的CPU時(shí)間多,但是如果長(zhǎng)期超50%的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速。

  sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時(shí)間百分比(system time) sy的值高時(shí),說(shuō)明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性表現(xiàn),我們應(yīng)該檢查原因。

  wa: IO等待時(shí)間百分比 wa的值高時(shí),說(shuō)明IO等待比較嚴(yán)重,這可能由于磁盤(pán)大量作隨機(jī)訪問(wèn)造成,也有可能磁盤(pán)出現(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 ~]$

  補(bǔ)充:虛擬內(nèi)存原理

  在系統(tǒng)中運(yùn)行的每個(gè)進(jìn)程都需要使用到內(nèi)存,但不是每個(gè)進(jìn)程都需要每時(shí)每刻使用系統(tǒng)分配的內(nèi)存空間。當(dāng)系統(tǒng)運(yùn)行所需內(nèi)存超過(guò)實(shí)際的物理內(nèi)存,內(nèi)核會(huì)釋放某些進(jìn)程所占用但未使用的部分或所有物理內(nèi)存,將這部分資料存儲(chǔ)在磁盤(pán)上直到進(jìn)程下一次調(diào)用,并將釋放出的內(nèi)存提供給有需要的進(jìn)程使用。

  在Linux內(nèi)存管理中,主要是通過(guò)“調(diào)頁(yè)P(yáng)aging”和“交換Swapping”來(lái)完成上述的內(nèi)存調(diào)度。調(diào)頁(yè)算法是將內(nèi)存中最近不常使用的頁(yè)面換到磁盤(pán)上,把活動(dòng)頁(yè)面保留在內(nèi)存中供進(jìn)程使用。交換技術(shù)是將整個(gè)進(jìn)程,而不是部分頁(yè)面,全部交換到磁盤(pán)上。

  分頁(yè)(Page)寫(xiě)入磁盤(pán)的過(guò)程被稱作Page-Out,分頁(yè)(Page)從磁盤(pán)重新回到內(nèi)存的過(guò)程被稱作Page-In。當(dāng)內(nèi)核需要一個(gè)分頁(yè)時(shí),但發(fā)現(xiàn)此分頁(yè)不在物理內(nèi)存中(因?yàn)橐呀?jīng)被Page-Out了),此時(shí)就發(fā)生了分頁(yè)錯(cuò)誤(Page Fault)。

  當(dāng)系統(tǒng)內(nèi)核發(fā)現(xiàn)可運(yùn)行內(nèi)存變少時(shí),就會(huì)通過(guò)Page-Out來(lái)釋放一部分物理內(nèi)存。經(jīng)管Page-Out不是經(jīng)常發(fā)生,但是如果Page-out頻繁不斷的發(fā)生,直到當(dāng)內(nèi)核管理分頁(yè)的時(shí)間超過(guò)運(yùn)行程式的時(shí)間時(shí),系統(tǒng)效能會(huì)急劇下降。這時(shí)的系統(tǒng)已經(jīng)運(yùn)行非常慢或進(jìn)入暫停狀態(tài),這種狀態(tài)亦被稱作thrashing(顛簸)

3645576