CAPSULE: A Storage Prefetcher Harnessing Spatio-Temporal Locality for Cloud-Scale Workloads

Read full text
Authors: Agung Rahmat Ramadhan, Sehwan Yoo, Jongmoo Choi
Cited by: 0

Abstract

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. This artifact corresponds to the version used in the ACM SIGMETRICS 2026 camera-ready submission (January 2026). Table of Contents Requirements Building the Simulator Running Experiments CAPSULE Mithril LRU Artifact Contents Acknowledgments License Contact Requirements OS: Linux (tested on Ubuntu 18.04) Compiler: gcc or clang Build system: cmake (version 3.12 or higher) Tools: make zstd (for compressed trace support) Libraries: libaio (for I/O operations) Optional: Detailed installation instructions are available in doc/install.md Building the Simulator mkdir _build cd _build cmake .. make -j$(nproc) cd .. This compiles the cachesim binary under _build/bin/. Running Experiments You 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. Download Dataset Workload traces can be obtained from the public cache dataset repository: https://github.com/cacheMon/cache_dataset For example, download the w25.oracleGeneral.bin.zst trace: wget -P data https://cache-datasets.s3.amazonaws.com/cache_dataset_oracleGeneral/2015_cloudphysics/w25.oracleGeneral.bin.zst Run CAPSULE ./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB --prefetch=CAPSULE Advanced ./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral 256MB \ --prefetch=CAPSULE \ --fixed=0 \ --adaptive=true \ --neighbor=false \ --io=false \ --max-prefetch=100 \ --max-metadata=0.1 Parameters: : Set eviction policy (lru, lfu, arc, belady, cacheus, etc). --prefetch: Set prefetching policy (OBL, PG, Mithril, or CAPSULE). --fixed: Set 0 for adaptive epsilon, set with > 0 for fixed epsilon --adaptive: Set true for adaptive epsilon, set false for fixed epsilon --neighbor: Set true or false to enable or disable neighbor prefetching --io: Run with real I/O simulation --max-prefetch: Set max number of prefetched blocks per trigger. --max-metadata: Fraction (0–1) of cache dedicated to CAPSULE metadata. default 0.1 (10%) Run Mithril ./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB --prefetch=Mithril Run LRU (No prefetcher) ./_build/bin/cachesim ./data/w25.oracleGeneral.bin.zst oracleGeneral lru 256MB Artifact Contents ├── doc/ # Documentation ├── ioblazer/ # I/O workload utilities ├── libCacheSim/ # Cache simulator core and CAPSULE code ├── test/ # Test cases and validation scripts └── README.md # Artifact documentation Acknowledgments This simulator is based on the excellent work by libCacheSim, a lightweight caching simulation framework. If you use this artifact, please also consider citing their project. We extend this framework with our proposed prefetching method (CAPSULE) for experimental evaluation. License This artifact is released under the GNU General Public License v3.0 (GPLv3). This work extends the libCacheSim framework, which is also licensed under GPLv3. All original license notices are preserved. Contact For questions or issues related to this artifact, please use the discussion or comment feature on the Zenodo record.

Publication details

Journal / source
Zenodo (CERN European Organization for Nuclear Research)
Publication date
3 January 2026