どのプロセスでどのくらいのメモリが使用されているのか、どうすればわかりますか?
答え1
1 - 「ps」を使う
最も多くのメモリを使用する上位10のプロセスが表示されます。
ps aux --sort=-%mem | awk 'NR<=10{print $0}'
必要に応じて10を操作できます。
2 - 「トップ」の使用
トップキーをオンにすると、m
メモリ使用量に応じてプロセスが短縮されます。
答え2
私は時間の経過とともに状況が変化するのを見るためにhtopを実行することを好みます。
ターミナルウィンドウを使用してすべての最上位プロセスを表示し、常に自動的に更新されます。
CPU(デフォルト)またはメモリに基づいてソートするように設定できます。
システムにない場合は、簡単にインストールできます。
答え3
単一のプロセスが消費するメモリ量を決定する問題は一般的な質問であり、ほとんどの定義に基づいています。
この問題は主に共有ライブラリが原因で発生します。他の3つのプロセスと同じ.soを使用するプロセスのメモリ使用量をどのように計算しますか? libがなければ実行できないので、libが割り当てたメモリ全体を消費すると言えますか?比例的な部分(同時に使用する3つの異なるプロセスがあるため、1/4 - pss)を消費すると言えますか?プロセスが実行するためにロードするライブラリとは無関係であると言いますか?
交換したメモリを含めますか、または実際のRAM常駐ページのみを含めますか?マルチスレッドやサブプロセスはどうですか?変更がない限り、フォークは親プロセスと同じメモリを使用します。各プロセスのメモリ割り当てを計算しますか、それとも親プロセスのみを計算しますか?
この質問はここと他のサイトで何度も尋ねられ、答えられたので、いくつかのリンクと一般的な結論を提示します。
まず、そのトピックについて最も引用された記事 -https://emilics.com/notebook/enblog/p871.html
同じトピックに関するいくつかのSOとU&Lの質問:
https://stackoverflow.com/questions/7880784/what-is-rss-and-vsz-in-linux-memory-management
https://stackoverflow.com/questions/118307/a-way-to-define-a-processs-real-memory-usage-ie-private-dirty-rss
Linuxでメモリ使用量を正しく決定する
簡単に言えば -/prc/[pid]/smap
ベース文書
/proc/PID/smaps は、各プロセスマップのメモリ消費量を示すマップベースの拡張です。
または使用地図注文する。