ConcurrentStore.inner is now Arc<RwLock<CubeStore>>: all read paths take the read side, all mutations + checkpoint take the write side. Readers no longer exclude each other and overlap an active writer (verified by concurrent_reads_dont_block_on_writer + cube-bench Task 4 section). WAL, checkpoint, and coordinate encoding are untouched, so durability/replay is unchanged (.check green). Honest finding recorded in docs/task4-reader-writer-sharding.md: on this 8-core host std RwLock removes reader-vs-reader exclusion (correct) but shows no wall-clock speedup for short reads (cache-line bounce on one shared lock). Real read-throughput scaling would need sharded/lock-free storage, left as a follow-up decision rather than invented.
17 lines
520 B
TOML
17 lines
520 B
TOML
[package]
|
|
name = "cube-bench"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
# Correctness-gated microbenchmarks for CUBELinux-2.
|
|
# Runs as a plain `cargo run -p cube-bench`; every measurement path first
|
|
# asserts an invariant so a silent regression cannot masquerade as a result.
|
|
|
|
[dependencies]
|
|
cubecoords = { path = "../cubecoords" }
|
|
cubestore = { path = "../cubestore" }
|
|
cubecrypt = { path = "../cubecrypt" }
|
|
cubecode = { path = "../cubecode" }
|
|
cubesys = { path = "../cubesys", features = ["bench"] }
|
|
|
|
[dev-dependencies]
|