『Web開発者のための大規模サービス技術入門』四日目
OSのキャッシュと分散
OSのキャッシュ機構
そもそもOSにはディスクのアクセスを速くする仕組みがある
ページキャッシュ
OSは「仮想メモリ」機能をもっている
仮想メモリ=論理的なリニアアドレスを物理的な物理アドレスに変換
メモリには32ビットの番地が付いてる(0x12345678)
プロセスがメモリが欲しいときOSは空いているメモリを返すが
アドレスを違うアドレスに変換する
なぜそうするか?
決まった地点から使えたほうがプロセスが扱いやすいため
(0x0000000に変換する)
ポイント
OSはメモリを直接渡すのではなくカーネルの中で仕組みを抽象化している
備考
OSはメモリを確保する時に1バイトずつではなく
4キロバイトほどブロックを確保している
この1ブロックをページと言う。OSは最低1個以上のページを確保
Linuxページキャッシュの仕組み
OSは確保したページをメモリ上ずっと確保し続けている機構を持っている
ページキャッシュの仕組み
1.OSがディスクから4キロバイトのブロックを読み出し
2.メモリ上に配置(プロセスは仮想メモリだけアクセス出来る)
3.OSは仮想メモリの番地をプロセスに教えてあげる
4.OSが仮想メモリにアクセス
5.プロセスがデータを読み終えても仮想メモリは開放されない
6.次に別のプロセスが同じディスクにアクセスする際は残しておいたページを使用
ページキャッシュの身近な効果
Linuxではディスクにデータを読みにいくと必ずメモリにいってキャッシュされる
したがって、2回目以降のアクセスが速くなる
OSはずっと起動しておくと速くなる
起動直後はキャッシュがないのでディスクI/Oは発生しやすく重い