{
  "slug": "cache-ext",
  "term": "cache_ext",
  "aliases": [
    "cachebpf",
    "Custom Page Cache Eviction Policies with eBPF"
  ],
  "definition": "cache_ext is a research framework for application-specific Linux page-cache eviction and admission policies implemented with eBPF.",
  "note": "Policy functions operate on eviction lists and use application information to choose cache contents. Policies are scoped to cgroups; this is not a separate private copy of every file page. [cache-ext-paper]\n\nThe artifact requires a modified Linux 6.6.8 kernel, supporting BPF tools and application components. Avoiding further kernel edits when writing a policy does not remove that prerequisite. This artifact is not an installation recipe for an unmodified distribution kernel. [cache-ext-artifact]\n\nThe 2026 presentation still identifies live policy switching and cgroup lifetime management as open questions. Policy isolation is not a guarantee of latency, fairness or durable writes. [cache-ext-talk]",
  "advantages": [
    {
      "text": "Lets applications supply information about foreground reads and background scans to cache policy.",
      "citationIds": [
        "cache-ext-talk"
      ]
    }
  ],
  "limitations": [
    {
      "text": "Reported gains depend on the selected workload and policy, not a universal cache speedup.",
      "citationIds": [
        "cache-ext-talk"
      ]
    },
    {
      "text": "Reproducing the artifact needs its patched-kernel environment.",
      "citationIds": [
        "cache-ext-artifact"
      ]
    }
  ],
  "related": [
    "page-cache",
    "cache-pollution",
    "cache-admission",
    "sieve-eviction",
    "s3-fifo",
    "posix-fadv-dontneed"
  ],
  "citations": [
    {
      "id": "cache-ext-paper",
      "title": "Zussman et al. cache_ext: Customizing the Page Cache with eBPF. SOSP 2025, pp. 462-478; sections 4-6. DOI 10.1145/3731569.3764820.",
      "url": "https://www.asafcidon.com/uploads/5/9/7/0/59701649/cache_ext.pdf",
      "accessed": "2026-11-09"
    },
    {
      "id": "cache-ext-artifact",
      "title": "cache_ext artifact README at commit 6c3b8a0: patched Linux 6.6.8, components and reproduction setup.",
      "url": "https://github.com/cache-ext/cache_ext/blob/6c3b8a0df790c3182a4f6cab33f3e4db23d6f813/README.md",
      "accessed": "2026-11-09"
    },
    {
      "id": "cache-ext-talk",
      "title": "Cheng et al. cache_ext, LSF/MM/BPF 2026 slides: per-cgroup hooks, workload separation and open integration questions.",
      "url": "https://talzussman.com/slides/cache_ext_lsfmm2026.pdf",
      "accessed": "2026-11-09"
    },
    {
      "id": "hesela-cache-ext",
      "title": "Hesela: cache_ext prerequisites and the GET/SCAN trade-off.",
      "url": "https://hesela.com/analyses/sieve-cache-eviction-traces/#cache-ext",
      "accessed": "2026-11-09"
    }
  ],
  "status": "research",
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-09",
  "provenance": [
    "Source synthesis, not a Hesela kernel benchmark or reproduction of the authors' experiment.",
    "The February 2025 preprint used cachebpf; the SOSP 2025 publication and artifact use cache_ext. One identity retains both search names.",
    "Pinned artifact commit 6c3b8a0df790c3182a4f6cab33f3e4db23d6f813. No kernel or benchmark installation was performed."
  ]
}
