{
  "schemaVersion": 1,
  "slug": "dedup-restore-locality",
  "title": "Deduplication restore locality: a six-request trace",
  "summary": "Six synthetic cold-cache LRU scenarios isolate repeated container reads from unused fetched bytes. No device timings or real backup records.",
  "published": "2026-10-11",
  "updated": "2026-10-11",
  "generatedAt": "2026-10-11T19:29:16.114Z",
  "evidenceType": "synthetic-deterministic-trace",
  "license": "CC0-1.0 for Hesela's original model and rows. Cited publications retain their own rights.",
  "licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
  "sourceUrl": "https://hesela.com/analyses/deduplication-restore-fragmentation/",
  "humanPage": "https://hesela.com/analyses/deduplication-restore-fragmentation/",
  "downloadPath": "/data/datasets/dedup-restore-locality.csv",
  "codePath": "/research/dedup-restore.mjs",
  "rowCount": 6,
  "method": "Process each six-request trace in order from an empty LRU container cache. A miss fetches one full 65536-byte container; a hit refreshes recency. Each request emits 4096 bytes. Count misses and multiply by container size, then divide by total emitted bytes. Three cache capacities are evaluated for each of two placements.",
  "limits": [
    "Illustrative synthetic inputs, not a sampled population or a reproduction of either paper.",
    "No timing, compression, metadata I/O, range reads, prefetching, concurrent streams, output writes or operating-system cache.",
    "The two placements hold content, request order and container inventory constant; there is no simulated ingest or deduplication ratio.",
    "No implementation of container capping, forward assembly, history-aware rewriting or garbage collection.",
    "Confidence intervals and observation periods do not apply to deterministic arithmetic."
  ],
  "columns": [
    {
      "name": "layout",
      "type": "string",
      "description": "Synthetic placement: clustered or interleaved, not a measured system."
    },
    {
      "name": "trace",
      "type": "string",
      "description": "Container IDs for requests to six distinct chunks in fixed logical order."
    },
    {
      "name": "cacheContainers",
      "type": "number",
      "description": "LRU cache capacity in whole containers; cache starts empty."
    },
    {
      "name": "cacheBytes",
      "type": "number",
      "description": "Capacity in bytes, excluding cache metadata."
    },
    {
      "name": "requests",
      "type": "number",
      "description": "Requested equal-size chunks; six in each example."
    },
    {
      "name": "uniqueContainers",
      "type": "number",
      "description": "Distinct containers referenced, not total reads."
    },
    {
      "name": "chunkBytes",
      "type": "number",
      "description": "Bytes restored per request; illustrative fixed-size input."
    },
    {
      "name": "containerBytes",
      "type": "number",
      "description": "Bytes fetched per miss; full-container read assumption."
    },
    {
      "name": "containerReads",
      "type": "number",
      "description": "Cache misses, each causing one whole-container fetch."
    },
    {
      "name": "cacheHits",
      "type": "number",
      "description": "Requests served from the modeled container cache."
    },
    {
      "name": "restoredBytes",
      "type": "number",
      "description": "Total logical output bytes; denominator of read amplification."
    },
    {
      "name": "fetchedBytes",
      "type": "number",
      "description": "Total fetched container bytes; includes unused data and rereads."
    },
    {
      "name": "readAmplification",
      "type": "number",
      "description": "Fetched bytes / restored bytes, dimensionless; not a time ratio."
    }
  ],
  "citations": [
    {
      "id": "lillibridge2013",
      "title": "Mark Lillibridge, Kave Eshghi and Deepavali Bhagwat. Improving Restore Speed for Backup Systems that Use Inline Chunk-Based Deduplication. USENIX FAST 2013, pp. 183-197; sections 2-4.",
      "url": "https://www.usenix.org/system/files/conference/fast13/fast13-final124.pdf",
      "accessed": "2026-10-11"
    },
    {
      "id": "fu2014",
      "title": "Min Fu, Dan Feng, Yu Hua, Xubin He, Zuoning Chen, Wen Xia, Fangting Huang and Qing Liu. Accelerating Restore and Garbage Collection in Deduplication-based Backup Systems via Exploiting Historical Information. USENIX ATC 2014, pp. 181-192; sections 3-6.",
      "url": "https://www.usenix.org/system/files/conference/atc14/atc14-paper-fu_min.pdf",
      "accessed": "2026-10-11"
    }
  ],
  "artifacts": {
    "modelSha256": "1df9b7cd7a74eaabbe560a81b2cd57382f521feb24aae723c35e7a4f68ee1626",
    "csvSha256": "b55517e76439f8ca6504bf8f9d177cf9b2ad629e266de40807cbb56074d19415"
  },
  "rows": [
    {
      "layout": "clustered",
      "trace": "AABBCC",
      "cacheContainers": 1,
      "cacheBytes": 65536,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 3,
      "cacheHits": 3,
      "restoredBytes": 24576,
      "fetchedBytes": 196608,
      "readAmplification": 8
    },
    {
      "layout": "clustered",
      "trace": "AABBCC",
      "cacheContainers": 2,
      "cacheBytes": 131072,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 3,
      "cacheHits": 3,
      "restoredBytes": 24576,
      "fetchedBytes": 196608,
      "readAmplification": 8
    },
    {
      "layout": "clustered",
      "trace": "AABBCC",
      "cacheContainers": 3,
      "cacheBytes": 196608,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 3,
      "cacheHits": 3,
      "restoredBytes": 24576,
      "fetchedBytes": 196608,
      "readAmplification": 8
    },
    {
      "layout": "interleaved",
      "trace": "ABCABC",
      "cacheContainers": 1,
      "cacheBytes": 65536,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 6,
      "cacheHits": 0,
      "restoredBytes": 24576,
      "fetchedBytes": 393216,
      "readAmplification": 16
    },
    {
      "layout": "interleaved",
      "trace": "ABCABC",
      "cacheContainers": 2,
      "cacheBytes": 131072,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 6,
      "cacheHits": 0,
      "restoredBytes": 24576,
      "fetchedBytes": 393216,
      "readAmplification": 16
    },
    {
      "layout": "interleaved",
      "trace": "ABCABC",
      "cacheContainers": 3,
      "cacheBytes": 196608,
      "requests": 6,
      "uniqueContainers": 3,
      "chunkBytes": 4096,
      "containerBytes": 65536,
      "containerReads": 3,
      "cacheHits": 3,
      "restoredBytes": 24576,
      "fetchedBytes": 196608,
      "readAmplification": 8
    }
  ]
}
