我正在寻找一个可以按特定间隔输出 CPU 的简单使用信息的工具。我记得几年前我用过类似的工具,但记不起名字了。我希望能够绘制负载测试期间 CPU 上升和下降的图表。
提前致谢。
答案1
我知道的最简单的方法是使用top
批处理模式和单次迭代:
$ top -bn 1| grep Cpu
%Cpu(s): 5.0 us, 2.8 sy, 0.0 ni, 91.4 id, 0.5 wa, 0.0 hi, 0.2 si, 0.0 st
请参阅我的回答这里对这些字段的解释。假设您想要的是的总和us
,sy
那么ni
就需要进行一些解析:
$ top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' > logfile
上述命令返回 7.8,这意味着在特定时刻有 7.8% 的可用 CPU 功率正在使用中。您可以使用以下cron
命令运行该命令,例如每分钟运行一次:
$ crontab -e
这将打开一个编辑器窗口(无论您将哪个编辑器设置为$EDITOR
shell 变量),在该窗口中粘贴此行,然后保存并关闭它:
* * * * * top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' >> ~/logfile
~/logfile
这将导致每两分钟写入一次 CPU 百分比。
如果您想要每个 CPU 的细分,您可以解析以下输出mpstat
:
$ mpstat -P ALL | tail -n +4 | gawk '{print "CPU:"$3,$4+$5+$6}'
CPU:all 7.87
CPU:0 10.73
CPU:1 10.75
CPU:2 4.97
CPU:3 5.09
答案2
取决于你想要什么:
/usr/bin/top
返回信息,给定迭代次数或其他说明符,这将对您有所帮助;/proc/cpuinfo
显示您拥有的 CPU 数量,以帮助您的工具找出使用情况统计数据;- 对于在 Ubuntu 中的交互使用,有桌面小部件可以以图形方式显示您想要的内容。例如: https://launchpad.net/indicator-applet
- 编辑 -
提问者要求写入日志文件。我建议使用:
vmstat -s
输出:
99052720 total memory
60854068 used memory
3565184 active memory
19739432 inactive memory
38198648 free memory
3221080 buffer memory
20045176 swap cache
2097144 total swap
10836 used swap
2086308 free swap
124233445 non-nice user cpu ticks
3023 nice user cpu ticks
45760329 system cpu ticks
21762927158 idle cpu ticks
124003 IO-wait cpu ticks
9748 IRQ cpu ticks
1040367 softirq cpu ticks
0 stolen cpu ticks
4503955 pages paged in
1180587414 pages paged out
1637 pages swapped in
11093 pages swapped out
708030 interrupts
2814409153 CPU context switches
1377801399 boot time
40693435 forks
因此,运行此命令并将其导入文件或使用 python 读取。然后,重复并比较结果以查找 CPU 使用率。
注意,术语“CPU TICKS”是严重误导。 千万不要尝试将滴答声转换为秒,您一定会失败,然后在网上搜索原因并绞尽脑汁,直到身体上的痛苦与您的精神上的痛苦相匹配。
仅将这些刻度用作相对度量。这意味着,将所有刻度相加,然后除以它们在做一件特定事情上所占的比例。例如:
idlePercent = (idle / (idle+kernel+user+nonNiceUser+softirq+irq+iowait+stolen)) * 100