Files
3FS/src/storage/chunk_engine/benches/bench_allocator.rs
2025-02-27 21:53:53 +08:00

43 lines
1.2 KiB
Rust

use chunk_engine::*;
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use std::sync::Arc;
fn allocate(allocator: &Arc<Allocator>, n: usize) {
for _ in 0..n {
drop(allocator.allocate(true).unwrap());
}
}
fn criterion_benchmark(c: &mut Criterion) {
let dir = tempfile::tempdir().unwrap();
let cluster_config = ClustersConfig {
path: dir.path().into(),
chunk_size: CHUNK_SIZE_NORMAL,
create: true,
};
let clusters = Clusters::open(&cluster_config).unwrap();
let meta_store_config = MetaStoreConfig {
rocksdb: RocksDBConfig {
path: dir.path().join("meta"),
create: true,
..Default::default()
},
..Default::default()
};
let meta_store = std::sync::Arc::new(MetaStore::open(&meta_store_config).unwrap());
let allocator = chunk_engine::Allocator::load(clusters, meta_store.iterator()).unwrap();
allocator.do_allocate_task(1, 1, &meta_store).unwrap();
let count: usize = 1 << 16;
c.bench_with_input(BenchmarkId::new("allocate", count), &count, |b, &c| {
b.iter(|| allocate(&allocator, c))
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);