mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-29 16:37:07 +00:00
perf(ecstore): add bucket existence cache and allocator feature flags (#6496)
## Bucket existence cache - Add BucketExistenceCache in crates/ecstore/src/disk/fs.rs - Cache bucket directory existence checks with 60s TTL - Replace access() calls with cached_access() in local.rs - Add invalidate_bucket_cache() for cache invalidation on create/delete - Reduces statx syscalls by 89% (from 10,716/s to 1,186/s) ## Allocator feature flags - Add mimalloc and jemalloc features to rustfs/Cargo.toml - Default: system allocator (Rust built-in) - --features mimalloc: mimalloc allocator - --features jemalloc: jemalloc allocator - Allows A/B testing different allocators ## Performance impact - 1KiB PUT: 861 obj/s (unchanged, futex is main bottleneck) - statx reduction: 89% (from 10,716/s to 1,186/s) - Main bottleneck remains mimalloc internal synchronization Ref: rustfs/backlog#2005 Ref: microsoft/mimalloc#1372 Co-authored-by: hector <hetor@rustfs.com> Co-authored-by: heihutu <heihutu@gmail.com> Co-authored-by: overtrue <anzhengchao@gmail.com>
This commit is contained in:
+8
-1
@@ -56,6 +56,9 @@ rio-v2 = ["rustfs-ecstore/rio-v2"]
|
||||
pyroscope = ["rustfs-obs/pyroscope"]
|
||||
# Tokio runtime telemetry. Requires `--cfg tokio_unstable`; use `make build-profiling`.
|
||||
dial9 = ["rustfs-obs/dial9"]
|
||||
# Allocator features
|
||||
mimalloc = ["dep:rustfs-mimalloc", "dep:rustfs-mimalloc-sys"]
|
||||
jemalloc = ["dep:tikv-jemallocator"]
|
||||
hotpath = [
|
||||
"hotpath/hotpath",
|
||||
"hotpath/tokio",
|
||||
@@ -336,11 +339,15 @@ opentelemetry = { workspace = true }
|
||||
tracing-opentelemetry = { workspace = true }
|
||||
# Data structures
|
||||
hashbrown = { workspace = true, features = ["serde", "rayon"] }
|
||||
rustfs-mimalloc = { workspace = true }
|
||||
rustfs-mimalloc = { workspace = true, optional = true }
|
||||
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
libsystemd.workspace = true
|
||||
|
||||
[target.'cfg(not(target_os = "windows"))'.dependencies]
|
||||
rustfs-mimalloc-sys = { workspace = true, optional = true }
|
||||
tikv-jemallocator = { version = "0.6", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
uuid = { workspace = true, features = ["v4", "v5", "fast-rng", "macro-diagnostics"] }
|
||||
serial_test = { workspace = true }
|
||||
|
||||
Reference in New Issue
Block a user