Linux,UNIXのメモリ管理
秀逸の説明あり。
URLをみるとページがいずれはなくなりそうなので、メモ。
メモリの状況を調べる
メモリの利用状況を調べる方法は, free, top, ps, vmstat, /proc/meminfo 等がある. xosview や ProcMeter を使うと X 上でグラフィカルに状況を見る事ができる. これらでメモリ−の利用状況を調べた場合, 慢性的なメモリ−不足のようにみえて, 戸惑うかも知れない. だが, メモリーが不足しているかどうか, 何が原因か, などの判断は単純にはゆかない.
メモリ−は十分なはずなのに 余裕が無い?
おや? 残りメモリ−が 1.6M(free が 1628) しかない? free の表示単位は 1k ブロックだから, 1.6M の余裕しかないように見える. ピンチなのか?
$ free total used free shared buffers cached Mem: 192572 190944 1628 54912 20112 126848 ....略-/+ buffers/chche を見よう
Linux(っていうか UNIX かな?) では, 各プロセスにメモリを割り振った残りをバッファ(buffer)とキャッシュ(cache)に利用して, ディスク入出力の負荷を減らしている. そのため, free コマンド等で見える残りメモリ−(free)は 1M 程度の瞬間的な使いまわしに対処する程度しか残っていない事が多い.
$ free total used free shared buffers cached Mem: 192572 190944 1628 54912 20112 126848 -/+ buffers/cache: 43984 148588 <----ここを見る Swap: 96384 0 96384この例では, 実質的な残りメモリ−は, バッファとキャッシュに転用された分も考慮すると free+buffers+cached で計算できる. 上の例で云うと free+buffers+cached = 1628+20112+126848 = 148588. まだまだ, メモリ−には余裕がある.
どのプロセスがメモリを消費しているのか?
個々のプログラムがメモリを浪費しているかどうか, 大雑把に観察する場合どうするか.
free コマンドでは全体のメモリーの使用状況しか分からない. 個々のプロセスのメモリーの使用状況を調べるには top や ps を用いる.
- top コマンドを起動してから "M"(大文字) すると消費メモリの順に表示される.
- ps コマンドで ps -xl --sort -vsize としても良い.