Open
Description
After switching from rocksdb to parity db we discovered high memory usage on system allocator:
system | jemalloc | |
---|---|---|
btree | 5.93G | 4.34G |
kv | 7.27G | 5.49G |
Here is the code for reproducing the issue:
#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
fn main() {
let batch_size = 1024 * 1024;
let handles = (0..4)
.map(|i| {
let p = format!("some-path/{i}");
let _ = std::fs::remove_dir_all(&p);
let opts = parity_db::Options {
path: p.into(),
columns: vec![parity_db::ColumnOptions {
preimage: false,
btree_index: true,
uniform: false,
ref_counted: false,
compression: parity_db::CompressionType::NoCompression,
compression_threshold: 4096,
}],
sync_wal: true,
sync_data: true,
stats: false,
salt: None,
};
std::thread::spawn(move || {
let db = parity_db::Db::open_or_create(&opts).unwrap();
for range in (0..100u64).map(|i| i * batch_size..(i + 1) * batch_size) {
db.commit(range.map(|i| (0, i.to_be_bytes(), Some(i.to_le_bytes().to_vec()))))
.unwrap();
}
})
})
.collect::<Vec<_>>();
for handle in handles {
handle.join().unwrap();
}
}
Metadata
Metadata
Assignees
Labels
No labels