Rocksdb调优

 

1.fast_crc32

基于https://github.com/starcoinorg/rust-rocksdb/tree/rocksdb_crc32_sse_make 这个分支测试加入fast_Crc32

针对固定转账可以提升3%性能

https://starcoin.atlassian.net/wiki/spaces/WESTAR/pages/10190894 里面1435提升到1485

查看是否启用fast_crc32使用如下命令

 

nm -n starcoin | grep Fast_CRC32

有输出就是启用了

或者进入rocksdb目录比如~/.main/starcoindb/db/starcoindb查看如下信息

 

ubuntu@ip-192-168-15-110:/workspace/main.bak/starcoindb/db/starcoindb$ grep "CRC" LOG 2022/02/14-06:21:30.783632 7f094ff6c700 Fast CRC32 supported: Not supported on x86

2. write_buffer相关设定

write buffer number 5

write buffer size 64MB

set_max_background_jobs(5);

固定转账提升3%

创建账号提升1%

 

 

3. 打开统计

https://github.com/facebook/rocksdb/wiki/Statistics 提到会有5%-10%的性能损失

统计据说有一点性能损失,主要是为了跟踪每个columnfamily的一些指标数据

db_opts.enable_statistics();

打开后我测试中有一次segfault了,原因不明

4. set_row_cache

cache设置成这个

可能与lru cache冲突

// let cache = Cache::new_lru_cache(2 * 1024 * 1024 * 1024); // db_opts.set_row_cache(&cache.unwrap());

目前看起来写的性能下降了

对基于读的性能场景可能性能提升

5. compress

目前我们使用的压缩方式是

cf_opts.set_compression_type(rocksdb::DBCompressionType::Lz4);

rust-rocksdb 文档里面写的

https://github.com/rust-rocksdb/rust-rocksdb/blob/v0.17.0/src/db_options.rs#L980

cf_opts.set_compression_per_level(&[ rocksdb::DBCompressionType::None, rocksdb::DBCompressionType::None, rocksdb::DBCompressionType::Lz4, rocksdb::DBCompressionType::Lz4, rocksdb::DBCompressionType::Lz4, rocksdb::DBCompressionType::Lz4, rocksdb::DBCompressionType::Lz4,]);