CPU各个时间片断的含义

CPU各个时间片断的含义

Content #

我们对照 Top 运行界面,"%Cpu(s)“开头的这一行,你会看到一串数值,也就是 “0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st”,那么这里的每一项值都是什么含义呢?

下面这张图里最长的带箭头横轴,我们可以把它看成一个时间轴。同时,它的上半部分代表 Linux 用户态(User space),下半部分代表内核态(Kernel space)。这里为了方便你理解,我们先假设只有一个 CPU 吧。

  1. “us"框,“us"是"user"的缩写,代表 Linux 的用户态 CPU Usage。
  2. “sy"是 “system"的缩写,代表内核态 CPU 使用。
  3. “wa"是"iowait"的缩写,代表等待 I/O 的时间,这里的 I/O 是指 Disk I/O。
  4. 当磁盘返回数据时,进程在内核态拿到数据,这里仍旧是内核态的 CPU 使用中的"sy”,也就是图中的第四个框。
  5. 进程再从内核态切换回用户态,在用户态得到文件数据,这里进程又回到用户态的 CPU 使用,“us”,对应图中第五个框。
  6. 这时在这个 CPU 上也没有其他需要运行的进程了,那么系统就会进入"id"这个步骤,也就是第六个框。“id"是"idle"的缩写,代表系统处于空闲状态。
  7. 如果这时这台机器在网络收到一个网络数据包,网卡就会发出一个中断(interrupt)。CPU 会响应中断,然后进入中断服务程序。这时,CPU 就会进入"hi”,也就是第七个框。“hi"是"hardware irq"的缩写,代表 CPU 处理硬中断的开销。
  8. 从网卡收到数据包的大部分工作,都是通过软中断来处理的。CPU 就会进入到第八个框,“si”。这里"si"是"softirq"的缩写,代表 CPU 处理软中断的开销。

Viewpoints #

From #

05|容器CPU(1):怎么限制容器的CPU使用?