プロセスの使用メモリ量を調べる
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を調べてもよい。