Repository navigation
bench: YCSB + AI-metadata harnesses over a workload-test engine adapter layer - #79
Merged
Merged
Conversation
… adapter layer workload_test_engines.rs is a measurement-only adapter trait (get/put/ delete/scans/delimiter list/atomic batch/CAS/longest-prefix) with seven implementations — holt, RocksDB, SQLite, sled, LMDB (heed), redb and PostgreSQL (unix socket, UNNEST bulk batches) — pinned to one async- durable profile and one cache budget. Its doc comment scopes it explicitly as a workload-test interface, not an application API. ycsb.rs is a spec-faithful YCSB core port (hashed user keys, 1 KiB records, scrambled-zipfian/latest, official A,B,C,F,D then reload-E order). ai_meta.rs models the metadata plane of AI storage workloads: kvcache chain index, dataset manifest, checkpoint catalog, HF-style registry, and the s3page ListObjects-page reproduction (minio#17472 shape) whose cache-pressure numbers back #78. Results and methodology docs stay out of this change; the harnesses are self-describing via module docs and env knobs. Signed-off-by: wchwawa <wch19961116@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Three new non-published bench files under
benches/, buildable via the accompanyingCargo.toml/Cargo.lockchanges (new optional deps:redb,postgresbehind apgfeature; two new[[bench]]targets):workload_test_engines.rs— a workload-test-only engine adapter layer: one trait (get / put / delete / ordered + prefix scans / S3-style delimiter listing / atomic batch / CAS / longest-prefix) with seven implementations: holt, RocksDB, SQLite, sled, LMDB (heed), redb, PostgreSQL (unix socket; batches as single-round-trip UNNEST upserts). All engines pinned to one async-durable profile (WAL on, no per-op fsync) and one private-cache budget (HOLT_BENCH_CACHE_MB). Comparators get honest app-layer emulations (fast-forward delimiter seeks, walk/bisect longest-prefix), holt its native APIs — so every table reads as native semantics vs honest emulation. The module doc scopes it explicitly as a measurement surface, not an application interface (single-threaded, panics on error, counts-and-discards scans).ycsb.rs— spec-faithful YCSB core workloads A–F (hasheduser<fnv64>keys, 1 KiB records, scrambled-zipfian θ=0.99 / latest distributions, official run order: load, A→B→C→F→D, reload, E).ai_meta.rs— AI metadata workload suite modeling the metadata plane of the MLPerf Storage v3.0 workload set:kvcache(chained prefix-cache block index; native LPM vs walk vs bisect),manifest(dataset shard manifest),ckpt(checkpoint catalog with atomic rotate),registry(HF-style artifact registry with CAS),s3page(ListObjects 1000-prefix pages, minio#17472 shape — the reproduction whose 256 MiB vs 2 GiB numbers back Value-fetching prefix scans and longest_prefix_record fall off a cliff beyond the buffer pool (full 512 KiB frame reads on the walker path) #78).Why
Gives the repo a standard (YCSB) and an AI-shaped comparison surface over seven engines with one keygen per workload, so issue-shaped reproductions cost ~80 lines (s3page was built and run the same day). The s3page scenario's cache-pressure inversion is already documented in #78.
Not in this PR
Measured results and methodology write-ups (
RESULTS_AI.md, README section) stay local for now; harnesses are self-describing via module docs and env knobs.Testing
cargo check --benches --features pgclean; all five scenarios and all six YCSB workloads exercised across all seven engines on macOS (Apple M3 Pro) during the benchmark runs referenced in #78.