# cachestream
cachestream は、Linux ページキャッシュの folio(挿入・アクセス・退避)のライフサイクルを個別イベントとしてユーザ空間へストリーミングする eBPF ベースの観測ツールである([[@2026__TOCS__cache_ext - Customizing and Tracing the Page Cache with eBPF]])。[[cache_ext]] と同じ論文で提案されたが、[[cache_ext]] の機能に依存せず単体でも使える。
- **既存ツールとの違い**: BCC の cachestat や vmtouch は集約された・システム全体の粗粒度な統計しか提供しないのに対し、cachestream はイベント単位の詳細を提供し、リユース距離(reuse distance)計算やスレッド/ファイル単位のアクセス帰属を可能にする。
- **実装**: 約 650 行の C++ + eBPF。6 個の eBPF プログラムを既存カーネルフック(`tracepoint/filemap/mm_filemap_add_to_page_cache`・`mm_filemap_delete_from_page_cache`・`kprobe/folio_mark_accessed`・`fexit/vfs_open`・`fentry/vfs_unlink`・`fexit/vfs_unlink`)にアタッチする。カーネル変更は `bpf_d_path()` 利用のための1行のみ。
- **RocksDB 統合**: RocksDB の SST ファイル名から LSM ツリーレベルを特定し、コンパクションログのスレッド ID とページキャッシュイベントを突き合わせることで、レベル別ヒット率・アクセス頻度の解析を可能にした。この診断結果から [[cache_ext]] の admission filter 方針が設計され、RocksDB の read P99 レイテンシを 22.4% 改善した。
- **オーバーヘッド**: 5-20%(既存の軽量 eBPF 観測ツールより高い)。サンプリングモードによる削減が今後の課題として挙げられている。
## 関連
- ソース: [[@2026__TOCS__cache_ext - Customizing and Tracing the Page Cache with eBPF]]
- 概念: [[eBPF]]
- エンティティ: [[cache_ext]] / [[RocksDB]] / [[Tal Zussman]] / [[Ioannis Zarkadas]]