]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
RocksDB: add block cache size option to RocksDB
authorHaomai Wang <haomai@xsky.com>
Sun, 17 Jan 2016 16:57:32 +0000 (00:57 +0800)
committerHaomai Wang <haomai@xsky.com>
Mon, 1 Feb 2016 14:01:27 +0000 (22:01 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/common/config_opts.h
src/kv/RocksDBStore.cc

index 89d697f6dd76a820369c6d55ab55119d0155d490..95c1cf9650a8ff3e46af4197befe3f331d5b72c2 100644 (file)
@@ -793,6 +793,8 @@ OPTION(kinetic_use_ssl, OPT_BOOL, false) // whether to secure kinetic traffic wi
 OPTION(rocksdb_separate_wal_dir, OPT_BOOL, false) // use $path.wal for wal
 OPTION(rocksdb_db_paths, OPT_STR, "")   // path,size( path,size)*
 OPTION(rocksdb_log_to_ceph_log, OPT_BOOL, true)  // log to ceph log
+OPTION(rocksdb_cache_size, OPT_INT, 128*1024*1024)  // default leveldb cache size
+OPTION(rocksdb_block_size, OPT_INT, 4*1024)  // default rocksdb block size
 // rocksdb options that will be used for omap(if omap_backend is rocksdb)
 OPTION(filestore_rocksdb_options, OPT_STR, "")
 // rocksdb options that will be used in monstore
index 649daf7775de12a9d5d018bff923f8f6b4e07d10..672feada22a16f743a44cb4f5e01b8c6d8621c7c 100644 (file)
@@ -218,6 +218,14 @@ int RocksDBStore::do_open(ostream &out, bool create_if_missing)
     opt.env = static_cast<rocksdb::Env*>(priv);
   }
 
+  auto cache = rocksdb::NewLRUCache(g_conf->rocksdb_cache_size);
+  rocksdb::BlockBasedTableOptions bbt_opts;
+  bbt_opts.block_size = 32 * 1024;
+  bbt_opts.block_cache = cache;
+  opt.table_factory.reset(rocksdb::NewBlockBasedTableFactory(bbt_opts));
+  dout(10) << __func__ << " set block size to " << g_conf->rocksdb_block_size
+           << " cache size to " << g_conf->rocksdb_cache_size << dendl;
+
   status = rocksdb::DB::Open(opt, path, &db);
   if (!status.ok()) {
     derr << status.ToString() << dendl;