这些指标你真的全都了解吗?
在网上看到一个解释的非常清晰的图,保证你绝对能清晰的明白这些指标的含义
神图在此
解释
我们知道linux运行状态分为用户态和内核态。
横线的上半部分是用户态。下半部分是内核态。
当一个用户程序开始执行,它首先处于用户态,用CPU使用率中的“us”(user的缩写)来表示。在这个状态下,除了系统调用之外的所有代码执行都会计算在“us”的CPU使用时间内。
一旦用户程序执行系统调用,如read()函数来读取文件,它就会从用户态切换到内核态。在内核态中,read()系统调用会首先在文件系统层面进行操作,这一阶段的CPU使用时间会计入“sy”(即system的缩写)。
随后,read()系统调用会向Linux的块设备层发起I/O请求,开始实际的磁盘读取操作。在这个过程中,进程通常会变为不可中断状态,而这段时间会被标记为“wa”(即wait的缩写)。
数据从磁盘读取并返回后,进程在内核态接收这些数据,这仍然属于“sy”的CPU使用时间。之后,进程会从内核态切换回用户态,并在用户态中处理文件数据。这又计算到us的时间内了。
如果在此之后,假设用户进程没有其他任务需要执行就进入休眠状态。同时CPU上也没有其他进程需要运行,那么系统就会进入空闲状态,表示为“id”(idle的缩写)。
当系统接收到一个网络数据包时,网卡会触发一个中断,CPU会响应这个中断并执行中断服务程序。这时,CPU的使用时间会计入“hi”(hardware irq硬件中断的意思)。
对于中断处理过程中耗时较长的任务,Linux提供了软中断(si)机制来处理。
不管是硬中断hi还是软中断si,它们的CPU使用时间都不会计入进程的CPU时间,因为处理这些中断的时间不属于任何特定进程。
此外,还有两种CPU使用时间类型:“nice”(ni)和“steal”(st)。nice值正数表示低优先级进程占用的CPU时间,而steal是在虚拟化环境中使用的。表示被同一宿主机上的其他虚拟机偷走的CPU时间。steal这个词用的很形象啊。
最后总结一下
2024-10-18
2024-10-13
2024-08-25
2024-03-21
微软资讯推荐
win10系统推荐
系统教程推荐