細心的小伙伴可能會發現GNU top命令有個 st 的性能指標,通常這個指標都為0或者比較低我們很少關注。但它確實是一個值得我們關注的指標。st 指標一般出現在虛擬機上,物理機和版本比較老的Linux 系統不顯示該指標。下面我們就簡單了解一下。
怎么查看CPU Steal Time?
st即 Steal Time, top
命令 可以很容易地檢測guest VM 實例上的 CPU Steal Time。竊取時間顯示在第 3 行末尾的 top 輸出中,其中存在%Cpu(s),如下面的截圖所示(它是末尾的值,標記為st。)這個示例中我把兩個核心的CPU Stell Time 百分比都顯示出來了,它們都為 0 ,top
默認只顯示綜合指標。
監控系統上CPU Steal Time
CPU Steal Time 的定義
From ibm :
Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.
From opensource.com :
CPU steal time is defined in the [GNU **top**](https://en.wikipedia.org/wiki/Top_(software)) command as "time stolen from [a] VM by the hypervisor." CPU steal time occurs when a hypervisor process and a guest instance are trying to utilize the same hypervisor physical core (pCPU) at the same time. This results in less processor time available to the guest's virtual CPU (vCPU) and performance degradation for the guest.
通俗來講,我們的虛擬機(VM)會與虛擬環境的宿主機上的多個虛擬機實例共享物理物理CPU資源,也就是共享CPU時間切片。如果多個虛機競爭物理CPU資源,則某些 guest 主機可能在某段時間內需要等待 pCPU 作出響應,這個等待的時間就是 Steal time。
在當今的虛擬化環境(如公有雲和私有雲)中,guest 實例可能會在以下幾種情況下體驗性能 CPU 竊取時間:
- 虛擬機管理程序(hypervisor)的超額分配和具有高 CPU 利用率的多個guest VM 的 vCPU 正在相同的 pCPU 上運行。
- guest vCPU 及其仿真器線程被固定到同一個 pCPU,導致 vhost 進程在處理 I/O 時從guestvCPU 竊取 CPU 時間。
- 虛擬機監控程序進程(如監控、日志記錄和 I/O 進程)同時使用一個 pCPU,而guest VM vCPU 也在使用該 pCPU。
如何判斷 st
如果你的應用部署虛擬環境, steal time就是你想要關注的性能指標之一。 如果這個指標的數值很高,那么說明機器狀態非常糟糕。大體判斷標准:
CPU竊取時間低:如果您的 CPU 竊取時間低於 10%,則無需擔心。您的應用程序應該可以順利運行。
CPU竊取時間相對較高:您的 CPU 竊取時間遠遠超過 10%,持續約 30 分鍾。當這種情況發生:
1、遷移虛擬機到另一台物理機器上面。
2、如果steal time維持在很高的數值, 那么增加CPU資源配額。
3、對性能要求高的應用可購買獨享型雲主機。
更多信息
https://opensource.com/article/20/1/cpu-steal-time
https://blog.appsignal.com/2021/09/15/cpu-steal-time-a-crucial-metric-for-cloud-servers-and-vms.html