以下は、メモリの使用しているmysql
とapache
私のサーバー上のそれぞれ。pmap
たとえばの出力によると、mysql
は約379Mを使用しており、277Mをapache
使用しています。
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
これをの出力と比較するとtop
、値はほぼ一致していることがわかります。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10515 apache 20 0 271m 32m 3132 S 0.0 6.6 0:00.73 /usr/sbin/httpd
10436 mysql 20 0 370m 21m 6188 S 0.0 4.3 0:06.07 /usr/libexec/mysqld --basedir=....
これらの値は、これら2つのプロセスの現在のメモリ使用量ではありません。これはram
、システムの512Mを超えていた場合、これらがこれら2つのプロセスに割り当てられたページのサイズであり、実際にはそうではないことを理解しているためです。それらによってアクティブに使用されているメモリのサイズ。さて、を使用すると、プロセスのメモリ使用量がはるかに少ないことを示すpmap -x
余分な列Dirty
が表示されます。以下の例のように、Dirty
最初の列の379Mに対して、列は15Mを示しています。私の質問は次のとおりです。列の下の値Dirty
は、そのプロセスによってアクティブに使用されているメモリの「実際の」量ですか?そうでない場合、プロセスの実際のメモリ使用量をどのように見つけることができますか?そうps
でtop
はなく、上記と同じ理由で。下に何かありますか/proc
それはこの情報を与えるでしょうか?
[root@server ~]# pmap -x 10436 | grep total
total kB 379564 21528 15340
[root@server ~]#
[root@server ~]# free -m
total used free shared buffers cached
Mem: 489 447 41 0 52 214
-/+ buffers/cache: 180 308
Swap: 1023 0 1023
[root@server ~]#
プロセスの実際のメモリ使用量などがないため、「プロセスの実際のメモリ使用量」を示すコマンドはありません。
プロセスの各メモリページは、(他の区別の中でも)次のようになります。
「ダーティ」な数字は、RAMにあり(スワップではなく)、ファイルに裏付けられていないすべてのものを合計すると思います。これには、共有メモリと非共有メモリの両方が含まれます(ただし、フォークサーバー以外のほとんどの場合、共有メモリはメモリマップトファイルのみで構成されます)。
によって表示される情報pmap
は、およびから取得されます。これがプロセスの実際のメモリ使用量です。単一の数値で要約することはできません。/proc/PID/maps
/proc/PID/smaps
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加