質問: 【メモリ]】vmstat、free、topの表示 linux(centos)でサーバのメモリ状態を確認するために 以下のコマンドを実行しました。 ・vmstat ・free ・top 【vmstat】 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 140 29812 137284 242088 0 0 0 3 2 0 1 0 96 3 0 【free】 total used free shared buffers cached mem: 515312 485500 29812 0 137284 242088 -/+ buffers/cache: 106128 409184 swap: 1052216 140 1052076 【top】 mem: 515312k total, 485500k used, 29812k free, 137284k buffers swap: 1052216k total, 140k used, 1052076k free, 242088k cached 各コマンドの表示結果の関連性を教えてください。 1.vmstatコマンドでは「used」項目が表示されないため メモリの使用量が分からない? 2.「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。 「buff(ers)」項目と「cashe(d)」項目は、実メモリの情報?仮想メモリの情報? 3.「buff(ers)」項目と「cashe(d)」とは?また違いは? #freeコマンドでは、「cashed」項目は「mem(実メモリ)」列に表示されているが #topコマンドでは、「swap(仮想メモリ)」列に表示されている。 4.「-/+ buffers/cache:」列の意味は? 「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。 #「mem」項目の「buffers」項目と「cashed」との違いは? ご教示お願いいたします。 <環境> centos(5.5) カーネルバージョン:2.6.18-194.11.3.el5 実メモリ:512mb スワップ領域:1024mb 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 140 29812 137260 242080 0 0 0 3 2 0 1 0 96 3 0 top - 17:00:00 up 125 days, 16:04, 1 user, load average: 0.05, 0.05, 0.02 tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie cpu(s): 0.2%us, 0.2%sy, 0.4%ni, 96.2%id, 3.1%wa, 0.0%hi, 0.0%si, 0.0%st mem: 515312k total, 485500k used, 29812k free, 137260k buffers swap: 1052216k total, 140k used, 1052076k free, 242080k cached
回答: 普通に調べればイロイロ出てくるのに 何も調べてないんですか? って、こういう回答者が多いなぁ~ なんて思ってたけど ほんまに調べてないみたいな質問ですね。 関連性とはまた難しい表現で それぞれのコマンドは一貫性を持つ為のものではなく 用途が違います。 しかしながらどのコマンドも同じcpuやメモリー資源を使ってるので ほぼ同じ値を出してると言う事ですね。 vmstatの場合 おおよそのカーネル単位(システム単位)の資源使用率を監視する為のものです。 どのプロセスがとかなくて、現在走ってるプロセス数・メモリ使用率・cpu使用率を表示してます。 > vmstatコマンドでは「used」項目が表示されないためメモリの使用量が分からない? (1)実装メモリー量からフリー領域 バッファ領域 キャッシュ領域を差し引いた値が 有効なメモリー使用量です。 515312 - (29812 + 137284 + 242088) = 106128 ※ ちなみに vmstat から「used」項目なるものを割り出したい場合は 実装メモリからフリー領域を差し引けば出てきます。 515312 - 29812 = 485500 freeの場合 メモリの分布を実測値で表示してます。 > 「buff(ers)」項目と「cashe(d)」項目は、実メモリの情報?仮想メモリの情報? (2)実行プロセス数にも依存しますがプロセスは起動すると余分にメモリ空間を占有します。 それらの余分な領域(空の占有された領域)がバッファ領域です。 キャッシュ領域は今、まさに実行しているプロセスがデータを展開している領域です。 > 「buff(ers)」項目と「cashe(d)」とは?また違いは? (3)この質問ではどこのバッファ領域とキャッシュ領域を聞いているのかわかりましぇ~ん もうちょい聞きたい内容整理して下さいな。 > 「-/+ buffers/cache:」列の意味は? (4)この「-/+」ってfreeコマンドにしかないのでfreeコマンドの結果聞いてるって意味でいいですよね? えっと、上に書いてる通り余分なメモリー領域の話と実メモリー領域の話しましたよね 以下の通りそのまま平たく考えて下さいな b. バッファ領域とキャッシュ領域とフリー領域で占有されている総量 29812 + 137284 + 242088 = 409184 a. 占有された全ての領域を差し引いて残ってるメモリー空間 515312 - 409184 = 106128 「a/b」=「-/+」の表示です。 少し荒々と説明しましたが表示内容は理解できました?