ページキャッシュの概念

 ページキャッシュの概念

以下動画のテキストです
https://youtu.be/x15iXjCeJaY

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

November 01, 2020
Tweet

Transcript

  1. ページキャッシュの概念 Oct 31th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi, EnSatoru 1

  2. ページキャッシュ概要 • 課題 ◦ ストレージデバイスへのアクセスはメモリアクセスに比べて非常に遅い ▪ NVMe SSDへのランダムアクセス : 100倍以上遅い

    ▪ HDDへのランダムアクセス : 一万倍以上遅い ◦ システム全体の性能はストレージアクセスがボトルネックになる • 解決方法 ◦ ページキャッシュ: ストレージ上のデータを一時的にメモリ上に置いておく機能 ◦ ストレージデバイスへの見かけ上のアクセス速度をメモリアクセス速度と同等にする 2
  3. ストレージからの読み出し • 次のような二段階の読み出しをする 1. 一旦ページキャッシュという領域に読み出す 2. プロセスのメモリに読み出す • 以下ファイルAの先頭から4KiB読み出す例 3

    メモリ プロセスのメモリ XXXX ページキャッシュ ファイルAの0~4KiB: XXXX ストレージ ファイルA 読み出し 0~4KiB: XXXX 読み出し
  4. 二回目以降の読み出し • 既存のページキャッシュ上のデータを読み出す ◦ ストレージへのアクセスは発生しない ◦ 見かけ上の読み出し速度はメモリアクセス速度と同等 4 メモリ プロセスのメモリ

    XXXX ページキャッシュ ファイルAの0~4KiB: XXXX ストレージ ファイルA 0~4KiB: XXXX 読み出し
  5. ストレージへの書き込み • ストレージではなくメモリ上のページキャッシュという領域に書く ◦ 書いた後はすぐに復帰 ◦ 見かけ上の書き込み速度はメモリアクセス速度と同等になる • 以下、プロセスのデータをファイルAの先頭から4KiB書き込む例 5

    メモリ プロセスのメモリ YYYY ページキャッシュ ファイルAの0~4KiB: YYYY ストレージ ファイルA 書き込み 0~4KiB: XXXX
  6. その後の読み出し • ストレージではなくページキャッシュから読み出す ◦ 見かけ上の読み出し速度はメモリアクセス速度と同等に 6 メモリ プロセスのメモリ YYYY ページキャッシュ

    ファイルAの0~4KiB: YYYY ストレージ ファイルA 読み出し ファイルA 0~4KiB: XXXX
  7. ストレージへの反映 • メモリ上のデータはマシンの電源が消えると無くなってしまう • 以下のような契機で書き出し(ライトバック)をする ◦ ページキャッシュの大きさがカーネルが設定する閾値を超えた ◦ 一定時間の経過 7

    メモリ プロセスのメモリ ページキャッシュ ファイルAの0~4KiB: XXXX ストレージ ファイルA 書き込み 0~4KiB: XXXX
  8. ページキャッシュが有用なケース • 所定の期間内にアクセスするデータがキャッシュメモリ上におさまる ◦ 見かけ上のストレージアクセス速度はメモリへアクセス速度にできる ◦ システムの搭載メモリ量が増えるとキャッシュメモリに使える領域も増える • おさまらなくなればライトバック処理が頻繁に動くので性能が劣化 •

    システム運用におけるヒント ◦ 読み書きするデータ量の増加に伴って性能が急激に劣化した。なぜだろう? ▪ データがページキャッシュに乗り切らなくなったせいかもしれない ◦ システムの性能を劇的に挙げる方法はないだろうか? ▪ データがページキャッシュに乗り切るようメモリ増強すると可能かもしれない
  9. まとめ • メモリアクセス速度に比べてストレージへのアクセス速度は遅い • その速度差を吸収するのがページキャッシュ • データ量をページキャッシュに収められると最大の効果を発揮 • CPUの演算速度とメモリアクセス速度差については以下動画を参照 ◦

    その7 キャッシュメモリ ◦ その13 キャッシュメモリの効果 • Latency Numbers Every Programmer Should Know ◦ https://colin-scott.github.io/personal_website/research/interactive_latency.html