10代と話して驚いたこと

Linuxのキャッシュとバッファについて教えてください。

1.キャッシュ
プログラムを実行した際、そのプログラムがキャッシュをどのくらい消費しているか、
調べる方法はないでしょうか?

vmstatコマンドで表示されるキャッシュサイズの増加分を見ればいいのかなと思っていたのですが、いまいちキャッシュの仕組みを理解できておらず自信がありません。

2.バッファ
上述のvmstatでは、キャッシュとバッファが表示されますが、バッファとはキャッシュが増加すると減るものなのですか?あるプログラムを実行いたところ、キャッシュは増加し、バッファは減少しました。自分のイメージではどちらも増加するとおもっていたので、いちいち良く分かりません・・・

A 回答 (4件)

>本当に私のプログラムがキャッシュを消費しているのか知りたかった


キャッシュ(ページキャッシュ)は、
 プログラム(プロセス)に割り当てられるものではありません。
 従って、調査は困難です。
 ものすごい手間を掛ければ理論上は可能ですが、お手軽な方法はありません。


>あるプログラムを実行いたところ、キャッシュは増加し、バッファは減少しました。
1.キャッシュ(ページキャッシュ)は、ファイルのキャッシュとして動作した。
 ⇒ファイルは再利用されるかもしれないので、キャッシュ生存期間が長い。
 ⇒生存期間切れの開放量がほとんどなく、総量が増加した。

2.バッファ(バッファキャッシュ)は、HDD読書のキャッシュとして動作した。
 ⇒HDD読書操作が終わればすぐ不要になり、キャッシュ生存期間が短い。
 ⇒生存期間切れで開放された量の方が多かったので、総量は減少した。

という挙動を示したと推測されます。

キャッシュ(ページキャッシュ)/バッファ(バッファキャッシュ)共に、
上記以外の動作も行いますが、一般的なプログラム(プロセス)では、
上記動作が消費総量に対して、支配的です。


>私のプログラムが動作している時間帯に
>大量のキャッシュが消費されていたため、
>他のプログラムの処理が遅くなっている
今回の質問の本質は、
 本当にruiruirui58さんのプログラムが
 「他のプログラムの処理が遅くなる」問題の原因なのかどうか
 調査したい。
ということでしょうか?
    • good
    • 0

top


で見ればvssがキャッシュサイズだったような。
CPU CORE 4個に、8GBのメモリーを載せるのが、安くて良いと思いますが。
    • good
    • 0

あまり、1つのプロセスのキャッシュのサイズは気にしなくていいかもしれません。


ページフォルトが頻繁に起こってるなら、メモリのとり方や、データサイズが大きすぎたり
プログラムの局所性が低いという可能性があります.

vmstatのバッファは入出力(I/O)に使用するメモリ領域じゃないかな?

ps や、pmap で、メモリ上だけでなくSWAPも含めたプログラムのリージョンサイズは確認してみましたか?

参考URLもどうぞ。

参考URL:http://haginov.blog35.fc2.com/blog-entry-112.html
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
今回質問させていただいたのは、私のプログラムが動作している時間帯に大量のキャッシュが消費されていたため、他のプログラムの処理が遅くなっていることが分かり、本当に私のプログラムがキャッシュを消費しているのか知りたかったというものがありました。

お礼日時:2010/07/22 07:41

top コマンドはどうですか?

    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
topコマンドはッキャッシュサイズまでわかるんでしたっけ?
メモリの使用率はでたと思いますが

お礼日時:2010/07/22 07:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報