Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ページキャッシュとバッファキャッシュ マニアクス
Search
Satoru Takeuchi
PRO
December 29, 2020
Technology
0
380
ページキャッシュとバッファキャッシュ マニアクス
以下動画のテキストです。
https://youtu.be/N49m7YAKjug
Satoru Takeuchi
PRO
December 29, 2020
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
260
俺とキャンプ2
sat
PRO
1
98
俺とキャンプ3
sat
PRO
0
84
データ冗長化のしくみRAID 基礎概念とRAID1編
sat
PRO
2
30
RAIDの実現方法
sat
PRO
2
65
Linux環境のCPU上で10ミリ秒間に起こること
sat
PRO
3
110
HDDへのアクセス速度は位置によって変わる!??
sat
PRO
4
54
ボリュームマネージャLVM
sat
PRO
2
88
Best Practices of Production-Grade Rook/Ceph Cluster
sat
PRO
1
2k
Other Decks in Technology
See All in Technology
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
350
反実仮想機械学習とは何か
usaito
PRO
11
4.7k
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
120
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
340
ChatGPT for IT Service Management (IT Pro)
dahatake
7
1.6k
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.7k
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
0
260
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
180
Azureの基本的な権限管理の勉強会
yhana
0
600
DMM.com アルファ室採用案内資料
hsugita
1
160
VS CodeでAWSを操作しよう
smt7174
8
1.7k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
How to train your dragon (web standard)
notwaldorf
73
5.2k
How GitHub (no longer) Works
holman
304
140k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Teambox: Starting and Learning
jrom
128
8.4k
YesSQL, Process and Tooling at Scale
rocio
164
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
322
20k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Design by the Numbers
sachag
274
18k
Optimizing for Happiness
mojombo
370
69k
For a Future-Friendly Web
brad_frost
172
9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Transcript
ページキャッシュと バッファキャッシュ マニアクス Dec 29th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi,
EnSatoru 1
ページキャッシュとバッファキャッシュの疑問 • 同じようなしくみが二つあるけど大丈夫なの? ◦ 重複でキャッシュされたりしない? ◦ 重複されるとしたら同期とれてるの? • 本動画ではそのような疑問に答えます 2
ファイルの中身とブロックデバイス • Q: 以下の場合にページキャッシュとバッファキャッシュどちらに入る? 1. あるブロックデバイス上のファイルシステムからファイル Aを読み出す 2. 同じブロックデバイスからファイル Aに対応するデータを読み出す
3 ブロックデバイス メモリ ファイルA 1. ファイルシステムから読み出す 例) cat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null
ファイルの中身とブロックデバイス • A: ページキャッシュにもバッファキャッシュにもキャッシュされる ◦ 両者の同期はとられない ◦ いずれかがdirtyになった瞬間にキャッシュ不整合が起きる 4 ブロックデバイス
メモリ ファイルA 1. ファイルシステムから読み出す 例) cat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null ファイルA ファイルA (バッファキャッシュ) (ページキャッシュ)
ファイルのメタデータとブロックデバイス • Q: 以下の場合に2つのバッファキャッシュが作られる? 1. あるブロックデバイス上のファイルシステムからファイル Aのメタデータを読み出す 2. 同じブロックデバイスからメタデータ Aに対応するデータを読み出す
5 ブロックデバイス メモリ ファイルAの メタデータ 1. ファイルシステムから読み出す 例) stat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null
ファイルのメタデータとブロックデバイス • A: ブロックデバイスのバッファキャッシュは1つだけ存在 ◦ ファイルシステムが使うバッファキャッシュは対応するブロックデバイスのものと同じ 6 ブロックデバイス メモリ ファイルAの
メタデータ 1. ファイルシステムから読み出す 例) stat A 2. ブロックデバイスから読み出す 例) dd if=/dev/sda of=/dev/null ファイルAの メタデータ (バッファキャッシュ)
ディスクとパーティション • Q: ディスクとパーティションはバッファキャッシュを共有する? 1. ディスク上のなんらかのデータを読み出す 2. 上記と同じデータをパーティションから読み出す 7 sda
メモリ 1. ディスクから読み出す 例) dd if=/dev/sda 2. パーティションから読み出す 例) dd if=/dev/sda1 データ データ
ディスクとパーティション • A: 共有しない。それぞれ独立したバッファキャッシュを持つ ◦ 同期もとっていない ◦ いずれかがdirtyになった瞬間にキャッシュ不整合が起きる 8 sda
メモリ 1. ディスクから読み出す 例) dd if=/dev/sda 2. パーティションから読み出す 例) dd if=/dev/sda1 データ データ データ データ (バッファキャッシュ) (バッファキャッシュ)
まとめ • 危険な操作 ◦ 使用中のファイルシステムに対応するブロックデバイスを開く ◦ ブロックデバイスとその上のパーティションを同時に開く • ブロックデバイスファイル操作コマンドの作成には細心の注意を払おう 9