我正在try 以%为单位计算cpu的总使用率.首先,我应该说"top"根本不行,因为cpu转储之间有延迟,它需要2次转储和几秒钟,这会挂起我的程序(我不想给它自己的线程)

接下来我try 的是"ps",它是即时的,但总是给出非常高的总数(20+),当我真正让我的cpu做某事时,它保持在20左右...

有没有其他方法可以让我得到总的cpu使用率?不管是超过一秒还是更长的时间...不过,时间越长越好.

推荐答案

cat/proc/stat

http://www.linuxhowtos.org/System/procstat.htm

我同意上面的回答.该文件中的cpu行给出了系统进行不同类型处理所花费的"jiffies"总数.

你需要做的是读取这个文件的两个读数,按你需要的时间间隔分开.这些数字是递增的值(取决于整数滚动),因此要获得%的cpu,您需要计算在您的时间间隔内经过的jiffie数量,与花在工作上的jiffie数量相比.

例如

cpu 4698 591 262 8953 916 449 531

总计(所有值之和)=16400

work_jiffies_1=(用户、nice、系统的总和=前三个值)=5551

14:00:05你有

cpu 4739 591 289 9961 936 449 541

总数2=17506

工作时间2=5619

因此,这段时间的cpu使用率百分比为:

工作时间=工作时间2-工作时间1=68

期间内的总费用=总费用2-总费用1=1106

%cpu=工作周期/总工作周期*100=6.1%

希望这能有所帮助.

Linux相关问答推荐

Linux 中大型 TSV 的条件编辑

如何过滤 Bash 的正则表达式(Linux)中的所有值,除了一个?

awk内部的变量操作

RabbitMQ 安装后没有自动启动

sed 根据文件中的条件进行多次替换

在 Linux 中 Select 多个同名的可执行文件

在 puppet 中管理 linux 的用户密码

如何使用 __attribute__((visibility("default")))?

sed: -i 不能与 Mac OS X 上的标准输入一起使用

什么是最有效的不区分大小写的 grep 用法?

如何使目录下的所有文件在linux上可读?

Linux 上 pid_t、uid_t、gid_t 的大小

如何让 PHP、Symlinks 和 __FILE__ 很好地协同工作?

./studio.sh 之后的 Android Studio 错误

判断 VT-x 是否已激活而无需在 Linux 中重新启动?

从 FTP 服务器下载所有文件

比较两个图像的 python/linux 方式

cat、grep 和 cut - 翻译成 python

bash / Makefile中双美元符号的含义是什么?

PostgreSQL psql 终端命令