{
  "slug": "sieve-eviction",
  "term": "SIEVE cache eviction",
  "aliases": [
    "SIEVE"
  ],
  "definition": "SIEVE is a cache replacement policy that retains insertion order and uses a visited bit and a moving pointer to select an unvisited eviction victim.",
  "note": "New entries start unvisited; a hit sets their bit without moving them. Eviction clears visited bits while advancing the pointer, leaving survivors in place instead of reinserting them with newcomers. [artifact]\n\nThe NSDI paper explicitly reports that SIEVE is not scan-resistant; some block-cache workloads perform worse than LRU. A web-cache result does not identify an SSD's internal policy. [paper]",
  "related": [
    "clock-replacement",
    "lru-replacement",
    "cache-pollution",
    "cache-admission"
  ],
  "citations": [
    {
      "id": "artifact",
      "title": "NSDI24-SIEVE author artifact, commit 0861f8261c37b8286a70449a1defb5a4749c72d2: Sieve.c, insertion and eviction operations.",
      "url": "https://github.com/cacheMon/NSDI24-SIEVE/blob/0861f8261c37b8286a70449a1defb5a4749c72d2/libCacheSim/libCacheSim/cache/eviction/Sieve.c",
      "accessed": "2026-10-17"
    },
    {
      "id": "paper",
      "title": "Zhang et al. SIEVE is Simpler than LRU: an Efficient Turn-Key Eviction Algorithm for Web Caches. NSDI 2024, sections 3, 4 and 7.2.",
      "url": "https://www.usenix.org/system/files/nsdi24-zhang-yazhuo.pdf",
      "accessed": "2026-10-17"
    },
    {
      "id": "hesela",
      "title": "Hesela: SIEVE/CLOCK/LRU counterexamples, eight constructed libCacheSim 0.3.5 traces, not device measurements.",
      "url": "https://hesela.com/analyses/sieve-cache-eviction-traces/",
      "accessed": "2026-10-17"
    }
  ],
  "status": "research",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17"
}
