このアプリケーションはどのくらいのRAMを使用していますか?


10

実行しtop -cたりhtop、メモリ消費量のあるプロセスを取得したりしたが、表示したくない場合。

特定のアプリケーションのRAM消費量を確認できるコマンドラインはありますか?

たとえば、Apache WebサーバーのRAM消費量を確認したい(代わりに、実行されているすべてのプロセスをチェックするのではない)

ram 


ありがとう。私はそれで見つけることができる最高のもののトップ-cは、すでに私を与えるプロセスによるメモリ消費量、である

回答:


4

ここに非常に良い詳細な説明があります: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:"行を見て、メモリ使用量がどれだけ減少したかを確認します。これにより、メモリ使用量がわかります。


2

からの少しの助け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

これは-xand なしで実行できますtail -1

pmap -x $(pidof firefox) | tail -1

割合のみを表示します:

top -p $(pidof firefox)

また、使用中topにを押すiと、アイドル/ゾンビプロセスを無視して読みやすくすることができます。 はるかに小さいトップ出力


しかし、アプリケーションはいくつかのプロセスを起動しますが、どのプロセスがメインであるかをどうやって知ることができますか?

推測?pmapPIDが使用しているリソースについて多くのことを示していると思います。情報は、プロセスの名前とを使用してプロセスから検出されたPIDに基づいて提供されるpidofため、メインプロセスは、指定した名前(親プロセスを参照しているかどうかわからない)がある場合に表示されます
Wilf

2
これにより、プロセスごとに出力が分離されます。この方法では、すべてのApacheプロセスで使用されるメモリの総量を取得できません。合計する必要がありますが、共有領域は1回だけ数えます(これは難しいビットです)。
Gilles「SO-邪悪なことをやめなさい」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.