当我运行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