【发布时间】:2011-09-05 23:50:14
【问题描述】:
如何在 linux 中通过时间信息获取 CPU 利用率?基本上我想让我的应用程序在一夜之间运行。同时,我想监控应用程序运行期间的 CPU 利用率。
我试过了 | grep appName >& log,它似乎没有在日志中返回任何内容。有人可以帮我解决这个问题吗?
谢谢。
【问题讨论】:
如何在 linux 中通过时间信息获取 CPU 利用率?基本上我想让我的应用程序在一夜之间运行。同时,我想监控应用程序运行期间的 CPU 利用率。
我试过了 | grep appName >& log,它似乎没有在日志中返回任何内容。有人可以帮我解决这个问题吗?
谢谢。
【问题讨论】:
使用 top 或 watch 命令
PID COMMAND %CPU TIME #TH #WQ #PORT #MREG RPRVT RSHRD RSIZE VPRVT VSIZE PGRP PPID STATE UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH CSW PAGEINS USER
10764 top 8.4 00:01.04 1/1 0 24 33 2000K 244K 2576K 17M 2378M 10764 10719 running 0 9908+ 54 564790+ 282365+ 3381+ 283412+ 838+ 27 root
10763 taskgated 0.0 00:00.00 2 0 25 27 432K 244K 1004K 27M 2387M 10763 1 sleeping 0 376 60 140 60 160 109 11 0 root
【讨论】:
编写一个程序来调用您的进程,然后调用 getrusage(2) 并报告其子进程的统计信息。
【讨论】:
vmstat 和 iostat 都可以为您提供这种性质的周期性信息;我建议要么手动设置次数,要么将单个轮询放入 cron 作业中,然后将输出重定向到文件:
vmstat 20 4230 >> cpu_log_file
这将为您提供 24 小时内每 20 秒使用一次的快照。
【讨论】:
安装 sysstat 包并运行 sar
nohup sar -o output.file 12 8 >/dev/null 2>&1 &
【讨论】:
您可以在程序运行时使用top 监控程序使用的时间。
或者,您可以使用time 命令启动您的应用程序,该命令将打印您的程序在执行结束时使用的CPU 时间总量。只需输入 time ./my_app 而不是 ./my_app
欲了解更多信息,man 1 time
【讨论】: