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

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

当我运行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?如果是,具体位置在哪里?

答案1

您想知道 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

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

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

  • 我们er:在用户模式下执行的正常进程
  • ce:在用户模式下执行的 niced 进程
  • 西stem:在内核模式下执行的进程
  • ID无所事事
  • io它:等待 I/O 完成
  • irq:服务中断[硬中断你好]
  • softirq: 服务软中断 [软中断]
  • 英石eal:非自愿等待
  • guest:运行普通客人
  • guest_nice: 运行一个 niced 的客人

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

答案2

Procfs 可以在 中找到/proc。请阅读以下内容:探索 procfs

Procfs 是 Linux 中安装在 /proc 上的虚拟文件系统,可用于多种用途,包括访问用户空间中的内核信息或进行调试。Linux 对我来说特别的功能之一是可以以文本流的形式访问进程信息。许多 Linux 命令(ps、top、pstree 等)都依赖此文件系统来获取信息。

您可以查看GNU 包top中的源代码。coreutils

相关内容