mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-27 00:38:16 +00:00
3bd89944c2
* perf(erasure): remove UUID from clone + increase encode inflight budget Two targeted optimizations for the erasure encoding hot path: 1. Erasure::clone() no longer generates Uuid::new_v4() per clone. The _id field is unused in the hot path; reusing the original ID eliminates a CSPRNG call per block encode (100 calls for a 100MB object with 1MB blocks). 2. Default RUSTFS_ERASURE_ENCODE_MAX_INFLIGHT_BYTES raised from 8MB to 32MB. This increases the encode pipeline depth from ~5 to ~20 blocks, allowing more read-ahead between the encoder and disk writer stages. The per-request memory bound is still controlled by the 8-block hard cap and the env var override. 3. Added encode_data_owned() utility method for zero-copy encoding when the caller already owns a heap buffer (Vec<u8> → BytesMut via Bytes::try_into_mut). Not used in the hot path yet but available for future callers. All 1157 ecstore tests pass. Criterion micro-benchmarks show no regression (< 2% variance). Single-machine warp E2E tests were inconclusive due to high variance; a dedicated multi-disk test environment is needed for reliable E2E comparison. Ref: https://github.com/rustfs/backlog/issues/659 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore: update Cargo.lock * fix(erasure): align encode inflight cap and tests --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>