Top Cpu指标简介
这是一张top的截图:
里面在第三行描述了CPU相关信息,分别是:
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
这里分别介绍下:
指标 | 全拼 | 含义 |
---|---|---|
us | user | 用户态CPU使用时间占总CPU使用时间的百分比 |
sy | system | 内核态CPU使用时间占总CPU使用时间的百分比 |
ni | nice | 改变过优先级的进程占总CPU使用时间的百分比 |
id | idle | 空闲CPU使用时间占总CPU使用时间的百分比 |
wa | IOWait | 等待IO时间占总CPU使用时间的百分比 |
hi | hardware interrupt | 硬件中断消耗的CPU时间占总CPU使用时间的百分比 |
si | soft interrupt | 软件中断消耗的CPU时间占总CPU使用时间的百分比 |
st | steal | 表示如果这台物理机有多个虚拟机,从其他虚拟机占用我们虚拟机CPU时间占总CPU使用时间的百分比 |
那么CPU使用率是怎么算的呢:
CPU使用率=1-(CPU空闲时间/CPU总时间)
Top Cpu指标来源
Top Cpu指标是来自/proc/stat
里的内容,如下:
[zhaozheng@test ~]$ cat /proc/stat
cpu 2324030555 73206 237764507 90266964938 1188157 0 4091713 0 0 0
cpu0 60612825 1617 5895871 2244759487 350993 0 1962880 0 0 0
cpu1 58713976 2044 6156980 2253262197 39625 0 653733 0 0 0
上述表格有10列,分别是:
name user nice system idle iowait irrq softirq steal guest guest_nice
跟在Top指标中多出来了:guest guest_nice
这两项也是仅跟虚拟机相关。
进程占用CPU情况
在top命令中可以看到每个进程所占CPU时间的百分比,top默认是CPU排序的,所以第一行的进程就是占用CPU最多的进程。那么如果想看进程的CPU详细信息怎么办呢。
进程CPU占用情况
因为CPU调度的基本单位是线程,所以理论上是可以看到进程中每个线程所占CPU的百分比的,在命令行中键入top -Hp 进程id
即可看到进程中每个线程占用CPU时间的百分比。那top的这些数据是哪里来的呢。
数据cat /proc/进程id/stat
就又能拿到一个表格,这个表格就是当前进程CPU的详细信息,总共有50多列,这里就不一一介绍了。我抄了别人的一篇文章有兴趣可以看下:https://blog.csdn.net/zyboy2000/article/details/50456764