{"data":{"id":"10.5281/zenodo.18136656","type":"dois","attributes":{"doi":"10.5281/zenodo.18136656","prefix":"10.5281","suffix":"zenodo.18136656","identifiers":[],"alternateIdentifiers":[],"creators":[{"name":"Ramadhan, Agung Rahmat","nameType":"Personal","givenName":"Agung Rahmat","familyName":"Ramadhan","nameIdentifiers":[],"affiliation":[]},{"name":"Yoo, Sehwan","nameType":"Personal","givenName":"Sehwan","familyName":"Yoo","nameIdentifiers":[],"affiliation":[]},{"name":"Choi, Jongmoo","nameType":"Personal","givenName":"Jongmoo","familyName":"Choi","nameIdentifiers":[],"affiliation":[]}],"titles":[{"title":"CAPSULE: A Storage Prefetcher Harnessing Spatio-Temporal Locality for Cloud-Scale Workloads"}],"publisher":"Zenodo","container":{},"publicationYear":2026,"subjects":[],"contributors":[],"dates":[{"date":"2026-01-03","dateType":"Issued"}],"language":null,"types":{"ris":"COMP","bibtex":"misc","citeproc":"article","schemaOrg":"SoftwareSourceCode","resourceType":"","resourceTypeGeneral":"Software"},"relatedIdentifiers":[{"relationType":"HasVersion","relatedIdentifier":"10.5281/zenodo.18136657","relatedIdentifierType":"DOI"}],"relatedItems":[],"sizes":[],"formats":[],"version":"v1.0","rightsList":[{"rights":"GNU General Public License v3.0 or later","rightsUri":"https://www.gnu.org/licenses/gpl-3.0-standalone.html","schemeUri":"https://spdx.org/licenses/","rightsIdentifier":"gpl-3.0+","rightsIdentifierScheme":"SPDX"}],"descriptions":[{"description":"This artifact contains the implementation of CAPSULE: A Storage Prefetcher Harnessing Spatio-Temporal Locality for Cloud-Scale Workloads. It also includes baseline cache policies (LRU, LFU, ARC, Belady, CACHEUS) and prefetching schemes (PG, OBL, and Mithril), all integrated into the libCacheSim simulator.\n\nThis artifact corresponds to the version used in the ACM SIGMETRICS 2026 camera-ready submission (January 2026).\n\nTable of Contents\n\n\n\nRequirements\n\nBuilding the Simulator\n\nRunning Experiments\n\n\n\nCAPSULE\n\nMithril\n\nLRU\n\n\n\nArtifact Contents\n\nAcknowledgments\n\nLicense\n\nContact\n\n\nRequirements\n\n\n\nOS: Linux (tested on Ubuntu 18.04)\n\nCompiler: gcc or clang\n\nBuild system:\n\n\n\ncmake (version 3.12 or higher)\n\n\n\nTools:\n\n\n\nmake\n\nzstd (for compressed trace support)\n\n\n\nLibraries:\n\n\n\nlibaio (for I/O operations)\n\n\n\nOptional: Detailed installation instructions are available in doc/install.md\n\n\nBuilding the Simulator\n\n\n\nmkdir _build\ncd _build\ncmake ..\nmake -j$(nproc)\ncd ..\n\n\nThis compiles the cachesim binary under _build/bin/.\n\nRunning Experiments\n\nYou can run the simulator with different workloads, cache sizes, and prefetching algorithms.Below we provide an example using the OracleGeneral workload from the CloudPhysics dataset.\n\nDownload Dataset\n\nWorkload traces can be obtained from the public cache dataset repository:\n\n\n\nhttps://github.com/cacheMon/cache_dataset\n\n\nFor example, download the w25.oracleGeneral.bin.zst trace:\n\n\n\nwget -P data https://cache-datasets.s3.amazonaws.com/cache_dataset_oracleGeneral/2015_cloudphysics/w25.oracleGeneral.bin.zst\n\n\nRun CAPSULE\n\n\n\n./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB --prefetch=CAPSULE\n\n\nAdvanced\n\n\n\n./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral \u003ceviction\u003e 256MB \\\n  --prefetch=CAPSULE \\\n  --fixed=0 \\\n  --adaptive=true \\\n  --neighbor=false \\\n  --io=false \\\n  --max-prefetch=100 \\\n  --max-metadata=0.1\n\n\nParameters:\n\n\n\n\u003ceviction\u003e: Set eviction policy (lru, lfu, arc, belady, cacheus, etc).\n\n--prefetch: Set prefetching policy (OBL, PG, Mithril, or CAPSULE).\n\n--fixed: Set 0 for adaptive epsilon, set with \u003e 0 for fixed epsilon\n\n--adaptive: Set true for adaptive epsilon, set false for fixed epsilon\n\n--neighbor: Set true or false to enable or disable neighbor prefetching\n\n--io: Run with real I/O simulation\n\n--max-prefetch: Set max number of prefetched blocks per trigger.\n\n--max-metadata: Fraction (0–1) of cache dedicated to CAPSULE metadata. default 0.1 (10%)\n\n\n \n\nRun Mithril\n\n\n\n./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB --prefetch=Mithril\n\n\n \n\nRun LRU (No prefetcher)\n\n\n\n./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB\n\n\n \n\nArtifact Contents\n\n├── doc/                    # Documentation\n├── ioblazer/               # I/O workload utilities\n├── libCacheSim/            # Cache simulator core and CAPSULE code\n├── test/                   # Test cases and validation scripts\n└── README.md               # Artifact documentation\n\n \n\nAcknowledgments\n\nThis simulator is based on the excellent work by libCacheSim, a lightweight caching simulation framework.\n\nIf you use this artifact, please also consider citing their project. We extend this framework with our proposed prefetching method (CAPSULE) for experimental evaluation.\n\n \n\nLicense\n\nThis artifact is released under the GNU General Public License v3.0 (GPLv3).\n\nThis work extends the libCacheSim framework, which is also licensed under GPLv3. All original license notices are preserved.\n\n \n\nContact\n\nFor questions or issues related to this artifact, please use the discussion or comment feature on the Zenodo record.","descriptionType":"Abstract"}],"geoLocations":[],"fundingReferences":[],"xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTI4MS9aRU5PRE8uMTgxMzY2NTY8L2lkZW50aWZpZXI+CiAgPGNyZWF0b3JzPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPlJhbWFkaGFuLCBBZ3VuZyBSYWhtYXQ8L2NyZWF0b3JOYW1lPgogICAgICA8Z2l2ZW5OYW1lPkFndW5nIFJhaG1hdDwvZ2l2ZW5OYW1lPgogICAgICA8ZmFtaWx5TmFtZT5SYW1hZGhhbjwvZmFtaWx5TmFtZT4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5Zb28sIFNlaHdhbjwvY3JlYXRvck5hbWU+CiAgICAgIDxnaXZlbk5hbWU+U2Vod2FuPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPllvbzwvZmFtaWx5TmFtZT4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5DaG9pLCBKb25nbW9vPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5Kb25nbW9vPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkNob2k8L2ZhbWlseU5hbWU+CiAgICA8L2NyZWF0b3I+CiAgPC9jcmVhdG9ycz4KICA8dGl0bGVzPgogICAgPHRpdGxlPkNBUFNVTEU6IEEgU3RvcmFnZSBQcmVmZXRjaGVyIEhhcm5lc3NpbmcgU3BhdGlvLVRlbXBvcmFsIExvY2FsaXR5IGZvciBDbG91ZC1TY2FsZSBXb3JrbG9hZHM8L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXI+WmVub2RvPC9wdWJsaXNoZXI+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDI2PC9wdWJsaWNhdGlvblllYXI+CiAgPHJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVHZW5lcmFsPSJTb2Z0d2FyZSIvPgogIDxkYXRlcz4KICAgIDxkYXRlIGRhdGVUeXBlPSJJc3N1ZWQiPjIwMjYtMDEtMDM8L2RhdGU+CiAgPC9kYXRlcz4KICA8cmVsYXRlZElkZW50aWZpZXJzPgogICAgPHJlbGF0ZWRJZGVudGlmaWVyIHJlbGF0ZWRJZGVudGlmaWVyVHlwZT0iRE9JIiByZWxhdGlvblR5cGU9Ikhhc1ZlcnNpb24iPjEwLjUyODEvemVub2RvLjE4MTM2NjU3PC9yZWxhdGVkSWRlbnRpZmllcj4KICA8L3JlbGF0ZWRJZGVudGlmaWVycz4KICA8c2l6ZXMvPgogIDxmb3JtYXRzLz4KICA8dmVyc2lvbj52MS4wPC92ZXJzaW9uPgogIDxyaWdodHNMaXN0PgogICAgPHJpZ2h0cyByaWdodHNVUkk9Imh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC1zdGFuZGFsb25lLmh0bWwiIHJpZ2h0c0lkZW50aWZpZXI9ImdwbC0zLjAtb3ItbGF0ZXIiIHJpZ2h0c0lkZW50aWZpZXJTY2hlbWU9InNwZHgiPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYzLjAgb3IgbGF0ZXI8L3JpZ2h0cz4KICA8L3JpZ2h0c0xpc3Q+CiAgPGRlc2NyaXB0aW9ucz4KICAgIDxkZXNjcmlwdGlvbiBkZXNjcmlwdGlvblR5cGU9IkFic3RyYWN0Ij5UaGlzIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBDQVBTVUxFOiBBIFN0b3JhZ2UgUHJlZmV0Y2hlciBIYXJuZXNzaW5nIFNwYXRpby1UZW1wb3JhbCBMb2NhbGl0eSBmb3IgQ2xvdWQtU2NhbGUgV29ya2xvYWRzLiBJdCBhbHNvIGluY2x1ZGVzIGJhc2VsaW5lIGNhY2hlIHBvbGljaWVzIChMUlUsIExGVSwgQVJDLCBCZWxhZHksIENBQ0hFVVMpIGFuZCBwcmVmZXRjaGluZyBzY2hlbWVzIChQRywgT0JMLCBhbmQgTWl0aHJpbCksIGFsbCBpbnRlZ3JhdGVkIGludG8gdGhlIGxpYkNhY2hlU2ltIHNpbXVsYXRvci4KClRoaXMgYXJ0aWZhY3QgY29ycmVzcG9uZHMgdG8gdGhlIHZlcnNpb24gdXNlZCBpbiB0aGUgQUNNIFNJR01FVFJJQ1MgMjAyNiBjYW1lcmEtcmVhZHkgc3VibWlzc2lvbiAoSmFudWFyeSAyMDI2KS4KClRhYmxlIG9mIENvbnRlbnRzCgoKClJlcXVpcmVtZW50cwoKQnVpbGRpbmcgdGhlIFNpbXVsYXRvcgoKUnVubmluZyBFeHBlcmltZW50cwoKCgpDQVBTVUxFCgpNaXRocmlsCgpMUlUKCgoKQXJ0aWZhY3QgQ29udGVudHMKCkFja25vd2xlZGdtZW50cwoKTGljZW5zZQoKQ29udGFjdAoKClJlcXVpcmVtZW50cwoKCgpPUzogTGludXggKHRlc3RlZCBvbiBVYnVudHUgMTguMDQpCgpDb21waWxlcjogZ2NjIG9yIGNsYW5nCgpCdWlsZCBzeXN0ZW06CgoKCmNtYWtlICh2ZXJzaW9uIDMuMTIgb3IgaGlnaGVyKQoKCgpUb29sczoKCgoKbWFrZQoKenN0ZCAoZm9yIGNvbXByZXNzZWQgdHJhY2Ugc3VwcG9ydCkKCgoKTGlicmFyaWVzOgoKCgpsaWJhaW8gKGZvciBJL08gb3BlcmF0aW9ucykKCgoKT3B0aW9uYWw6IERldGFpbGVkIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiBkb2MvaW5zdGFsbC5tZAoKCkJ1aWxkaW5nIHRoZSBTaW11bGF0b3IKCgoKbWtkaXIgX2J1aWxkCmNkIF9idWlsZApjbWFrZSAuLgptYWtlIC1qJChucHJvYykKY2QgLi4KCgpUaGlzIGNvbXBpbGVzIHRoZSBjYWNoZXNpbSBiaW5hcnkgdW5kZXIgX2J1aWxkL2Jpbi8uCgpSdW5uaW5nIEV4cGVyaW1lbnRzCgpZb3UgY2FuIHJ1biB0aGUgc2ltdWxhdG9yIHdpdGggZGlmZmVyZW50IHdvcmtsb2FkcywgY2FjaGUgc2l6ZXMsIGFuZCBwcmVmZXRjaGluZyBhbGdvcml0aG1zLkJlbG93IHdlIHByb3ZpZGUgYW4gZXhhbXBsZSB1c2luZyB0aGUgT3JhY2xlR2VuZXJhbCB3b3JrbG9hZCBmcm9tIHRoZSBDbG91ZFBoeXNpY3MgZGF0YXNldC4KCkRvd25sb2FkIERhdGFzZXQKCldvcmtsb2FkIHRyYWNlcyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgcHVibGljIGNhY2hlIGRhdGFzZXQgcmVwb3NpdG9yeToKCgoKaHR0cHM6Ly9naXRodWIuY29tL2NhY2hlTW9uL2NhY2hlX2RhdGFzZXQKCgpGb3IgZXhhbXBsZSwgZG93bmxvYWQgdGhlIHcyNS5vcmFjbGVHZW5lcmFsLmJpbi56c3QgdHJhY2U6CgoKCndnZXQgLVAgZGF0YSBodHRwczovL2NhY2hlLWRhdGFzZXRzLnMzLmFtYXpvbmF3cy5jb20vY2FjaGVfZGF0YXNldF9vcmFjbGVHZW5lcmFsLzIwMTVfY2xvdWRwaHlzaWNzL3cyNS5vcmFjbGVHZW5lcmFsLmJpbi56c3QKCgpSdW4gQ0FQU1VMRQoKCgouL19idWlsZC9iaW4vY2FjaGVzaW0gLi9kYXRhL3cyNS5vcmFjbGVHZW5lcmFsLmJpbi56c3Qgb3JhY2xlR2VuZXJhbCBscnUgMjU2TUIgLS1wcmVmZXRjaD1DQVBTVUxFCgoKQWR2YW5jZWQKCgoKLi9fYnVpbGQvYmluL2NhY2hlc2ltIC4vZGF0YS93MjUub3JhY2xlR2VuZXJhbC5iaW4uenN0IG9yYWNsZUdlbmVyYWwgJmx0O2V2aWN0aW9uJmd0OyAyNTZNQiBcCiAgLS1wcmVmZXRjaD1DQVBTVUxFIFwKICAtLWZpeGVkPTAgXAogIC0tYWRhcHRpdmU9dHJ1ZSBcCiAgLS1uZWlnaGJvcj1mYWxzZSBcCiAgLS1pbz1mYWxzZSBcCiAgLS1tYXgtcHJlZmV0Y2g9MTAwIFwKICAtLW1heC1tZXRhZGF0YT0wLjEKCgpQYXJhbWV0ZXJzOgoKCgombHQ7ZXZpY3Rpb24mZ3Q7OiBTZXQgZXZpY3Rpb24gcG9saWN5IChscnUsIGxmdSwgYXJjLCBiZWxhZHksIGNhY2hldXMsIGV0YykuCgotLXByZWZldGNoOiBTZXQgcHJlZmV0Y2hpbmcgcG9saWN5IChPQkwsIFBHLCBNaXRocmlsLCBvciBDQVBTVUxFKS4KCi0tZml4ZWQ6IFNldCAwIGZvciBhZGFwdGl2ZSBlcHNpbG9uLCBzZXQgd2l0aCAmZ3Q7IDAgZm9yIGZpeGVkIGVwc2lsb24KCi0tYWRhcHRpdmU6IFNldCB0cnVlIGZvciBhZGFwdGl2ZSBlcHNpbG9uLCBzZXQgZmFsc2UgZm9yIGZpeGVkIGVwc2lsb24KCi0tbmVpZ2hib3I6IFNldCB0cnVlIG9yIGZhbHNlIHRvIGVuYWJsZSBvciBkaXNhYmxlIG5laWdoYm9yIHByZWZldGNoaW5nCgotLWlvOiBSdW4gd2l0aCByZWFsIEkvTyBzaW11bGF0aW9uCgotLW1heC1wcmVmZXRjaDogU2V0IG1heCBudW1iZXIgb2YgcHJlZmV0Y2hlZCBibG9ja3MgcGVyIHRyaWdnZXIuCgotLW1heC1tZXRhZGF0YTogRnJhY3Rpb24gKDDigJMxKSBvZiBjYWNoZSBkZWRpY2F0ZWQgdG8gQ0FQU1VMRSBtZXRhZGF0YS4gZGVmYXVsdCAwLjEgKDEwJSkKCgrCoAoKUnVuIE1pdGhyaWwKCgoKLi9fYnVpbGQvYmluL2NhY2hlc2ltIC4vZGF0YS93MjUub3JhY2xlR2VuZXJhbC5iaW4uenN0IG9yYWNsZUdlbmVyYWwgbHJ1IDI1Nk1CIC0tcHJlZmV0Y2g9TWl0aHJpbAoKCsKgCgpSdW4gTFJVIChObyBwcmVmZXRjaGVyKQoKCgouL19idWlsZC9iaW4vY2FjaGVzaW0gLi9kYXRhL3cyNS5vcmFjbGVHZW5lcmFsLmJpbi56c3Qgb3JhY2xlR2VuZXJhbCBscnUgMjU2TUIKCgrCoAoKQXJ0aWZhY3QgQ29udGVudHMKCuKUnOKUgOKUgCBkb2MvICAgICAgICAgICAgICAgICAgICAjIERvY3VtZW50YXRpb24K4pSc4pSA4pSAIGlvYmxhemVyLyAgICAgICAgICAgICAgICMgSS9PIHdvcmtsb2FkIHV0aWxpdGllcwrilJzilIDilIAgbGliQ2FjaGVTaW0vICAgICAgICAgICAgIyBDYWNoZSBzaW11bGF0b3IgY29yZSBhbmQgQ0FQU1VMRSBjb2RlCuKUnOKUgOKUgCB0ZXN0LyAgICAgICAgICAgICAgICAgICAjIFRlc3QgY2FzZXMgYW5kIHZhbGlkYXRpb24gc2NyaXB0cwrilJTilIDilIAgUkVBRE1FLm1kICAgICAgICAgICAgICAgIyBBcnRpZmFjdCBkb2N1bWVudGF0aW9uCgrCoAoKQWNrbm93bGVkZ21lbnRzCgpUaGlzIHNpbXVsYXRvciBpcyBiYXNlZCBvbiB0aGUgZXhjZWxsZW50IHdvcmsgYnkgbGliQ2FjaGVTaW0sIGEgbGlnaHR3ZWlnaHQgY2FjaGluZyBzaW11bGF0aW9uIGZyYW1ld29yay4KCklmIHlvdSB1c2UgdGhpcyBhcnRpZmFjdCwgcGxlYXNlIGFsc28gY29uc2lkZXIgY2l0aW5nIHRoZWlyIHByb2plY3QuIFdlIGV4dGVuZCB0aGlzIGZyYW1ld29yayB3aXRoIG91ciBwcm9wb3NlZCBwcmVmZXRjaGluZyBtZXRob2QgKENBUFNVTEUpIGZvciBleHBlcmltZW50YWwgZXZhbHVhdGlvbi4KCsKgCgpMaWNlbnNlCgpUaGlzIGFydGlmYWN0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2My4wIChHUEx2MykuCgpUaGlzIHdvcmsgZXh0ZW5kcyB0aGUgbGliQ2FjaGVTaW0gZnJhbWV3b3JrLCB3aGljaCBpcyBhbHNvIGxpY2Vuc2VkIHVuZGVyIEdQTHYzLiBBbGwgb3JpZ2luYWwgbGljZW5zZSBub3RpY2VzIGFyZSBwcmVzZXJ2ZWQuCgrCoAoKQ29udGFjdAoKRm9yIHF1ZXN0aW9ucyBvciBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGFydGlmYWN0LCBwbGVhc2UgdXNlIHRoZSBkaXNjdXNzaW9uIG9yIGNvbW1lbnQgZmVhdHVyZSBvbiB0aGUgWmVub2RvIHJlY29yZC48L2Rlc2NyaXB0aW9uPgogIDwvZGVzY3JpcHRpb25zPgo8L3Jlc291cmNlPgo=","url":"https://zenodo.org/doi/10.5281/zenodo.18136656","contentUrl":null,"metadataVersion":0,"schemaVersion":"http://datacite.org/schema/kernel-4","source":"api","isActive":true,"state":"findable","reason":null,"viewCount":0,"viewsOverTime":[],"downloadCount":0,"downloadsOverTime":[],"referenceCount":0,"citationCount":0,"citationsOverTime":[],"partCount":0,"partOfCount":0,"versionCount":1,"versionOfCount":0,"created":"2026-01-05T01:46:44.000Z","registered":"2026-01-05T01:46:44.000Z","published":"2026","updated":"2026-01-06T00:47:05.000Z"},"relationships":{"client":{"data":{"id":"cern.zenodo","type":"clients"}},"provider":{"data":{"id":"cern","type":"providers"}},"media":{"data":{"id":"10.5281/zenodo.18136656","type":"media"}},"references":{"data":[]},"citations":{"data":[]},"parts":{"data":[]},"partOf":{"data":[]},"versions":{"data":[{"id":"10.5281/zenodo.18136657","type":"dois"}]},"versionOf":{"data":[]}}}}