Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ページキャッシュとバッファキャッシュ マニアクス

ページキャッシュとバッファキャッシュ マニアクス

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

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

December 29, 2020
Tweet

Transcript

  1. ページキャッシュと バッファキャッシュ マニアクス Dec 29th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi,

    EnSatoru 1
  2. ページキャッシュとバッファキャッシュの疑問 • 同じようなしくみが二つあるけど大丈夫なの? ◦ 重複でキャッシュされたりしない? ◦ 重複されるとしたら同期とれてるの? • 本動画ではそのような疑問に答えます 2

  3. ファイルの中身とブロックデバイス • Q: 以下の場合にページキャッシュとバッファキャッシュどちらに入る? 1. あるブロックデバイス上のファイルシステムからファイル Aを読み出す 2. 同じブロックデバイスからファイル Aに対応するデータを読み出す

    3 ブロックデバイス メモリ ファイルA 1. ファイルシステムから読み出す 例) cat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null
  4. ファイルの中身とブロックデバイス • A: ページキャッシュにもバッファキャッシュにもキャッシュされる ◦ 両者の同期はとられない ◦ いずれかがdirtyになった瞬間にキャッシュ不整合が起きる 4 ブロックデバイス

    メモリ ファイルA 1. ファイルシステムから読み出す 例) cat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null ファイルA ファイルA (バッファキャッシュ) (ページキャッシュ)
  5. ファイルのメタデータとブロックデバイス • Q: 以下の場合に2つのバッファキャッシュが作られる? 1. あるブロックデバイス上のファイルシステムからファイル Aのメタデータを読み出す 2. 同じブロックデバイスからメタデータ Aに対応するデータを読み出す

    5 ブロックデバイス メモリ メタデータ 1. ファイルシステムから読み出す 例) stat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null
  6. ファイルのメタデータとブロックデバイス • A: ブロックデバイスのバッファキャッシュ1つだけ存在 ◦ ファイルシステムが使うバッファキャッシュは対応するブロックデバイスのものと同じ 6 ブロックデバイス メモリ メタデータ

    1. ファイルシステムから読み出す 例) stat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null メタデータ (バッファキャッシュ)
  7. ディスクとパーティション • Q: ディスクとパーティションはバッファキャッシュを共有する? 7 sda メモリ 1. ディスクから読み出す 例)

    dd if=/dev/sda 2. パーティションから読み出す 例) dd if=/dev/sda1
  8. ファイルのメタデータとブロックデバイス • A: 共有しない。それぞれ独立したバッファキャッシュを持つ ◦ 同期もとっていない ◦ いずれかがdirtyになった瞬間にキャッシュ不整合が起きる 8 ブロックデバイス

    メモリ メタデータ 1. ファイルシステムから読み出す 例) stat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null メタデータ (バッファキャッシュ)
  9. まとめ • 危険な操作 ◦ 使用中のファイルシステムに対応するブロックデバイスを開く ◦ ブロックデバイスとその上のパーティションを同時に開く • ブロックデバイスファイル操作コマンドの作成には細心の注意を払おう 9