Linux

Linux ’top’ 命令:什麼是 us、sy、ni、id、wa、hi、si 和 st(用於 CPU 使用)?

  • July 19, 2019

當我top在 Linux 中發佈時,我得到類似於以下的結果:

頂部截圖

其中一行的 CPU 使用情況資訊如下所示:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

雖然我知道它們中的每一個的定義(遠在下面),但我不明白這些任務的確切含義。

  • hi- 服務硬體中斷是什麼意思?
  • si- 服務軟體中斷是什麼意思?
  • st- 他們說這是“虛擬 CPU 非自願等待的 CPU 時間,而管理程序正在為另一個處理器提供服務(或)從虛擬機竊取的 CPU 時間百分比”。

但它實際上是什麼意思?有人可以更清楚嗎?

我列出了所有us, sy,ni等,因為它可以幫助其他人搜尋相同的內容。此資訊不在手冊頁中。

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine

hi是處理硬體中斷所花費的時間。硬體中斷是由硬體設備(網卡、鍵盤控制器、外部計時器、硬體感測器等)在需要向 CPU 發出信號(例如,數據已到達)時生成的。

由於這些可能非常頻繁地發生,並且由於它們在執行時實際上會阻塞目前的 CPU,因此核心硬體中斷處理程序被編寫得盡可能快速和簡單。

如果需要完成長時間或複雜的處理,則使用機制呼叫延遲這些任務softirqs。這些是獨立調度的,可以在任何 CPU 上執行,甚至可以同時執行(硬體中斷處理程序都不是這樣)。

關於硬 IRQ 阻塞目前 CPU 的部分,以及關於softirqs能夠在任何地方執行的部分並不完全正確,可能存在限制,一些硬 IRQ 可以中斷其他的。

例如,來自網卡的“數據接收”硬體中斷可以簡單地將資訊“卡 ethX 需要服務”儲存在某處並安排softirq. 這softirq將是觸發實際數據包路由的東西。

si代表在這些中花費的時間softirqs

Matthew Wilcox 的I’ll Do It later: Softirqs, Tasklets, Bottom Halves, Task Queues, Work Queues and Timers (PDF, 64k)是關於機制的好讀物softirq(也有一點歷史)。

st,“竊取時間”,僅與虛擬化環境相關。它表示目前虛擬機無法使用真正的 CPU 的時間——它被虛擬機管理程序從該虛擬機“偷走”(執行另一個虛擬機,或者為了自己的需要)。

IBM的CPU 時間核算文件包含有關竊取時間和虛擬化環境中的 CPU 核算的更多資訊。(它針對的是 zSeries 類型的硬體,但總體構想對於大多數平台都是相同的。)

引用自:https://unix.stackexchange.com/questions/18918