Linux系统上的/proc目录是一种虚拟文件系统,存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件来查看相关系统硬件及当前正在运行进程的信息。/proc下有很多文件,下面我们来了解下stat文件中信息的含义:
1、首先是系统cpu相关信息
[root@cp proc]# cat /proc/stat
cpu 537 0 1192 281602 504 0 25 0 0 0
cpu0 537 0 1192 281602 504 0 25 0 0 0
从第二列开始依次解读,这些值都是系统启动后 CPU 的累加节拍数,它的单位是 USER_HZ,也就是 10 ms(1/100 秒)。
user:用户态花费的cpu时间
nice:用户态在低优先级花费的cpu时间。可以理解为被降低优先级进程花费的cpu时间。深入了解请点击
system:系统态花费的cpu时间
idle:在空闲任务上花费的cpu时间。其实cpu在空闲状态不是什么都不做的,当CPU没有可运行任务的时候,它会循环执行idle task即空闲任务。
iowait:等待I/O花费的cpu时间。但是man文档上表明这个值并不靠谱,具体原因如下:
• CPU不会等待I / 0完成, iowait是任务等待I / 0完成时间。其实也不是说不会等待,
系统只是不会把宝贵的cpu性能白白浪费在耗时的 I/O 等待上,实际上,如果当前系统还
有其他任务需要使用 CPU,Linux 会将等待 I/O 完成的任务暂时挂起,在该CPU上调度
另一个任务。而等待实际上只会发生在没有其它任务需要处理的情况下。
• 在多核CPU上,等待I / 0完成的任务没有在任何CPU上运行,因此很难计算每个CPU的iowait。
• 在某些情况下,此字段中的值可能会减小
irq:硬中断花费的cpu时间
softirq:软中断花费的cpu时间
steal:即系统处在虚拟化环境中,你的虚拟机被其他虚拟机占用的 CPU 时间。
guest:运行虚拟机花费的cpu时间。
guest_nice:运行低优先级虚拟机花费的cpu时间。
2、其它信息
intr 2498795 33 10 0 0 0 0 0 0 1 0 0 0 16 0 0 7631 2 267387 138 16907 ...........后面省略
ctxt 290914285
btime 1596192317
processes 8191
procs_running 1
procs_blocked 0
softirq 2190990 1 1779731 2648 16941 269213 0 982 0 0 121474
intr:第一个为自系统启动以来,发生的所有的中断次数。随后的每个数是某特定编号的中断的总数。而这些数对应什么可以通过查看/proc/interrupts文件对应起来。
ctxt:系统经历的上下文切换次数。
btime:距离1970年1月1日0分0秒过来了多少秒,使用date +%s显示的就是这个值。
processes:自系统启动以来所创建的任务的个数。
procs_running:当前运行的进程数
procs_blocked:等待I/O完成的进程数
softirq:所有CPU的软中断数。第一列是所有软中断的总数,随后的每一列是特定软中断的总数。可以通过/proc/softirqs查看详细信息。