A source-linked inventory of who, outside this project, uses libCacheSim. Every entry quotes the sentence in a primary source that supports it and links to that source. Entries without a checkable source do not appear.
| Census version | 1.2.0 |
| Census date | 2026-08-13 |
| Repository snapshot | develop @ dc80ebf; latest release v0.3.5 (2026-03-15) |
| Canonical location | doc/adoption.md |
Scope. A work is listed if a primary source shows it builds on, bundles, forks, distributes, or runs libCacheSim. Quotations were matched against raw source text — not a summary — and every GitHub link is pinned to a commit so a later upstream edit cannot strand a quotation. The only alterations made to a quotation are closing up line breaks where the source wraps a sentence across two lines of a comment or a PDF, and marking omitted words with an ellipsis.
First-party work is excluded. libCacheSim's own papers and artifacts — the OSDI '20 paper that introduced the simulator, GL-Cache, S3-FIFO, SIEVE, QD-LP, S4-FIFO, Lazy Promotion, Clock2Q+, and Juncheng Yang's dissertation — are not entries here: they are the project, not evidence of its reach. The same rule excludes artifacts, forks, and ecosystem projects authored by the project's own members and co-authors, and the student work from the maintainer's own course (§2). Every entry below is third-party.
Not adoption. SIEVE and S3-FIFO were designed and evaluated with libCacheSim and are now reimplemented in many third-party systems. Those systems are not libCacheSim users. They, and work that borrows only the trace format or an algorithm implementation, are recorded in §5 and counted separately.
| Work | Venue | Evidence | Source |
|---|---|---|---|
| Writeback Modeling: Theory and Application to Zipfian Workloads — Smith, Ding (Rochester), Byrne (Michigan Tech) | MEMSYS '21 | "The simulator is based on libCacheSim [36] written in C++ compiled with g++ 5.4 (-O3)." The earliest third-party use in this edition. | PDF, DOI |
| FLOWS: Balanced MRC Profiling for Heterogeneous Object-Size Cache — Guo, Wang, Zhou (HUST), Jiang (UT Arlington), Han, Xing (Tencent) | EuroSys '24 | "To simulate the cache environment, we employ libCachesim [3] … We have extended libCachesim to incorporate additional features such as cache size adjustment, MRC generation, and cache instance balancing." Its first author later upstreamed that capability as mrcProfiler (PR #136, merged, +2,488 lines), writing "I have tested mrcProfiler with twitter trace cluster52.oracleGeneral.sample10, and the results are as follows:" |
author copy, DOI |
| ScaleOPT: A Scalable Optimal Page Replacement Policy Simulator — Han, Lee, Son (Chung-Ang University) | POMACS 8(3) / SIGMETRICS '25 | Benchmarked against it: "ScaleOPT improves the simulation time by up to 6.3×, 7.7×, 20.5×, and 13.9× compared with … two widely-used cache simulators (webcachesim and libCacheSim)." From the publisher-deposited abstract; full text paywalled. | DOI, Crossref |
| Incremental Least-Recently-Used Algorithm: Good, Robust, and Predictable Performance — Zhang, Chen, Cai (Sun Yat-sen University), Lui (CUHK) | IEEE TMC 24(7), 2025 | "Our trace-driven simulations utilize libCacheSim[54]," — file caching for mobile edge computing, with reference [54] pointing at this repository: "Libcachesim: A high-performance library for building cache simulators". No artifact was released. Paywalled at IEEE; verified from the author copy. | author copy, DOI |
| CAPSULE: A Storage Prefetcher Harnessing Spatio-Temporal Locality for Cloud-Scale Workloads — Ramadhan, Yoo, Choi (Dankook University) | POMACS 10(1) / SIGMETRICS '26 | Artifact record: "This work extends the libCacheSim framework, which is also licensed under GPLv3." Its tree is laid out as "libCacheSim/ # Cache simulator core and CAPSULE code", and its baselines are "prefetching schemes (PG, OBL, and Mithril), all integrated into the libCacheSim simulator" — the prefetch module an outside contributor added upstream (§3). The Zenodo record has since been withdrawn (HTTP 410); the deposited description survives at DataCite. | DOI, artifact DOI, DataCite record |
| Linear Elastic Caching via Ski Rental — Kumar, Lipcon, Purohit, Sarlos (Google) | CIDR '25 | "We implemented our ski rental based algorithms in libCacheSim [1]." The resulting policy — not libCacheSim itself — is reported as deployed in Spanner. | CIDR |
| 3L-Cache: Low Overhead and Precise Learning-based Eviction Policy for Caches — Zhou, Niu, Xiong, Fang, Wang (BJUT; Microsoft Research) | FAST '25 | "3L Cache is implemented in the [libCacheSim] library"; the repository is "Forked from LibCacheSim, which is a platform for cache evaluation". The algorithm was later upstreamed here. A second, anonymised copy exists for double-blind review, carrying the same sentence. | optiq-lab/3L-Cache, USENIX, issue #119, 3LCache/, admin333-paper/3L-Cache |
| Merlin: An Efficient Adaptive Cache Eviction Algorithm via Fine-Grained Characterization — Li, Guo, Fan, Wu, Zhang, Wang, Luo, Zhou (Peking University), Wang (Michigan Tech), Tamir (UCLA) | OSDI '26 | "We implemented Merlin in both CacheLib [11] … and libCacheSim [2]"; hit rates are evaluated in libCacheSim and flash-friendliness "on an extension of libCacheSim". The authors state they "contributed … an implementation of CAR to libCacheSim" — their claim; CAR.c ships here, but the merged CAR contribution in this repository's tracker is PR #131, by someone else. |
USENIX |
| Man-Made Heuristics Are Dead. Long Live Code Generators! (PolicySmith) — Dwivedula, Saxena, Akella, Chaudhuri, Kim (UT Austin) | HotNets '25 | "Our prototype is built on libCacheSim, a high-performance web cache simulator with an event-driven interface." Its artifact wires in a fork the same organisation maintains: [submodule "webcache/libCacheSim"] … url = git@github.com:ldos-project/libcachesim.git. Three lab members' personal forks carry the LLM-in-the-loop scaffold, e.g. "// This function is a placeholder for the LLM generated code." |
ACM DL, arXiv:2510.08803, ldos-project/policysmith, DivyanshuSaxena/libCacheSim |
| Vulcan: Instance-specialized, Verifiable Systems Heuristics Through LLM-driven Search — Dwivedula, Saxena, Yadalam, Campbell, Kim, Akella (UT Austin) | arXiv, Dec 2025 | "The scaffolding, implemented on top of libCacheSim, is responsible for instantiating the queues that are a part of the topology." libCacheSim is the search loop's evaluator: "we opted to use a simulator – libcachesim [45] – which runs the newly generated heuristic and measures the object hit rate". No artifact repository has been published. |
arXiv:2512.25065 |
| MetaMuse: Algorithm Generation via Creative Ideation — Ma, Liang, Gao, Yan (Microsoft Research) | ICLR '26 | "For cache replacement, these n traces are generated by libCacheSim (Yang et al. 2020), from different Zipfian distributions." Used as the trace generator. | ICLR, arXiv:2510.03851 |
| Intent-Driven Storage Systems: From Low-Level Tuning to High-Level Understanding — Bergman, Song, Cavigelli, Berestizshevsky, Zhou, Zhang | arXiv, Oct 2025 | "We then evaluated all the traces for all policies using libcachesim (Yang et al. 2020), configured with a cache size of 0.1% of the working set." | arXiv:2510.15917 |
| DynamicAdaptiveClimb: Adaptive Cache Replacement with Dynamic Resizing — Berend, Dolev, Kogan-Sadetsky (Ben-Gurion), Kumari, Mishra, Somani (Shiv Nadar) | arXiv, Nov 2025 | "Simulator: We conduct all evaluations using libCacheSim [46], an open-source, high-performance, and extensible cache simulator widely adopted in recent caching research." The authors' repository vendors the simulator and adds AdaptiveClimb.c and DynamicAdaptiveClimb.c under its eviction directory. Its bibliography misattributes libCacheSim to other authors at a repository that does not exist, so citation-graph searches miss this paper — one reason this census is built from full text and code rather than reference lists. |
arXiv:2511.21235, Dhruv27Mishra/Adaptive-Climb |
| SCION: Size-aware Policy Orchestration for Nonstationary Object Caches — Qizhi Wang (PingCAP) | arXiv, 2026 | "We implement a trace-driven benchmark in C++ on top of libCacheSim [25]." Its prototype fetches upstream at a pinned commit and applies patches/libcachesim-scion.patch. |
arXiv:2605.01055, Icemap/SCION |
| T3-LRU: Three-Tier Hotness-Aware Concurrent Cache Eviction Algorithm — Zhang Xin et al. | Research Square preprint, 2026 | Evaluated in a fork archived as software: "rim99/libCacheSim: T3LRU Simulation … a high performance library for building cache simulators & T3-LRU simulation added". | preprint, Zenodo, rim99/libCacheSim |
Work that lives in a fork rather than in a paper. Every fork below was checked against upstream's own object graph, so a branch that merely copies an upstream branch does not appear; each row's commits are the owner's own.
| Fork | Who | What it adds | Evidence | Source |
|---|---|---|---|---|
fedorova/libCacheSim |
Alexandra (Sasha) Fedorova — MongoDB / UBC | An emulation of WiredTiger's eviction algorithm: WiredTiger.c with read-generation buckets, leaf/internal page sets and an on-demand btree walk, plus WT page fields threaded through the core structures |
"An emulation of the WiredTiger eviction algorithm for the in-memory cache." The 106 commits on the branch are authored sasha.fedorova@mongodb.com. She also filed four upstream issues while doing it, publishing her WiredTiger trace: "Here is the entire gzipped trace: https://people.ece.ubc.ca/~sasha/TMP/evict-btree.csv.gz" |
WiredTiger.c, issue #29 |
ddkkpp/libCacheSim |
dingkp — University of Science and Technology of China |
LOH, a reinforcement-learning eviction policy with a CMA-ES bridge: LOH.c plus penalty/teacher variants, actor_critic_functions.c, ~80 dated design notes and robustness plots against 3L-Cache |
"LOH (Learning-based Object Handling) 是一个结合传统启发式算法和强化学习的缓存驱逐算法。" Commits are authored dingkp@mail.ustc.edu.cn; a deleted CDN_paper/ directory indicates an unpublished paper. The same person filed five bug reports here on Meta and Wikipedia traces and fixed one, merged as PR #251 |
design note, issue #192 |
access-bits/libCacheSim |
Arunkrishna Annai Madalam Sivasubramanian — EPFL | TLB and access-bit filtering for memory tiering: four *TlbFiltered policies, four new oracle readers, a YAML configuration subsystem with 20 workload configs, and single-reader/multi-worker parallelism |
"Type 2: Belady evicts a page that is currently resident in some TLB" Commits are authored from an EPFL cluster host, annai@iccluster101.iccluster.epfl.ch |
BeladyLruTlbFiltered.c |
tzussman/libCacheSim |
Tal Zussman — Columbia University | RingLFU, a bucketed frequency policy, with a 17 KB design spec | "There are no per-item frequency counters. The bucket position is the frequency estimate. Per-item eviction metadata is 1 byte." Authored tz2294@columbia.edu. Zussman is also first author of Cache is King (§5), which ports an implementation out of libCacheSim without reporting a run of it — this fork is the group's actual use |
ring-lfu.md |
shermanjlim/libCacheSim |
Sherman Lim — Carnegie Mellon University | A DRAM-plus-flash hybrid cache (HYBRID.cpp), a MAGIC policy, a future-access admission policy, and two runnable examples |
bool is_m(const request_t *req) { return req->features[ISM_FEATURE_IDX] == 1; } — the fork drives libCacheSim's feature-carrying lcs traces, and two of his upstream fixes to that path were merged: "I think there's a typo in the conditionals when checking if we can support lcs trace for the Belady algo" |
HYBRID.cpp, PR #292 |
ouyhlan/libCacheSim |
ouyhlan |
ZGCache and ZCCache, learned caches built on LightGBM and XGBoost, plus segmented ARC and FIFO variants | #include <LightGBM/c_api.h> … #define N_MAX_TRAINING_DATA 8000 — four self-contained algorithm directories delivered as a single commit named final-version, alongside trace statistics for a Meta workload |
ZGCache.hpp |
Aryan470/libCacheSim |
Aryan Khatri | Fourteen embedding-similarity policies on a shared EmbeddingManager, with nine parameter-sensitivity and regret-analysis scripts |
"LRU with Forgiveness: A modified LRU that uses embedding-based forgiveness to protect objects with high similarity to recent accesses from eviction." | LRUForgive.cpp |
varungohil/libCacheSim |
Varun Gohil | Instrumentation for prefetcher/eviction interference, with a documented experiment and a cache-size sweep | "Prefetch → evict: a prefetched object is evicted before any demand hit (wasted prefetch / cache pollution)." Commits come from a CloudLab node whose profile is named libcachesim; this is the most recently active fork found |
experiment doc |
midsterx/libCacheSim |
midsterx |
Cost sweeps over IBM Object Storage traces on a branch named macaron_experiments, with the simulator modified to emit gib_missed and cost |
"3. We assume that libCacheSim results do not differ between running all eviction policies together vs. running them separately" and, in the setup notes, "1. Setup xgboost, install dependencies, and build libCacheSim". He also got a defaulting bug fixed upstream, having written "I am currently using this library to understand the eviction algorithms that I should be exploring." | myResults/README.txt, issue #25 |
LauYeeYu/libCacheSim |
Yiyu Liu | Compute-aware eviction (BeladyCompute.c, S3FIFOCompute.c, GDSF_compute.cpp), an LHD variant family, and an LLM-trace reader |
"LHDRequest is a new version of LHD Compute that operates on LLM request level instead of block level." He also fixed a TwoQ assertion failure upstream: "when Am is empty, an assertion failure will be encountered" | README_LHDRequest.md, PR #295 |
gws8820/2-Level-libCacheSim |
gws8820 |
A two-level cache hierarchy with independent policies and sizes per level | README: "runs in 2-Level so can set different replacement algorithm and cache size for each level." It carries the full source tree but is a re-upload rather than a GitHub fork, so it is absent from the fork network and from the arithmetic in §6 | gws8820/2-Level-libCacheSim |
Forks belonging to entries listed elsewhere are not repeated here: optiq-lab/3L-Cache,
Icemap/SCION, Dhruv27Mishra/Adaptive-Climb and rim99/libCacheSim are counted with
their papers in §1, and mbrooker/libCacheSim with its author in
§3.
Smaller forks, not counted individually. A Yale researcher's Docker/just packaging
(shsym), a Columbia researcher's 2021 work on the exec driver (yuhong-zhong), sampled
LRU and SIEVE variants (huyk18), a WATT policy from FAU Erlangen (itodnerd), a 3L-Cache
model ablation (gaurav-2408), and a hand-rolled pybind11 wrapper from Princeton
(0austinli4) that upstream's own bindings later superseded.
Excluded: the maintainer's own course. Seventeen forks carry a cs2640 branch of
student cache-competition projects — fourteen with commits of their own — — plugin-API policies, tuning sweeps, and in one case a
report reading "Does replacing S3-FIFO's hardcoded cs2640-pg0 project. This is the project teaching with its own tool, so it is first-party by
the rule above — recorded because seventeen forks is the largest single cluster in the fork
graph, and a reader counting forks will otherwise miscount it.
Use outside the publication record.
| Who | What | Evidence | Source |
|---|---|---|---|
| Ben Manes — maintainer of Caffeine | Ran libCacheSim beside Caffeine's own simulator to re-check published S3-FIFO/SIEVE results, and reported a size-accounting discrepancy back to this project | "I used libcachesim at 0f4d135 (current master) … with this patch to include the new trace formats." | issue #18 |
| Marc Brooker — engineer at Amazon Web Services | Designed a SIEVE-k variant, evaluated it here, and published his implementation as a fork | "Using the excellent open source libCacheSim I tried SIEVE-2 against SIEVE on a range of real-world traces"; "I've implemented SIEVE-k in a fork of libCacheSim." The fork carries Sieve_k.c. |
brooker.co.za, mbrooker/libCacheSim |
| The SOSP '23 Artifact Evaluation committee | Installed and ran libCacheSim to validate a submitted artifact, independently of its authors, on five different machines | Review summary, under step-by-step instructions: "Cloned and installed libCacheSim from https://github.com/1a1a11a/libCacheSim" | sysartifacts.github.io |
| L. Stampf — BSc thesis, Vrije Universiteit Amsterdam, 2025 | Compared eviction primitives on Zipf-like workloads, and fixed the macOS build upstream while doing it | "The building and execution of cache simulations was performed using the cache simulator provided by libCacheSim." Her code is published too: "The code started with a modified version of the libCacheSim codebase, but was further tinkered with to fit the needs of this work." Upstream PRs #179 and #181 were merged; #183 was not. | thesis PDF, laustam/cache-eviction-thesis |
| Rodrigo Caridad — University of Chicago | Chameleon Cloud artifact reproducing part of the SIEVE paper on bare metal, against FIFO, LRU, CLOCK and ARC baselines | The notebook builds the simulator on the provisioned node: my_server.execute("cd NSDI24-SIEVE/libCacheSim/scripts && bash install_libcachesim.sh"), and its recorded output shows the resulting binary |
Trovi, RorroArt/sieve-chameleon-repro |
| Raden Rafly Hanggaraksa Budiarto — Bandung Institute of Technology | Chameleon Cloud artifact implementing CLOCK with Adaptive Replacement, then upstreamed it as the merged CAR implementation | "Implemented the CAR (Clock with Adaptive Replacement) cache implementation on LibCacheSim"; he validated it against an independent Go implementation: "This implementation is being compared with [stfnmllr's GoCar]… My modification can be found here" | Trovi, PR #131 |
| Zirui Wang — PhD student, University of Virginia | Ran modern traces through it and asked for 64-bit object sizes | "I'm using this excellent repo, and many modern traces have large obj sizes. Would it be possible to support the uint_64 type of obj size in the next version?" | issue #69 |
system-intelligence-benchmark — suite scoring LLM-designed systems heuristics; its cache_algo_bench task scores candidate eviction policies |
Shells out to the built binary from benchmarks/cache_algo_bench/src/cache_simulator/utils.py |
command = f"""{LIBCACHSIM_PATH}/_build/bin/cachesim {cache_trace} oracleGeneral {cache_alg} {cache_cap} --ignore-obj-size 1 …""" |
sys-intelligence/system-intelligence-benchmark |
Budiarto's and Caridad's artifacts were found by scanning all 460 public Trovi artifacts. Three others there — CLOCK-Pro, AdaptSize, and an S3-FIFO reproduction — are by the project's own co-authors and are excluded as first-party; these two have no established link, which is the default when none can be shown.
Algorithms and infrastructure given back upstream by people with no project affiliation. These are counted separately from the adoption total, because contributing a feature is a different claim from adopting the tool, and for some of these rows the contribution is the only evidence there is.
| Who | Contribution | Evidence | Source |
|---|---|---|---|
Zhelong Zhao (zztaki) — Huazhong University of Science and Technology |
The entire prefetch module and its three algorithms — Mithril, OBL and PG — negotiated through the handle_find/handle_evict interface over five merged PRs. A third-party SIGMETRICS '26 paper now uses them as baselines (§1) |
"I will add the Mithril algorithm that was mentioned in the previous issue. … Based on the above, I will submit a pull request. 😀" prefetch/ ships here |
PR #17, #57, #59 |
Nathaniel Filardo (nwf-msr) — Microsoft |
Found and fixed a parameter-propagation bug in the Random policies by reading the eviction sources | "ccache_params_copy in Random.c is set but not used thereafter: … I suspect the ccache_params on line 51 wants to be ccache_params_copy instead?" |
issue #51, PR #52 |
Liu Yang (YangLiuWillow) — Yale University |
The first Rust bindings, working through bindgen's static inline limitation and filing context upstream with rust-bindgen |
"I created a new directory libcachesim-rs … With these, I write a Rust equivalent test.c file in main.rs" Closed unmerged; the design preceded the official bindings |
issue #125, YangLiuWillow/libCacheSim |
Mack Wang (mack-w) |
Took on removing the GLib dependency: audited every call site, chose a header-only hash map, and migrated the reader and MRC code | "forked repo: mack-w/libCacheSim … I checked compiled binaries and found that the majority of references to gLib are hash table functions." His fork carries include/libCacheSim/hashmap.h, a path that no commit on upstream develop has ever touched |
issue #133, mack-w/libCacheSim |
| Mohammad Elsharqawy | An implementation of MultiQueue (ATC '01) with a validation table and documented deviations from the paper | "MQ with n-queue=1 reproduces LRU exactly, as the paper predicts. Both give miss ratio 0.8299 and byte miss ratio 0.9730 on cloudPhysicsIO at 32 MiB." Open at the census date |
PR #318 |
Smaller merged fixes came from outside too — a WTinyLFU over-eviction bug found by one
reporter and fixed by two others, a CodeQL workflow, clang-tidy cleanups, and a macOS
build repair nine months before the thesis work above. Those are contributor-funnel
activity rather than evidence of independent use, so they are not listed.
The project publishing itself — reach rather than third-party adoption.
| Channel | Package | State on 2026-08-13 | Source |
|---|---|---|---|
| PyPI | libcachesim (Python bindings, cacheMon org) |
Latest 0.3.3.post4 (2026-02-17); first release 2025-07-14; 5 releases; Python ≥ 3.10 |
PyPI, cacheMon/libCacheSim-python |
| npm | libcachesim-node (in-tree at libCacheSim-node/) |
Latest 0.3.2 (2025-07-14); first publish 2025-06-18 |
npm |
| Docker Hub | 1a1a11a/libcachesim, from the repository's dockerfile |
1,014 pulls; the only libCacheSim image on Docker Hub | Docker Hub |
| GitHub Releases | source releases | 5 releases, v0.1 → v0.3.5 (2026-03-15) |
Releases |
Downloads. npm: 173 over
2025-08-10 → 2026-08-09,
a fixed window that reproduces exactly. PyPI: 1,805 over 2026-02-12 → 2026-08-11 with
mirrors=false, a point-in-time observation — pypistats
serves only a rolling ~180-day window, so that interval ages out and the number cannot be
re-derived later. The two are filtered differently and neither excludes CI traffic; treat
both as weak proxies, not user counts.
No third-party packaging exists. An exact-name lookup across the 100 registries indexed
by ecosyste.ms —
Debian, Ubuntu, Alpine, nixpkgs, Guix, Homebrew, spack, vcpkg, conan, conda-forge, AUR,
crates.io and the rest — returns exactly one row, the project's own PyPI package. Reverse
dependencies are zero everywhere checked: deps.dev returns the same
{"dependentCount":0,"directDependentCount":0,"indirectDependentCount":0} for
libcachesim on PyPI
and for
libcachesim-node on npm,
and dependent_packages_count is 0 at ecosyste.ms. Three near-misses are worth naming so they
are not mistaken for ports: proxy.golang.org
serves five versions of a
Go module synthesised from the git tags, which nothing imports (?tab=importedby is a 404)
and which cannot work, since the repository has no go.mod; the only other npm package,
@realtmxi/libcachesim-node, is a project collaborator's prototype published three days
before the in-tree package; and a Codeberg copy carrying four commits of Sphinx/Doxygen work
is the only non-GitHub forge copy found. The one true third-party redistribution is outside
package management: the T3-LRU fork in §1, archived with a DOI on
Zenodo. Software Heritage independently archives upstream, both package origins, and 34 fork
copies — five of which no longer resolve on GitHub, making the archive their only public
copy.
Borrowed implementations and trace formats. These take something from libCacheSim
without running or building on it, and count toward no total above — recorded because
oracleGeneral is becoming a de-facto interchange format for cache traces.
| Project | What it takes | Evidence | Source |
|---|---|---|---|
| Cache is King: Smart Page Eviction with eBPF — Zussman et al. (Columbia; IBM Research) | The LHD implementation, ported to eBPF | "We implement LHD using cachebpf, based on the implementation in libcachesim [69, 70, 72]." The paper shows no run of the tool; the group's SOSP '25 artifact keeps one tuning constant tied to it — "Inverse of value in libcachesim" — and its first author's own use is a fork (§2) | arXiv:2502.02750, cache-ext/cache_ext |
Pelikan cachesim (Rust) |
The binary trace formats | "cachesim can import libCacheSim's binary trace formats"; "The op column uses the same integer encoding as libCacheSim's req_op_e". Published on crates.io as cachesim-rs, described as "Cache trace simulator for cache-rs crates, with libCacheSim-compatible trace formats" |
pelikan-io/cachesim, crates.io |
| Caffeine (Java) | The trace formats | Three parser families under parser/libcachesim/, with the attribution "libCacheSim and distributed by the" cacheMon dataset project, registering LCS_TRACE, LCS_ORACLE_GENERAL, and LCS_TWITTER |
ben-manes/caffeine |
| Otter (Go) | The trace formats | A libcachesim parser package: OracleGeneralFormat = "oracleGeneral", LibcachesimCSVFormat = "libcachesimCSV" |
maypok86/otter |
| Theine (Python) | The trace format | A hand-rolled 24-byte oracleGeneral decoder over the project's own traces: path = "benchmarks/trace/cluster52.oracleGeneral.sample10.zst". Weaker than the rows above: the repository never spells libCacheSim, so the only tie is the format and the trace filenames |
Yiling-J/theine |
| go-sieve (Go) | The trace format and datasets | "We use traces from the CacheLib / libCacheSim trace" — its own mmap-based oracleGeneral reader, fed from the public trace bucket |
opencoff/go-sieve |
| s3-fifo (Rust) — Dirkjan Ochtman | libCacheSim's S3-FIFO as the normative implementation | Its README points at a specific commit and line: "C implementation: " | djc/s3-fifo |
Downstream algorithm adoption. SIEVE and S3-FIFO are reimplemented in third-party systems. Those systems do not use libCacheSim — conflating the two is the most likely way this census gets misread.
| System | Evidence | Source |
|---|---|---|
| Ceph | src/common/web_cache.h: "The implementation is based on SIEVE [0] with additional TTL", citing the NSDI '24 paper |
ceph/ceph |
| Apache Traffic Server | RamCacheS3FIFO.cc implements the algorithm from the paper and the project website, "mirroring the libCacheSim reference (S3FIFO.c)"; its NOTICE names the artifact repository as the reference implementation |
apache/trafficserver |
| TiDB | pkg/infoschema/sieve.go implements SIEVE — the file is named for the algorithm and its cache entry carries the algorithm's reference bit, "visited bool" |
pingcap/tidb |
A public code search matched the same pattern in a dozen more large projects — among them
Android's androidx, InfluxDB, Cloudflare's Pingora, Apache Pulsar and Jackrabbit Oak, and
DragonflyDB — each citing the SIEVE paper or the project website in a reimplementation, none
using the library. Those were not individually verified here and are not counted. A broader,
partly self-reported list is maintained on the
SIEVE project site.
From the GitHub API on 2026-08-13. These measure attention, not deployment.
| Signal | Value |
|---|---|
| Stars | 340 |
| Forks | 111 |
| Contributors | 36 |
| Open issues (excluding pull requests) | 21 |
| Open pull requests | 9 |
| Created | 2020-06-19 |
| License | GPL-3.0 |
The issue and PR counts are split because the API's open_issues_count field — 30 here —
sums both, and reading it as an issue count overstates the backlog.
Forks, measured rather than assumed. forks_count is 111; the API lists 109, the other
two being forks of a fork. All 111 were resolved with git ls-remote, and every branch tip
was checked for commits reachable from none of upstream's 30 branches and 244 pull-request
refs. Fifty-three carry no such commit — plain mirrors. The other fifty-eight:
| Fork group | Count |
|---|---|
| Substantive independent third-party work — the ten forks in §2 | 10 |
Smaller but genuine third-party work — a WATT policy, sampled LRU and SIEVE variants, a Rust MRC tool, Docker packaging, a pybind11 wrapper, a 3L-Cache ablation, a standalone driver, 2021 work on the exec driver |
8 |
| Tied to an entry counted elsewhere in this census, through its paper or its author | 8 |
| Project members, co-authors, and alternate accounts | 6 |
Student projects from the maintainer's course — 14 of the 17 forks that carry a cs2640 branch; the other three carry the branch with no commits of their own, so they are counted among the 53 mirrors |
14 |
| A novel tip but no novel work: stale copies of upstream branches, editor and config edits, one machine-generated Rust port, and one 0-byte "algorithm" file | 12 |
Counting pull-request refs as upstream is what makes that table honest in the other
direction: work offered upstream as a PR is reachable from refs/pull/*/head, so the GLib
removal in §3 scores zero novel commits here even
though it is absent from develop — a mirror by this measure, real work by any other.
A fork count is therefore not a user count, and the multiple depends entirely on where the threshold sits: 26 of 111 carry independent third-party work, roughly a quarter, and 10 of 111 carry substantive research work, an order of magnitude fewer. The earlier editions of this census said of forks that "almost all are dormant copies of upstream text"; that was wrong, and wrong in the direction that flatters nobody — it hid the forks that matter.
This file is revised in place, so the develop URL always resolves to the newest edition.
To cite the edition you read, pin it to a commit: open the file on GitHub and press
y, or run git log -1 --format=%H -- doc/adoption.md in a clone. Each edition's
permalink is the commit that bumped its version in the changelog below.
@techreport{libcachesim-adoption-census-2026,
title = {libCacheSim Adoption Census},
author = {{libCacheSim maintainers}},
institution = {libCacheSim project},
number = {census v1.2.0},
year = {2026},
month = aug,
% replace <commit> with the permalink of the edition you read
url = {https://github.com/1a1a11a/libCacheSim/blob/<commit>/doc/adoption.md},
note = {Census date 2026-08-13}
}dc80ebf in the header is the repository state the census describes, not a permalink for
this file — that commit does not contain it. To cite libCacheSim itself, use
references.md.
To add an entry: open a PR with the source URL, the verbatim sentence located in raw source, and the date you verified it. Bump the version and append to the changelog.
| Version | Date | Change |
|---|---|---|
| 1.2.0 | 2026-08-13 | Added 20 entries from a GitHub sweep: all 111 forks triaged against upstream's object graph, ~80 public code-search queries, the repository's own 318 issues and PRs and 7 discussions, dependency and archive graphs, the citation graphs of four papers, and the Chameleon Trovi catalogue. New: two journal papers (SIGMETRICS '26 and IEEE TMC), a third-party forks section with 11 rows including MongoDB's WiredTiger emulation, the SOSP '23 artifact-evaluation committee, 5 outside contributors, 4 trace-format borrowers, and Apache Traffic Server. Corrected the claim that forks are almost all dormant: 58 of 111 carry a commit reachable from no upstream ref, and the 58 are partitioned in §6. 34 third-party adoption entries — 15 research, 11 forks, 8 practitioner and community — plus 5 outside contributions, 4 distribution channels, 10 borrowed-implementation and downstream rows, and repository signals, each counted separately. |
| 1.1.0 | 2026-08-13 | Removed first-party entries: the section of the project's own papers and artifacts, two Chameleon artifacts by project co-authors, and the CacheBench and cache_dataset ecosystem rows. Every remaining entry is third-party. 19 entries — 13 third-party research, 6 practitioner, community, and ecosystem — plus 4 distribution channels. Repository signals refreshed. |
| 1.0.0 | 2026-08-13 | First edition. 31 entries — 8 first-party papers and artifacts, 13 third-party works, 7 practitioner and community entries, 3 ecosystem projects — of which 19 are third-party, plus 4 distribution channels. Separately recorded and not counted: the OSDI '20 paper that introduced the simulator, 4 borrowed-implementation and trace-format rows, 2 downstream algorithm adopters, and repository signals. |