プロセスの使用メモリ量を調べる

Linuxで使用メモリを調べる際に、便利なコマンド pmap と vmstat 。

プロセス名がわかっていて、実行プロセス数が1つだけの場合、
"pgrep プロセス名"でプロセスIDを調べるとよい。
"pkill プロセス名"で、直接killすることもできる。


pmap - 単一プロセスのメモリマップをレポート

(概要)
pmap [ -x | -d ] [ -q ] プロセスID
pmap -V

(オプション説明)
-x : 拡張フォーマットで表示
-d : デバイスフォーマットで表示
-q : ヘッダ/フッタ情報を非表示
-V : バージョンを表示

(実行例)
$ pmap 1
1:   init [5]                                              
 total                0K

$ pmap -x 1
1:   init [5]                                              
Address           Kbytes     RSS    Anon  Locked Mode   Mapping
----------------  ------  ------  ------  ------
total kB               0       -       -       -
vmstat - 仮想メモリの統計データをレポート


(概要)
vmstat [-a] [-n] [待ち時間 [回数]]
vmstat [-f] [-s] [-m]
vmstat [-S 単位]
vmstat [-d]
vmstat [-p ディスクパーティション]
vmstat [-V]


(オプション説明)
-a : アクティブ/非アクティブメモリの表示切り替え
-f : ブートからのフォーク数を表示
-m : slabinfoを表示
-n : ヘッダ情報を一度だけ表示し、繰り返し表示しない
-s : 各種イベント、メモリ統計データのテーブル表示(繰り返し表示不可)
-d : ディスクの統計データをレポート(要、2.5.70以降)
-p パーティション名 : パーティションごとの詳細な統計データをレポート(要、2.5.70以降)
-S k/K/m/M : 出力単位を変更(1000/1024/1000000/1048576)
-V : バージョン情報の表示


(実行例)
$ vmstat 2 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 688824 139980 969864    0    0     1    58   42   36 36  0 64  0  0
 0  0      0 688824 139980 969864    0    0     0    80 1019  407  0  0 100  0  0

$ vmstat -f
       206308 forks

$ vmstat -p /dev/sda1
sda1          reads   read sectors  writes    requested writes
                  79        632          0          0



(フィールドの説明)
procs
  r : 実行待ちプロセス数
  b : 割り込み不可(スリープ)プロセス数

memory
  swpd  : 仮想メモリ使用量
  free  : アイドル状態のメモリ量
  buff  : バッファメモリ量
  cache : キャッシュメモリ量
  inact : 非アクティブメモリ量(-a オプション)
  active: アクティブメモリ量(-a オプション)

swap
  si    : ディスクからスワップインしているメモリ量(/s)
  so    : ディスクへスワップしているメモリ量(/s)

io
  bi    : ブロックデバイスから受け取ったブロック数(blocks/s)
  bo    : ブロックデバイスへ送ったブロック数(blocks/s)

system
  in    : 秒毎の割り込み回数、クロックを含む
  cs    : 秒毎のコンテクストスイッチ数

cpu
  us    : 非カーネルコードの実行経過時間(ユーザ時間、nice時間を含む) 
  sy    : カーネルコードの実行経過時間(システム時間)
  id    : アイドル経過時間(Linux 2.5.41以前は、IO待ち時間を含む)
  wa    : IO待ち経過時間(Linux 2.5.41以前は、idleに含まれる)
  st    : 仮想マシンから失われた(盗まれた?)時間(Linux 2.6.11以前では、unknown)

以下、略

その他は、

free
/proc/meminfo
ps rxl (※これが手軽かな。)

など。


プロセス毎の使用物理メモリ量は、
/proc/プロセスID/status
のVmHWM、VmRSSを調べてもよい。