bench: add blob download read-ahead benchmark (read_prefetch sweep)
Adds `bench_blob_prefetch` (behind the `bench` feature) to measure the local backend's chunk read-ahead depth — the `buffered(N)` read-ahead in DedupService::stream_chunks fed by BlobStorageBackend::read_prefetch(). The bench reproduces the exact production reassembly combinator over a real LocalBlobBackend (chunk files scattered across the 256 hash-prefix dirs) and sweeps the prefetch depth under the two axes that decide whether read-ahead helps on local disk: - consumer speed: unthrottled (disk-bound) vs throttled@MB/s (network-bound) - page cache: warm vs cold (posix_fadvise DONTNEED, Linux best-effort) N=1 is current production; higher N is the candidate change. Lets us verify gains/regressions empirically before changing read_prefetch(), since the trait doc deliberately defaults local to 1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JG5yYZ9s868mJwqT2Qz7ez
This commit is contained in:
@@ -174,6 +174,14 @@ name = "bench_blob_manifest"
|
||||
path = "examples/bench_blob_manifest.rs"
|
||||
required-features = ["bench"]
|
||||
|
||||
# Blob download read-ahead benchmark — sweeps the local backend's chunk prefetch
|
||||
# depth (read_prefetch / buffered(N)) under disk-bound vs network-bound consumers
|
||||
# and warm vs cold page cache. No Postgres needed.
|
||||
[[example]]
|
||||
name = "bench_blob_prefetch"
|
||||
path = "examples/bench_blob_prefetch.rs"
|
||||
required-features = ["bench"]
|
||||
|
||||
# ACL owner-cache benchmark — owner query vs moka hit (needs the dev Postgres up).
|
||||
[[example]]
|
||||
name = "bench_owner_cache"
|
||||
|
||||
Reference in New Issue
Block a user