Más contenido relacionado
EPT と TLB でしくじった話
- 1. EPT と TLB でしくじった話
@deep_tkkn
2016.10.08 Kernel/VM 探検隊
- 2. 自己紹介
• 氏名: 深井 貴明
• 所属: TKB大学
• Twitter: @deep_tkkn
• BitVisor であれこれしてる人
2
- 3. 今日のお話
• EPT と TLB 周りでハマって時間溶けて悲しかったお話
• 新規性はないと思う
• 理屈としては教科書にも載ってそう
• 同じような経験したことある人いると思う
• しかし,実際起きるとどれくらい悲しいか伝えたい
3
EPT, TLB, マルチコア,ウッ頭が
- 8. Dirty pages をどうやって追うか
• VT-x の メモリ管理機能 (EPT) の機能の一部を使う
• EPT: ゲスト物理アドレス マシン物理アドレスへ変換する
ページング機構
• 挙動は普通のページングとほぼ同じ
• EPT エントリ (EPTE) にも Dirty bit がある
• 該当ページが更新されると立つビット
8
- 9. 9
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3C:
System Programming Guide, Part 3 Order Number: 326019-048US
- 12. TLB と EPT の落とし穴
• TLB(Table Lookaside Buffer): アドレス変換のキャッシュ
• 毎回ページテーブルを引くと遅いから
• EPT による変換も TLB に載る
• Dirty Bit の情報も TLB に載る
• たぶん EPTE がキャッシュに載るイメージ
• TLB はHW がコア間でコヒーレンシー取られない
• CPU のデータキャッシュとは違う
12
- 13. 何が起きていたのか?
• あるコアでほかのコアの EPT エントリを読む
• Dirty bit を読む
• 一部の情報はTLBに載ってて古い
• 該当ページを書き換えたのに dirty bit が立ってないように見
える
• Dirty ページを見逃す
• 一部のページだけ古い状態でマイグレーション
13
- 16. まとめ
• EPTE は TLB に載る
• TLB は ハードウェアがコヒーレンシ―取らない
• データキャッシュみたいな感覚だと痛い目を見る
• TLB 絡みのバグはつらい
• メモリが微妙に壊れる
• メモリ周りの挙動が怪しいときは TLB を疑う
16