kenrel:Memory Management(3) posix_fadvise()

  • アプリケーションごとに最適なPage Cacheの容量は異なる
    • たとえばストリーミングサーバの場合、シーケンシャルなデータの書き出しをするため、Page Cacheは必要ない
  • kernel2.6では、アプリケーション側からデータのアクセスパターンをkernel側に宣言するシステムコール"posix_fadvise()"が用意された
    • プログラムのコードにこのシステムコールを含めることにより、利用するPage Cacheの量をアプリケーションの特性にあわせることができる

posix_fadvise()関数の引数

アクセスパターン 内容
POSIX_FADV_NORMAL 特に特徴のないアクセスパターン/デフォルト
POSIX_FADV_SEQUENTIAL 指定されたデータにシーケンシャルにアクセスするパターン
POSIX_FADV_RANDOM 指定されたデータにランダムな順番でアクセスするパターン
POSIX_FADV_NOREUSE 指定されたデータには1度しかアクセスしないパターン
POSIX_FADV_WILLNEED 指定されたデータにすぐに再度アクセスするパターン/この場合、一定間隔Page Cacheを維持する
POSIX_FADV_DONTNEED 指定されたデータにはすぐには再度アクセスしないパターン/この場合、積極的にPage Cacheを解放する