前幾天玩虛擬化,發現虛擬機裏面top命令顯示cpu佔用st類型的很高,之前一般st都是0,於是就好奇,進一步挖掘:
Top命令中CPU佔用分別說明如下(參考man top):
us, user : time running un-niced user processessy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
st指的是當前VM中的cpu cycle被虛擬化偷走的比例。
舉例來說,一個8 vCPU的物理機,開了4個虛擬機,每個指定的CPU資源都是8個vCPU,當這2個虛擬機都滿負荷跑的時候,那麼top命令裏面st就會很高。
比如我這裏的例子,在物理機上面運行8個死循環實例loop程序,KVM虛擬機裏面配置4個vCPU,運行4個loop程序。
物理機top顯示如下,其中KVM佔用300%(表示虛擬機佔用),物理機CPU佔用全部顯示是us(user)。
虛擬機top顯示如下,可以看到us和st分別佔用了不少,us表示運行loop的CPU消耗,st表示被物理機中的實例偷走的CPU佔用。