Linux

虛擬機上的 vmstat 和大值

  • February 4, 2013

您好,我vmstat在一些測試中用來跟踪機器性能(jmeter)。這是在安裝了許多其他虛擬機(大約 20 個虛擬機)的大型機器上執行的虛擬機。

我正在使用以下軟體版本:

$ vmstat -V
procps version 3.2.7  

$ uname -a
Linux cmbpm 2.6.32-042stab044.11 #1 SMP Wed Dec 14 16:02:00 MSK 2011 x86_64 x86_64 x86_64 GNU/Linux

問題在於我得到的結果,這是一個範例(我已將空格轉換為單個選項卡以便於數據處理):

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   1506720 6152768 0   824836  1   0   3   2   0   0   0   0   94  6   0
0  0   1506720 6170744 0   804392  60  64  14  16  0   122651  0   0   98  2   0
0  1   1506720 6168328 0   801744  145 8   300 52  0   117308  0   0   0   100 0
0  0   1505688 6173360 0   806852  233 13  1135    478 0   109158  1   0   387 1171860851  0
0  0   1505172 6168988 0   810140  380 0   0   513 0   117875  0   0   97  3   0

問題是有些值比它們應該的大得多。CPU 時間(部分)的百分比值-----cpu------有時會大大超過 100%。尤其是列wa(等待數據)有問題(值 1171860851 非常奇怪)。用零替換那些巨大的值會給出合理的結果。

我的問題是為什麼它給出不正確的值並且可以以某種方式修復?

我懷疑機器的虛擬化在這裡是一個問題。

通常的嫌疑人是:

  1. vmstat可能無法處理計數器的包裝,計數器不應頻繁包裝,並且它應該在使用者/系統/空閒中比 iowait 發生更多(對於正常負載)
  2. vmstat解析失敗/proc/stat,這可能直接或間接歸因於 64 位數據類型,由於寬/缺失/合併欄位而導致溢出或錯誤解析
  3. 時間扭曲正在扭曲計算

核心將 user/nice/system/etc 作為計數器(通常為 100/CPU)跟踪,vmstat其他程序根據時間增量計算平均值,例如vmstat 5. 準確的時間在虛擬環境中可能是一個問題,儘管沒有描述的特定症狀(vmstat使用相同的時間戳計算這些數字)

檢查 procps/libproc 後,它讀取/proc/stat為 long-long 整數,並使用雙精度浮點數進行計算——我看不出有任何問題。

你正在執行一個 OpenVZ 核心,你應該檢查它/proc/stats的格式是否正確,它可能是這個錯誤:https ://bugzilla.openvz.org/show_bug.cgi?id=1376 你可能有更好的解析/proc/vz/vestathttp:/ /wiki.openvz.org/Vestat

引用自:https://unix.stackexchange.com/questions/63637