top 命令从哪里获取 CPU 利用率的所有数据?

Sha*_*the 8 linux top

当我运行top命令时,第三行是;

Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.2%id, 0.1%wa, 0.0%hi, 0.0%si, 0.1%st

top 命令从哪里获取这些数据?它是否来自/proc?,如果是,确切的位置是什么?

mpy*_*mpy 5

您正在询问 CPU 使用率的确切位置。这是/proc/stat

$ head -n 3 /proc/stat
cpu  1751981 185577 398478 28868975 69445 32 27028 0 0 0
cpu0 954878 88888 186567 14433502 19750 0 600 0 0 0
cpu1 797103 96688 211911 14435473 49694 31 26428 0 0 0
Run Code Online (Sandbox Code Playgroud)

该格式在内核文档 ( filesystems/proc.txt) 中有解释;我加粗了top缩写:

第一个“cpu”行聚合了所有其他“cpuN”行中的数字。这些数字标识 CPU 执行不同类型工作所花费的时间。时间单位为 USER_HZ(通常为百分之一秒)。各列的含义如下,从左到右:

  • 我们ER:在用户模式下执行正常过程
  • ni ce:在用户模式下执行的 niced 进程
  • 系统:在内核模式下执行的进程
  • id le:摆弄大拇指
  • io wa it:等待 I/O 完成
  • irq: 服务中断 [hard interrupts hi ]
  • softirq:服务 softirqs [软中断si ]
  • ST EAL:非自愿等待
  • 来宾:运行普通来宾
  • guest_nice:运行一个好的客人

您可以从 中获取有关 CPU 的一般信息/proc/cpuinfo,但这与 CPU 使用率无关。