Linux
虛擬機上的 vmstat 和大值
您好,我
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 非常奇怪)。用零替換那些巨大的值會給出合理的結果。我的問題是為什麼它給出不正確的值並且可以以某種方式修復?
我懷疑機器的虛擬化在這裡是一個問題。
通常的嫌疑人是:
vmstat
可能無法處理計數器的包裝,計數器不應頻繁包裝,並且它應該在使用者/系統/空閒中比 iowait 發生更多(對於正常負載)vmstat
解析失敗/proc/stat
,這可能直接或間接歸因於 64 位數據類型,由於寬/缺失/合併欄位而導致溢出或錯誤解析- 時間扭曲正在扭曲計算
核心將 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/vestat
:http:/ /wiki.openvz.org/Vestat