# cache_ext
cache_ext は、Linux のページキャッシュに対して、カーネルの再コンパイル・モジュール追加を行わずに eBPF でカスタム退避(eviction)・受け入れ(admission)方針を実装できるようにするフレームワークである([[@2026__TOCS__cache_ext - Customizing and Tracing the Page Cache with eBPF]], Zussman・Zarkadas ほか、[[Columbia University]] × [[IBM Research]]、原題は SOSP 2025 で発表され ACM TOCS 2026 に拡張出版)。
- **設計の核**: ポリシー関数をユーザ空間へオフロードせずカーネル内 eBPF 関数として実行し(オフロード方式は実測で最大 20.6% のスループット低下)、`struct_ops`(5 種のイベントフック)と kfunc ベースの可変長「退避リスト API」(`list_create`/`list_add`/`list_move`/`list_del`/`list_iterate`)で多様なアルゴリズムを表現する。
- **隔離**: cgroup を分離境界として利用し、cgroup ごとに独立したカスタム方針を割り当てられる(struct_ops を cgroup 対応に拡張)。
- **安全性**: folio ポインタの妥当性を検証する "valid folios registry"(per-bucket ロック付きハッシュテーブル)と、候補不足時にカーネル既定方針へフォールバックする機構([[sched_ext]] のウォッチドッグと同型の設計)を持つ。
- **実装した方針**: LFU・MRU・FIFO・LHD・S3-FIFO・MGLRU(再実装)に加え、アプリケーション情報を用いる GET-SCAN・admission filter の計 8 方針。各方針は eBPF コード 35〜689 行程度で実装できる(Table 3)。
- **性能**: 汎用ポリシーで最大 38%、アプリケーション情報を用いたポリシーで最大 70% のスループット向上・58% の P99 レイテンシ削減を達成。オーバーヘッドは CPU 最大 1.7%、メモリ 0.4〜1.2%と低い。
- **OSS**: https://github.com/cache-ext/cache_ext で cache_ext・[[cachestream]]・全方針を公開。
## 関連
- ソース: [[@2026__TOCS__cache_ext - Customizing and Tracing the Page Cache with eBPF]]
- 概念: [[eBPF]] / [[Linuxカーネルインタフェース]]
- エンティティ: [[cachestream]] / [[sched_ext]] / [[Tal Zussman]] / [[Ioannis Zarkadas]] / [[Asaf Cidon]] / [[RocksDB]]