{
  "slug": "tips",
  "term": "TIPS persistent-index framework",
  "aliases": [
    "TIPS"
  ],
  "definition": "TIPS is a persistent-memory framework that makes writes durable in an operation log before publishing them through a DRAM cache.",
  "note": "Converted indexes reside in non-volatile main memory; the DRAM cache holds newer data. UNO combines operation, undo and allocation logs with coordinated reclamation. Porting requires allocation hooks and annotations before persistent stores. [tips-paper]\n\nRange scans must reconcile pending logged operations with the backend index. At revision 386b992, scan_oplog increments a scan_violation counter but does not modify the output buffer. That function does not implement the paper's described result repair. [tips-paper] [tips-code]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Finite logs can block foreground writes when background replay falls behind.",
      "citationIds": [
        "tips-paper"
      ]
    }
  ],
  "related": [
    "recipe",
    "persistent-memory",
    "durable-linearizability",
    "crash-consistency"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-13",
  "citations": [
    {
      "id": "tips-paper",
      "title": "Krishnan et al. TIPS: Making Volatile Index Structures Persistent with DRAM-NVMM Tiering. USENIX ATC 2021, sections 3-5 and 7.",
      "url": "https://xinweifu.github.io/pubs/tips-madhav-atc21.pdf",
      "accessed": "2026-11-13"
    },
    {
      "id": "tips-code",
      "title": "TIPS source, revision 386b992: scan_oplog and tips_scan in tips-lib/src/tips.c, lines 346-393.",
      "url": "https://github.com/cosmoss-jigu/tips/blob/386b992894363b535876020d1e60aa95f3d05f7c/tips-lib/src/tips.c#L346-L393",
      "accessed": "2026-11-13"
    },
    {
      "id": "hesela-pmem",
      "title": "Hesela: TIPS durability, scan reconciliation and implementation evidence.",
      "url": "https://hesela.com/analyses/pmem-persistence-domains-dax/#tips-replay",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "Source synthesis and static inspection of revision 386b992; no prototype execution, power-cut experiment or reproduction of performance results.",
    "The paper's recovery evaluation uses SIGKILL; process termination does not test loss of unprotected CPU caches during power failure."
  ]
}
