回答:
ここに非常に良い詳細な説明があります:https : //blogs.kde.org/2005/09/15/measuring-memory-usage
ただし、基本的には、アプリケーションをどのように設定するかを実際に調べて理解する必要があります。
たとえば、mysqlを見てみましょう。
PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6004 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:40.33 mysqld
16115 16085 composit 20 0 37900 27m 2908 S 0 0.2 0:00.37 mysqld
16116 16115 composit 20 0 37900 27m 2908 S 0 0.2 2:07.34 mysqld
16117 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
16118 16116 composit 20 0 37900 27m 2908 S 0 0.2 3:19.79 mysqld
16119 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.01 mysqld
16120 16116 composit 20 0 37900 27m 2908 S 0 0.2 5:31.09 mysqld
16121 16116 composit 20 0 37900 27m 2908 S 0 0.2 14:19.53 mysqld
16122 16116 composit 20 0 37900 27m 2908 S 0 0.2 36:13.67 mysqld
16123 16116 composit 20 0 37900 27m 2908 S 0 0.2 30:30.64 mysqld
16124 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.15 mysqld
16493 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
使用されるメモリの合計は約25 MBです(27 MBのRESを使用し、共有(SHR)を差し引きます)。
「killall mysqld」を発行する前と後に、合計メモリ使用量(無料-m、+ /バッファー/キャッシュ)をチェックして、これを検証しました。すべてのmysqldプロセスを強制終了した後、「free -m」によるとメモリ使用量は25 MB減少しました。
各プロセスに同一のVIRT、RES、およびSHR列があることがわかった場合、それらはおそらく同じプロセスの単なるスレッドです。(古いLinuxライブラリは、本質的に同じメモリを占有する複数の実際のプロセスを生成することによってスレッドを処理していました)
それらが異なる場合、(RES-SHR)のSUMを実行することで推定できる場合があります。しかし、それが機能するのは、プロセスが実際には別のプロセスであり、同じプロセスのスレッドだけではない場合だけです。PPID(親プロセスID)を確認することも役立ちます。すべてが同じ親を持つ場合、それらはおそらく単なるスレッドです(ただし、必ずしもそうとは限りません)。
残念ながら、Linuxでこれに答える実際に良い簡単な方法はありません。唯一の簡単な方法は、プロセスを終了する直前に「無料」をチェックし、直後に再度チェックすることです。"-/ + buffers / cache:"行を見て、メモリ使用量がどれだけ減少したかを確認します。これにより、メモリ使用量がわかります。
からの少しの助けman ps
とこの素晴らしい答えで ...
ps -up $(pidof PROCESS_NAME)
例えば:
[wilf@comp ~]$ ps -up $(pidof firefox)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
wilf 1619 8.9 5.6 1464216 342396 ? Sl 17:56 1:36 /usr/lib64/firefox/firefox
[wilf@comp ~]$
他の方法:
cat /proc/$(pidof firefox)/status | grep VmSize
これは-x
and なしで実行できますtail -1
:
pmap -x $(pidof firefox) | tail -1
割合のみを表示します:
top -p $(pidof firefox)
また、使用中top
にを押すiと、アイドル/ゾンビプロセスを無視して読みやすくすることができます。
pmap
PIDが使用しているリソースについて多くのことを示していると思います。情報は、プロセスの名前とを使用してプロセスから検出されたPIDに基づいて提供されるpidof
ため、メインプロセスは、指定した名前(親プロセスを参照しているかどうかわからない)がある場合に表示されます