在一段时间内写入CPU / RAM使用情况日志以在CentOS上归档


8

我正在寻找一个应用程序或一行代码,这些代码可以让我观察一个过程,将信息保存在多个变量中,然后将收集的信息放在文件中。

我一直在尝试各种变化,top但没有运气。我正在运行多个CentOS虚拟服务器,VM是2GB RAM,2个处理器。

在指定时间段内工作的脚本,同时在文本文件上写带有信息的行,因此最后我可以使用某种表来处理数据。

我要对服务器进行压力测试,并且我想让数据进行一些统计。

Answers:


11

这个标准ps就足够了。

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

结果:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

第一个字段是以百分比为单位的CPU使用率,第二个字段是以千字节为单位的物理内存使用率。


那是完美的,我已经编写了一个很长的脚本来清除顶级批处理输出中的所有数据,但是这样简单又好又有效,我非常感激,谢谢!
keponk 2010年

最后,我继续使用我的脚本,因为ps给我的平均负载通常与CPU%相同,但不是一个规则,有关更多信息,请参见Google的快速搜索
keponk 2010年

1
这里的%CPU不是该时间间隔内使用的%,而是程序整个运行时间内的平均百分比。我相信这是误导。
Will Sewell 2014年



0

您正在尝试观察特定进程需要多少cpu时间。

我打算建议CentOS的CPU统计工具? 但这不仅适用于整个过程,而且适用于整个系统。

任何一个进程都会在ps的输出中显示CPU时间:

$ ps -ef | egrep blah
root     13988 11152  0 Dec16 ?        00:00:05 sshd: xxx [priv]
xxx      14024 13988  0 Dec16 ?        00:06:00 sshd: xxx@pts/0
xxx      14032 14024  0 Dec16 pts/0    07:00:00 -bash
root      1194   679  0 Apr24 ?        2-05:15:14 [kswapd0]
root      1195   679  0 Apr24 ?        2-06:35:49 [kswapd1]
  • 00:00:00是cpu的小时/分钟/秒。它将累积。
  • 如果用户不是您,则需要权限才能看到此信息。
  • 一旦该值超过一天,格式就会更改;以上是2天。您的解析例程将不得不处理此问题。

至此,用Python解析输出,对它进行一些日期数学运算,您就很高兴了。


0

以下命令获取特定进程每40秒平均CPU和内存使用率(pid)

pidstat 40 -ru -p <pid>

我的情况的输出(前两行用于CPU使用,后两行用于内存):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.