From a075d03d8c5f8732520e4e2a474f9428298bb3f3 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Wed, 13 Jul 2016 19:57:42 +0200 Subject: [PATCH 1/2] using block options cache instead of general cache for rocksdb --- Cargo.lock | 4 ++-- util/src/kvdb.rs | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a2f723829d..af7fff7b723 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1079,7 +1079,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rocksdb" version = "0.4.5" -source = "git+https://github.com/ethcore/rust-rocksdb#9be41e05923616dfa28741c58b22776d479751e6" +source = "git+https://github.com/ethcore/rust-rocksdb#6472a9dce16c267a3acec2ee6fd01d1bf8de4913" dependencies = [ "libc 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)", @@ -1088,7 +1088,7 @@ dependencies = [ [[package]] name = "rocksdb-sys" version = "0.3.0" -source = "git+https://github.com/ethcore/rust-rocksdb#9be41e05923616dfa28741c58b22776d479751e6" +source = "git+https://github.com/ethcore/rust-rocksdb#6472a9dce16c267a3acec2ee6fd01d1bf8de4913" dependencies = [ "gcc 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/util/src/kvdb.rs b/util/src/kvdb.rs index 8a19e48bf09..e10f1ac6063 100644 --- a/util/src/kvdb.rs +++ b/util/src/kvdb.rs @@ -18,7 +18,7 @@ use std::default::Default; use rocksdb::{DB, Writable, WriteBatch, IteratorMode, DBVector, DBIterator, - IndexType, Options, DBCompactionStyle, BlockBasedOptions, Direction}; + IndexType, Options, DBCompactionStyle, BlockBasedOptions, Direction, Cache}; const DB_BACKGROUND_FLUSHES: i32 = 2; const DB_BACKGROUND_COMPACTIONS: i32 = 2; @@ -198,7 +198,19 @@ impl Database { block_opts.set_index_type(IndexType::HashSearch); opts.set_block_based_table_factory(&block_opts); opts.set_prefix_extractor_fixed_size(size); + if let Some(cache_size) = config.cache_size { + block_opts.set_cache(Cache::new(cache_size * 1024 * 256)); + opts.set_write_buffer_size(cache_size * 1024 * 256); + } + } else if let Some(cache_size) = config.cache_size { + let mut block_opts = BlockBasedOptions::new(); + // half goes to read cache + block_opts.set_cache(Cache::new(cache_size * 1024 * 256)); + opts.set_block_based_table_factory(&block_opts); + // quarter goes to each of the two write buffers + opts.set_write_buffer_size(cache_size * 1024 * 256); } + let db = match DB::open(&opts, path) { Ok(db) => db, Err(ref s) if s.starts_with("Corruption:") => { From aeba7a1799115de7059c2513746bf7bfdc8849eb Mon Sep 17 00:00:00 2001 From: NikVolf Date: Wed, 13 Jul 2016 20:00:34 +0200 Subject: [PATCH 2/2] remove previous cache setup --- util/src/kvdb.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/util/src/kvdb.rs b/util/src/kvdb.rs index e10f1ac6063..4dbdb73ab4c 100644 --- a/util/src/kvdb.rs +++ b/util/src/kvdb.rs @@ -169,12 +169,6 @@ impl Database { opts.set_max_background_flushes(DB_BACKGROUND_FLUSHES); opts.set_max_background_compactions(DB_BACKGROUND_COMPACTIONS); - if let Some(cache_size) = config.cache_size { - // half goes to read cache - opts.set_block_cache_size_mb(cache_size as u64 / 2); - // quarter goes to each of the two write buffers - opts.set_write_buffer_size(cache_size * 1024 * 256); - } /* opts.set_bytes_per_sync(8388608); opts.set_disable_data_sync(false);