程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Linux vmstat敕令實戰具體解析

Linux vmstat敕令實戰具體解析

編輯:關於C++

Linux vmstat敕令實戰具體解析。本站提示廣大學習愛好者:(Linux vmstat敕令實戰具體解析)文章只能為提供參考,不一定能成為您想要的結果。以下是Linux vmstat敕令實戰具體解析正文


vmstat敕令是最多見的Linux/Unix監控對象,可以展示給准時間距離的辦事器的狀況值,包含辦事器的CPU應用率,內存應用,虛擬內存交流情形,IO讀寫情形。這個敕令是我檢查Linux/Unix最愛好的敕令,一個是Linux/Unix都支撐,二是比擬top,我可以看到全部機械的CPU,內存,IO的應用情形,而不是單單看到各個過程的CPU應用率和內存應用率(應用場景紛歧樣)。

普通vmstat對象的應用是經由過程兩個數字參數來完成的,第一個參數是采樣的時光距離數,單元是秒,第二個參數是采樣的次數,如:

root@ubuntu:~# vmstat 2 1procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 1  0      0 3498472 315836 3819540    0    0     0     1    2    0  0  0 100  0

2表現每一個兩秒收集一次辦事器狀況,1表現只收集一次。

現實上,在運用進程中,我們會在一段時光內一向監控,不想監控直接停止vmstat就好了,例如:

root@ubuntu:~# vmstat 2 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0      0 3499840 315836 3819660    0    0     0     1    2    0  0  0 100  0
 0      0 3499584 315836 3819660    0    0     0     0   88  158  0  0 100  0
 0      0 3499708 315836 3819660    0    0     0     2   86  162  0  0 100  0
 0      0 3499708 315836 3819660    0    0     0    10   81  151  0  0 100  0
 0      0 3499732 315836 3819660    0    0     0     2   83  154  0  0 100  0

這表現vmstat每2秒收集數據,一向收集,直到我停止法式,這裡收集了5次數據我就停止了法式。

好了,敕令引見終了,如今開端實戰講授每一個參數的意思。

r 表現運轉隊列(就是說若干個過程真的分派到CPU),我測試的辦事器今朝CPU比擬余暇,沒甚麼法式在跑,當這個值跨越了CPU數量,就會湧現CPU瓶頸了。這個也和top的負載有關系,普通負載跨越了3就比擬高,跨越了5就高,跨越了10就不正常了,辦事器的狀況很風險。top的負載相似每秒的運轉隊列。假如運轉隊列過年夜,表現你的CPU很忙碌,普通會形成CPU應用率很高。

b 表現壅塞的過程,這個不多說,過程壅塞,年夜家懂的。

swpd 虛擬內存已應用的年夜小,假如年夜於0,表現你的機械物理內存缺乏了,假如不是法式內存洩漏的緣由,那末你該進級內存了或許把耗內存的義務遷徙到其他機械。

free   余暇的物理內存的年夜小,我的機械內存總共8G,殘剩3415M。

buff   Linux/Unix體系是用來存儲,目次外面有甚麼內容,權限等的緩存,我本機年夜概占用300多M

cache cache直接用來記憶我們翻開的文件,給文件做緩沖,我本機年夜概占用300多M(這裡是Linux/Unix的聰慧的地方,把余暇的物理內存的一部門拿來做文件和目次的緩存,是為了進步 法式履行的機能,當法式應用內存時,buffer/cached會很快地被應用。)

si  每秒從磁盤讀入虛擬內存的年夜小,假如這個值年夜於0,表現物理內存不敷用或許內存洩漏了,要查找耗內存過程處理失落。我的機械內存富余,一切正常。

so  每秒虛擬內存寫入磁盤的年夜小,假如這個值年夜於0,同上。

bi  塊裝備每秒吸收的塊數目,這裡的塊裝備是指體系上一切的磁盤和其他塊裝備,默許塊年夜小是1024byte,我本機上沒甚麼IO操作,所以一向是0,然則我曾在處置拷貝年夜量數據(2-3T)的機械上看過可以到達140000/s,磁盤寫入速度差不多140M每秒

bo 塊裝備每秒發送的塊數目,例如我們讀取文件,bo就要年夜於0。bi和bo普通都要接近0,否則就是IO過於頻仍,須要調劑。

in 每秒CPU的中止次數,包含時光中止

cs 每秒高低文切換次數,例如我們挪用體系函數,就要停止高低文切換,線程的切換,也要過程高低文切換,這個值要越小越好,太年夜了,要斟酌調低線程或許過程的數量,例如在apache和nginx這類web辦事器中,我們普通做機能測試時會停止幾千並發乃至幾萬並發的測試,選擇web辦事器的過程可以由過程或許線程的峰值一向下調,壓測,直到cs到一個比擬小的值,這個過程和線程數就是比擬適合的值了。體系挪用也是,每次挪用體系函數,我們的代碼就會進入內核空間,招致高低文切換,這個是很耗資本,也要盡可能防止頻仍挪用體系函數。高低文切換次數過量表現你的CPU年夜部門糟蹋在高低文切換,招致CPU干正派事的時光少了,CPU沒有充足應用,是弗成取的。

us 用戶CPU時光,我已經在一個做加密解密很頻仍的辦事器上,可以看到us接近100,r運轉隊列到達80(機械在做壓力測試,機能表示欠安)。

sy 體系CPU時光,假如太高,表現體系挪用時光長,例如是IO操作頻仍。

id  余暇 CPU時光,普通來講,id + us + sy = 100,普通我以為id是余暇CPU應用率,us是用戶CPU應用率,sy是體系CPU應用率。

wt 期待IO CPU時光。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved