it-swarm.cn

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

当我在Linux中发出top时,得到的结果与此类似:

Screenshot of top

其中的一行具有这样表示的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
206
its_me

hi是处理硬件中断所花费的时间。当硬件设备(网卡,键盘控制器,外部计时器,硬件传感器等)需要向CPU发送信号时(例如,数据已到达),就会产生硬件中断。

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

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

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

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

si表示花费在这些softirqs中的时间。

Matthew Wilcox的 关于softirq机制(也有一些历史),很不错,我稍后再做:Softirqs,Tasklet,下半部分,任务队列,工作队列和计时器 (PDF,64k)。

st,“窃取时间”,仅与虚拟化环境相关。它表示真正的CPU对当前虚拟机不可用的时间-它是由虚拟机管理程序从那VM)被“窃取”的(运行另一个VM或满足其自身需求)。

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

96
Mat
  • 我们-在用户空间上花费的时间
  • sy-在内核空间上花费的时间
  • ni-运行良好的用户进程所花费的时间(用户定义的优先级)
  • id-空闲操作所花费的时间
  • wa-等待IO外设(例如磁盘)所花费的时间
  • 嗨-处理硬件中断例程所花费的时间。 (只要外围设备要引起CPU的注意,它就会立即拉一条线,以指示CPU对其进行维修)
  • si-处理软件中断例程所花费的时间。 (一段代码,调用一个中断例程...)
  • st-虚拟机管理程序为另一个处理器(从虚拟机中窃取)服务时,虚拟cpu进行非自愿等待所花费的时间
20
Simon Rigét

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

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

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

我希望这会使事情更容易理解。

2
draufunddran