Linux“top”命令:什么是 us、sy、ni、id、wa、hi、si 和 st(用于 CPU 使用情况)?

Linux“top”命令:什么是 us、sy、ni、id、wa、hi、si 和 st(用于 CPU 使用情况)?

当我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 时间百分比”。

但这实际上意味着什么呢?有人可以更清楚吗?

我列出了所有ussyni等,因为它可以帮助其他人搜索相同的内容。此信息不在手册页中。

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

答案1

hi是处理硬件中断所花费的时间。硬件中断由硬件设备(网卡、键盘控制器、外部定时器、硬件传感器等)在需要向 CPU 发出某些信号(例如数据已到达)时生成。

由于这些情况可能会非常频繁地发生,并且它们在运行时基本上会阻塞当前的 CPU,因此内核硬件中断处理程序被编写得尽可能快速和简单。

如果需要完成长时间或复杂的处理,则可以使用机制调用来推迟这些任务softirqs。它们是独立调度的,可以在任何 CPU 上运行,甚至可以并发运行(对于硬件中断处理程序来说,这些都不是真的)。

关于硬 IRQ 阻塞当前 CPU 的部分以及关于softirqs能够在任何地方运行的部分并不完全正确,可能存在限制,并且某些硬 IRQ 可能会中断其他硬 IRQ。

例如,来自网卡的“数据接收”硬件中断可以简单地将信息“网卡 ethX 需要维修”存储在某处,并安排softirq.这softirq将触发实际的数据包路由。

si代表在这些上花费的时间softirqs

Matthew Wilcox 的一本关于该机制的好读物softirq(也有一些历史)我稍后会做:Softirqs、Tasklet、Bottom Halfes、任务队列、工作队列和计时器(PDF,64k)。

st,“窃取时间”,仅在虚拟化环境中相关。它代表当前虚拟机无法使用真实 CPU 的时间 - 它被虚拟机管理程序从该虚拟机“窃取”(为了运行另一个虚拟机,或者满足其自身的需要)。

CPU时间统计IBM 的文档提供了有关虚拟化环境中的窃取时间和 CPU 核算的更多信息。 (它针对的是 zSeries 类型的硬件,但对于大多数平台来说总体思路是相同的。)

答案2

  • us - 在用户空间中花费的时间
  • sy - 在内核空间中花费的时间
  • ni - 运行好用户进程所花费的时间(用户定义的优先级)
  • id - 空闲操作所花费的时间
  • wa - 等待 IO 外围设备(例如磁盘)所花费的时间
  • hi - 处理硬件中断例程所花费的时间。 (每当外围单元需要 CPU 的注意时,它就会拉一条线,向 CPU 发出信号以为其提供服务)
  • si - 处理软件中断例程所花费的时间。 (一段代码,调用中断例程...)
  • st - 当虚拟机管理程序正在为另一个处理器提供服务时,虚拟 CPU 花费在非自愿等待上的时间(从虚拟机中窃取)

答案3

“st”值可以通过使用 AWS 的 T2.micro EC2 实例来简单解释。

在里面AWS 文档您可以看到每个 VCPU 只能获得 10% 的基准性能。这意味着,如果您有一个进程会消耗大量 cpu 时间,则“st”值将保持在 90 左右,因为您只允许使用 10% 的 VCPU。其他值的总和将保持在 10 左右。

因此,AWS 使用虚拟机管理程序只允许您访问一定量的计算能力。由于您仅使用低层类型的实例,因此它会故意减慢您的速度。

我希望这能让事情变得更容易理解。

相关内容