酷徒LOGO

在Linux上,检查程序的物理内存和CPU的总使用情况


问题:

我想比较 Google Chrome 和 Firefox 使用的物理内存和CPU功耗。 所以我试图用htop来做这个,我通常用来跟踪我的系统资源,发现我不能得到结论。 我已经读了几个线程,但我仍然感到困惑,这就是为什么: 当我用F4筛选 比如 Chrome 时,htop向我展示了几十个不知道它们是线程还是进程的任务。 AFAIK线程共享相同的地址空间但进程不存在。 按F5可以有一个树视图,所有任务都有一个父视图。 is列中父任务的值提供了总内存和CPU%列中的值,无论它使用多个进程或者线程,都是错误的。 我是通过做这个小实验发现 我运行了一个 python 程序,它使用多重处理来计算一些计算。 这是我在htop中看到的: CPU%列中的父值显示了 0个,但有 7个任务最多可以达 100%个。

那么有人可以解释一下发生了什么,如何检查一个程序的物理内存和CPU的总使用情况。

从我所读到的不是很简单的确定精确的内存使用,但绝对值是不重要的。


回答 1:

你可以使用以下命令:


pgrep -P $(pgrep chrome) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'



或者这个( 。更改 $9以选择你的列):


top -b -n1 | grep chrome | awk '{ SUM += $9} END { print SUM }'



可以在以下位置找到更多的命令和建议:


回答 2:

psgrep给出了一个错误:


$ pgrep -P $(pgrep chrome) | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'


pgrep: only one pattern can be provided


Try `pgrep --help' for more information.


error: list of process IDs must follow -p



Usage:


ps [options]



Try 'ps --help <simple|list|output|threads|misc|all>'


or 'ps --help <s|l|o|t|m|a>'


for additional help text.



For more details see ps(1).



我可以用htop看到PID父任务并执行以下操作:


$ pgrep -P 1721 | xargs ps -o %mem,%cpu,cmd -p | awk '{memory+=$1;cpu+=$2} END {print memory,cpu}'


1.2 2.6



但是 1.2 % 内存似乎太低了。

top不计算所有内容。比如 包含: $ top -b -n1 | { += print print print print print print,因为它只有这个命令: /usr/share/freeplane/freeplane.sh 但不是这个 /usr/sbin/java -Xmx512m -Dorg.freeplane

ps auxf似乎对所有的事情都有计数,对于 Chrome 我也是如此:


$ ps auxf | grep chrome | awk '{ SUM += $4} END { print SUM }'


5.024G



看起来更真实。 如果使用以下方法测量所使用的内存:

 
$ free -h



 

在关闭 Chrome 之前和之后,我看到了 2.4个Gi差异。

编辑:我找到了 ps_mem,它可以很容易地检查和比较每个应用程序的内存使用情况。






Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷