简析 Linux 的 CPU 时间( 四 )

interrupt time不会显著上升 。
此外,由于部分内核代码是不可重入的(例如,修改寄存器),其执行过程不能打断 。因此这些代码的执行过程中,会屏蔽掉硬中断 。
关中断的操作在内核里随处可见,这反过来会给硬中断带来一些影响 。比如,进程关中断时间太长会导致网络报文无法及时处理,进而引起业务性能抖动 。
而软中断的执行时间如果太长,就会给用户线程带来延迟,如果 softirq time 很大则很可能意味着用户线程会受到影响 。
网络 IO 频繁的应用机器的 softirq time 通常会比较高,可能存在网络连接数过多,或者网络流量过大的情况,
ksoftirqd 的优先级与用户线程是一致的,因此,如果软中断处理函数是在 ksoftirqd 里执行的,那它可能会有一些延迟 。
时间窃取在 GNU top命令中,steal time定义为 “虚拟机管理进程 hypervisor 从 VM 窃取的时间” 。该概念是Xen,KVM,VMware 等社区或者厂商推广到Linux社区的 。
当系统管理进程和 VM 尝试占用同一物理 CPU 核 pCPU 时,会导致 VM 的虚拟 CPU vCPU 可用的处理器时间减少,从而造成 VM 性能下降 。
中虚拟化环境中,可能发生时间窃取的一些情况:

  • 多个高负载 VM 的 vCPU 的运行在同个 pCPU 上(公有云的 CPU 超卖)
  • VM 的 vCPU与线程绑定在了某个特定的 pCPU 上,导致虚拟主机 vhost 进程处理 I/O 时从这些 vCPU上窃取时间
  • 虚拟机监控程序进程(例如监视,日志记录和I/O进程)与 VM 争抢 pCPU
参考资料https://www.cnblogs.com/Anker/p/3269106.htmlhttps://zhuanlan.zhihu.com/p/69554144https://blog.csdn.net/helloanthea/article/details/28877221https://blog.csdn.net/lenomirei/article/details/79274073https://www.jianshu.com/p/673c9e4817a8https://opensource.com/article/20/1/cpu-steal-timehttps://www.cnblogs.com/menkeyi/p/6732020.htmlhttps://blog.csdn.net/zxh2075/article/details/78262568https://kb.cnblogs.com/page/207897/https://www.cnblogs.com/charlesblc/p/6255806.htmlhttp://www.wowotech.net/linux_kenrel/soft-irq.html

经验总结扩展阅读