ESXi虛擬機器的 %steal 時間 與 CPU 就緒的關係

济南小老虎發表於2024-04-29

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資源分配和效能問題。

一個簡單的監控

image


虛擬機器內部的情況

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 衡量指標。

相關文章