Hatena::ブログ(Diary)

かせいさんとこ

2012-12-11

linuxで空きメモリがどんくらいあるか確認する方法


freeコマンドを見る


$ free -m
             total       used       free     shared    buffers     cached
Mem:           497        380        116          0          2        145
-/+ buffers/cache:        233        264
Swap:          511        349        162

-mオプションは、容量をメガバイト単位で表示するオプション

Memが実メモリで、Swapが仮想メモリ


  • total : メモリの総量
  • used : 使用したメモリ寮
  • shard : 共有メモリ → プロセス間で共有できる領域用のメモリらしい
  • buffers : バッファに使われているメモリ
  • cached : ページキャッシュに使われているメモリ

バッファって?


バッファ → 緩衝器、緩衝帯の意

I/Oアクセスする時に、直接I/Oに行くのではなく、キャッシュ経由でアクセスさせる為のメモリ

データが来ているのに受け手が処理できないので、使うはずのデータを貯めておくらしい


ページキャッシュって?


キャッシュ → 隠し場所、貯蔵品

ページキャッシュ → ファイルのデータを入れておいて、再度アクセスがあった時に素早く返す為の領域

1度アクセスがあったファイルは、再度使われる可能性が高いので保持している

また、linuxはメモリに空きがある限りページキャッシュを蓄えるので、Memのfreeが少ないからといって、メモリが足りない訳ではない

アプリにて実メモリが必要になったら、ページキャッシュは破棄されて、アプリにメモリが割り当てられるはず


実際の空き領域はどうやってみるの?


空き領域をチェックするのに必要なのは、上の "-/+ buffers/cache:"

これは、バッファ、キャッシュメモリを引いた値を出していて、使用可能な空き領域を示している


Swapが使われているってことは、メモリが足りないの?


一概にそうとは言えない

linux側で使用していないアプリのメモリをSwapに移して、ページキャッシュに割り当てる場合があるので


それじゃあメモリが足りてるかどうかはどうやって見るの?


まずは、"-/+ buffers/cache"の freeがあからさまに少ない場合

後は、スラッシングが発生しているかチェックする


スラッシング?


メモリ不足の為、Swapと実メモリの行き来が大量に発生して、処理が遅延する現象

vmstatコマンドでチェック可能


$ vmstat -SM 10
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    361      5      1    267    0    0     0     2  987   85  0  0 100  0  0
 0  1    361      5      1    267    0    0   348     0 1024   90  1  2 55 43  0
 0  1    361      5      1    267    0    0   610     3 1128  192  0  3  0 97  0

-SMは、単位をメガバイトにしてるオプション

10 は、10秒毎に表示するオプション


各表示項目の意味は、以下を参照



ここで、si, so が多発していたらスラッシングが発生している


メモリが足りなかったら?


メモリを足すか、アプリがメモリを使わないように修正するか

頑張れ


参考


スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元