我想编写一个 shellscript,它可以在每个核心的基础上读取当前的 CPU 利用率。是否可以从/sys
Linux (CentOS 8)的目录中读取它?我发现/sys/bus/cpu/drivers/processor/cpu0
这确实给了我相当多的信息(比如当前频率),但我还没有弄清楚如何读取 CPU 利用率。
换句话说:有没有一个文件可以告诉我 Linux 中特定 CPU 内核的当前利用率,特别是 CentOS 8?
我相信您应该能够从 /proc/stat 中提取信息 - 以 cpu$N 开头的行,其中 $N 是 0, 1, 2, ...... 例如:
强烈建议阅读其他答案中引用的文章。
cpu0 101840 1 92875 80508446 4038 0 4562 0 0 0
cpu1 81264 0 68829 80842548 4424 0 2902 0 0 0
重复调用将显示更大的值:
cpu 183357 1 162020 161382289 8463 0 7470 0 0 0
cpu0 102003 1 93061 80523961 4038 0 4565 0 0 0
cpu1 81354 0 68958 80858328 4424 0 2905 0 0 0
注意 CPU0 第 5 列(空闲计数)从 80508446 移动到 80523961
中每一行的格式
cpuN 用户时间好时间系统时间空闲时间 io-wait ireq softirq 窃取来宾 guest_nice
所以一个基本的解决方案:
while true ;
for each cpu
read current counters, at least user-time system-time and idle
usage = current(user-time + system-time) - prev(user-time+system-time)
idle = current(idle) - prev(idle)
utilization = usage/(usage+idle)
// print or whatever.
set prev=current
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句