ESXi虛擬機的 %steal 時間 與 CPU 就緒的關係
概念解釋
%steal
在top輸出中,
steal時間表示虛擬CPU等待真實CPU的時間。
這通常發生在虛擬化環境中,
當虛擬機嘗試在其物理主機上運行CPU密集型任務時,
可能會出現steal時間增加的情況。
這表示虛擬機無法立即獲得所需的CPU資源,
需要等待其他虛擬機或系統進程釋放CPU資源之後才能運行。
如果steal時間持續較高,可能會影響虛擬機的性能
ESXi CPU就緒時間
CPU就緒時間是指ESXi服務器上虛擬機所需的CPU資源可以立即可用的時間。
在ESXi主機上運行的虛擬機可能需要等待獲取CPU資源,這會導致CPU就緒時間增加。
當CPU就緒時間較高時,表示虛擬機無法立即獲得所需的CPU資源,
可能會影響虛擬機的性能。
通過監視CPU就緒時間,可以幫助管理員識別並解決ESXi主機上CPU資源分配和性能問題。
一個簡單的監控
虛擬機內部的情況
06時10分01秒 CPU %user %nice %system %iowait %steal %idle
06時20分01秒 all 0.72 0.00 0.50 0.97 0.00 97.81
06時30分01秒 all 11.24 0.00 1.26 0.63 0.00 86.86
06時40分01秒 all 14.95 0.00 1.51 2.94 0.00 80.60
06時50分01秒 all 9.71 0.00 1.08 0.03 0.00 89.18
07時00分01秒 all 9.59 0.00 1.02 0.00 0.00 89.40
07時10分01秒 all 9.15 0.00 1.19 0.00 0.00 89.66
07時20分01秒 all 9.36 0.04 1.42 0.02 0.00 89.16
07時30分01秒 all 10.01 0.00 1.16 0.00 0.00 88.83
07時40分01秒 all 9.14 0.00 1.20 0.00 0.00 89.66
07時50分01秒 all 9.19 0.00 1.17 0.00 0.00 89.64
平均時間: all 9.31 0.00 1.15 0.46 0.00 89.08
發現問題
根據 vCenter 監控出來的CPU就緒時間
明顯看到有大約 2.5% 的CPU時間其實屬於就緒時間.
但是看 sar 以及 top 都沒有展示出這個時間來
所以感覺通過物理機的監控 能夠看到 %steal 非常不準確.
可能宿主機會故意的減少這個時間來避免服務基線的下降
關於 ESXi CPU就緒比率的計算
要在 vCenter 性能圖表中的 CPU 就緒總量值與
esxtop中顯示的 CPU 就緒百分比值之間進行轉換,必須使用公式。
該公式要求您瞭解性能圖表的默認更新間隔。每個圖表的默認更新間隔如下:
實時:20 秒
過去一天:5 分鐘(300 秒)
過去一週:30 分鐘(1800 秒)
過去一個月:2 小時(7200 秒)
過去一年:1 天(86400 秒)
CPU 就緒百分比
要根據 CPU 就緒總量值計算 CPU 就緒百分比,請使用以下公式:
(CPU 總量值 /(<以秒爲單位的圖表默認更新間隔> * 1000))* 100 = CPU 就緒百分比
例如:
vCenter 中虛擬機的實時統計信息可能具有 1000 的平均 CPU 就緒總量值。
使用相應的值按照公式求出 CPU 就緒百分比。
(1000 /(20 秒 * 1000))* 100 = 5% CPU 就緒
CPU 就緒總量值
要將 CPU 就緒百分比轉換爲 CPU 就緒總量值,請使用以下公式進行反向計算:
(CPU 就緒百分比 / 100)* <圖表默認更新間隔> * 1000 = CPU 總量值
例如:
如果虛擬機的 CPU 就緒百分比爲 5,則其在實時性能圖表上的 CPU 就緒總量值按如下計算:
(5 / 100) * 20 秒 * 1000 = 1000 CPU 就緒
注意:上述計算的結果是每個虛擬 CPU %RDY 時間的總和。
可以通過除以內核數大致估算出單個內核就緒時間。
但是,參考 vCPU 衡量指標本身會更準確。默認情況下,僅實時收集 vCPU 衡量指標。