web-dev-qa-db-ja.com

Linux上のプログラムの物理メモリとCPUの合計使用量を確認します

物理メモリとCPUパワーを比較したいgoogle chromeとfirefoxの使用量。そこで、システムリソースを追跡するために通常使用するhtopでこれを実行しようとしたところ、結論を出すことができません。いくつかのスレッドを読んだのですが、それでも混乱しているので、これが理由です。たとえば、ChromeなどのF4でフィルタリングすると、htopに数十のタスクが表示されます。 AFAIKスレッドは同じアドレス空間を共有しますが、プロセスは共有しません。F5キーを押すと、ツリービューが表示され、すべてのタスクに1つの親があります。RES列の親タスクの値が合計を与えると仮定します。メモリとCPU%列の値は、複数のプロセスまたはスレッドを使用しているかどうかに関係なく、このプログラムの合計CPU使用量が明らかに間違っていることを発見しました。この小さな実験を行って、python =いくつかの計算にマルチプロセッシングを使用する私が見つけたプログラムこれは私がhtopで見たものです:CPU%coの親値lumnは常に0を示しますが、100%になる7つのタスクがあります(私のシステムには、それぞれ2つのスレッドを持つ4つの物理コアがあります)。

では、誰かが何が起こっているのか、プログラムの物理メモリとCPUの合計使用量を確認するにはどうすればよいか説明してもらえますか?

私が読んだことから、正確なメモリ使用量を決定するのは簡単ではありませんが、私の場合は絶対値は重要ではありません。比較に使用できる値が必要です。

1
coverflower

次のコマンドを使用できます。

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 }'

その他のコマンドとアドバイスは次の場所にあります。

1
harrymc

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 | grep freeplane | awk '{SUM + = $ 9} END {print SUM}'次のコマンドのみを取得するため0を取得しています:/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.4Giの違いが見られます。

編集:各アプリケーションのメモリ使用量を確認して比較するのが本当に簡単なps_memを見つけました。

0
coverflower