{
  "slug": "multi-gen-lru",
  "term": "Multi-Gen LRU",
  "aliases": [
    "MGLRU",
    "multigenerational LRU"
  ],
  "definition": "Multi-Gen LRU is a Linux page-reclaim implementation that groups evictable pages by approximate access recency and uses refault feedback to guide protection.",
  "note": "In Linux v6.12, generations group similar recency while tiers distinguish repeated file-descriptor accesses; tiers are not separate LRU lists. This is not an exact per-reference LRU ordering. [mglru-design]\n\nThe min_ttl_ms option protects a recent working set, but insufficient memory can trigger the OOM killer; zero disables this option. It is not a per-file retention promise. [mglru-admin]\n\nThe experimental debugfs histogram is noncumulative and scoped by memory cgroup and NUMA node. Counts are estimated pages, not bytes or request counts. [mglru-admin]\n\nThe workingset_refault function dispatches to lru_gen_refault when MGLRU is enabled, before the classic refault-distance path. Do not apply the classic formula indiscriminately. [mglru-workingset]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Version-pinned source interpretation, not a workload benchmark or a claim that every Linux installation enables MGLRU.",
      "citationIds": [
        "mglru-admin"
      ]
    }
  ],
  "related": [
    "linux-refault-distance",
    "page-cache",
    "clock-pro",
    "reuse-distance"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-09",
  "citations": [
    {
      "id": "mglru-design",
      "title": "Linux v6.12: Multi-Gen LRU design, workflow and working-set protection.",
      "url": "https://docs.kernel.org/6.12/mm/multigen_lru.html",
      "accessed": "2026-11-09"
    },
    {
      "id": "mglru-admin",
      "title": "Linux v6.12: Multi-Gen LRU administration, runtime options and noncumulative working-set histograms.",
      "url": "https://docs.kernel.org/6.12/admin-guide/mm/multigen_lru.html",
      "accessed": "2026-11-09"
    },
    {
      "id": "mglru-workingset",
      "title": "Linux v6.12 mm/workingset.c: workingset_refault dispatches separately to lru_gen_refault.",
      "url": "https://github.com/torvalds/linux/blob/v6.12/mm/workingset.c",
      "accessed": "2026-11-09"
    },
    {
      "id": "hesela",
      "title": "Hesela: Linux reclaim is not an exact LRU trace.",
      "url": "https://hesela.com/analyses/sieve-cache-eviction-traces/#mglru",
      "accessed": "2026-11-09"
    }
  ],
  "provenance": [
    "Primary-source synthesis for Linux v6.12; no memory-pressure experiment or runtime configuration change."
  ]
}
