ページキャッシュ
ストレージデバイス上のファイルデータをメモリにキャッシュする
ページ単位でデータを扱う
プロセスがファイルのデータを読み出す時、いったんカーネルのメモリ上にあるページキャッシュという領域にコピーしてから、プロセスのメモリにコピーする
ページキャッシュは全プロセスの共有の資源なのでプロセスAが一度読んだものを直後にプロセスBがそのキャッシュを使うこともできる
書き込み時はキャッシュメモリのときと同様に、キャッシュメモリのみに書き込んで、ダーティの印をつける
この印がつけられたページのことを「ダーティページ」という
その後、所定のタイミングでストレージ内のファイルに反映される
デフォルトは5秒に1回
周期はstsctlの「vm.dirty_writeback_centisecs」パラメータで変更できる
単位はセンチ秒(1/100sec)
各プロセスがアクセスするデータが全てキャッシュメモリ上にあると、ファイルアクセス速度はストレージアクセスではなく、実質的にメモリアクセス速度になる(めっちゃ速い!
キャッシュメモリが足りなくなってくると、まずはダーティではないページを破棄
それでも無理ならダーティページをライトバックした後に破棄
頻発すると遅くなる
ページキャッシュ上にダーティページが有る状態でシステムの電源が落ちるとそのデータはなくなる
open()システムコールでファイルを開く際にO_SYNCフラグを立てておくと、そのファイルのみwrite()システムコールが発行するごとにページキャッシュだけでなく、ストレージでバイにも同期する
まじで消えるとやばいファイルに対してはこれを使うといい