Skip to content

Commit 27e80d7

Browse files
Rocksdb new options configuration
1 parent 874e675 commit 27e80d7

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

fdbclient/ServerKnobs.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
420420
init( ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT, 200 );
421421
// Set to 0 to disable rocksdb write rate limiting. Rate limiter unit: bytes per second.
422422
init( ROCKSDB_WRITE_RATE_LIMITER_BYTES_PER_SEC, 0 );
423+
init( ROCKSDB_WRITE_RATE_LIMITER_FAIRNESS, 10 ); // RocksDB default 10
423424
// If true, enables dynamic adjustment of ROCKSDB_WRITE_RATE_LIMITER_BYTES according to the recent demand of background IO.
424425
init( ROCKSDB_WRITE_RATE_LIMITER_AUTO_TUNE, true );
425426
init( DEFAULT_FDB_ROCKSDB_COLUMN_FAMILY, "fdb");
@@ -461,6 +462,14 @@ void ServerKnobs::initialize(Randomize randomize, ClientKnobs* clientKnobs, IsSi
461462
init( ROCKSDB_CAN_COMMIT_DELAY_TIMES_ON_OVERLOAD, 20 );
462463
init( ROCKSDB_COMPACTION_READAHEAD_SIZE, 32768 ); // 32 KB, performs bigger reads when doing compaction.
463464
init( ROCKSDB_BLOCK_SIZE, 32768 ); // 32 KB, size of the block in rocksdb cache.
465+
init( ROCKSDB_WRITE_BUFFER_SIZE, isSimulated ? 16 << 20 : 64 << 20 ); // 64 MB
466+
init( ROCKSDB_MAX_WRITE_BUFFER_NUMBER, 6 ); // RocksDB default.
467+
init( ROCKSDB_MIN_WRITE_BUFFER_NUMBER_TO_MERGE, 2 ); // RocksDB default.
468+
init( ROCKSDB_LEVEL0_FILENUM_COMPACTION_TRIGGER, 2 ); // RocksDB default.
469+
init( ROCKSDB_LEVEL0_SLOWDOWN_WRITES_TRIGGER, 20 ); // RocksDB default.
470+
init( ROCKSDB_LEVEL0_STOP_WRITES_TRIGGER, 36 ); // RocksDB default.
471+
init( ROCKSDB_TARGET_FILE_SIZE_BASE, 0 ); // If 0, pick RocksDB default.
472+
init( ROCKSDB_TARGET_FILE_SIZE_MULTIPLIER, 1 ); // RocksDB default.
464473
init( ROCKSDB_MAX_LOG_FILE_SIZE, 10485760 ); // 10MB.
465474
init( ROCKSDB_KEEP_LOG_FILE_NUM, 200 ); // Keeps 2GB log per storage server.
466475
// Temporary knob to enable trace events which prints details about all the backup keys update(write/clear) operations.

fdbclient/ServerKnobs.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ class ServerKnobs : public KnobsImpl<ServerKnobs> {
350350
bool ROCKSDB_READ_RANGE_REUSE_BOUNDED_ITERATORS;
351351
int ROCKSDB_READ_RANGE_BOUNDED_ITERATORS_MAX_LIMIT;
352352
int64_t ROCKSDB_WRITE_RATE_LIMITER_BYTES_PER_SEC;
353+
int ROCKSDB_WRITE_RATE_LIMITER_FAIRNESS;
353354
bool ROCKSDB_WRITE_RATE_LIMITER_AUTO_TUNE;
354355
std::string DEFAULT_FDB_ROCKSDB_COLUMN_FAMILY;
355356
bool ROCKSDB_DISABLE_AUTO_COMPACTIONS;
@@ -377,6 +378,14 @@ class ServerKnobs : public KnobsImpl<ServerKnobs> {
377378
int ROCKSDB_STATS_LEVEL;
378379
int64_t ROCKSDB_COMPACTION_READAHEAD_SIZE;
379380
int64_t ROCKSDB_BLOCK_SIZE;
381+
int64_t ROCKSDB_WRITE_BUFFER_SIZE;
382+
int ROCKSDB_MAX_WRITE_BUFFER_NUMBER;
383+
int ROCKSDB_MIN_WRITE_BUFFER_NUMBER_TO_MERGE;
384+
int ROCKSDB_LEVEL0_FILENUM_COMPACTION_TRIGGER;
385+
int ROCKSDB_LEVEL0_SLOWDOWN_WRITES_TRIGGER;
386+
int ROCKSDB_LEVEL0_STOP_WRITES_TRIGGER;
387+
int ROCKSDB_TARGET_FILE_SIZE_BASE;
388+
int ROCKSDB_TARGET_FILE_SIZE_MULTIPLIER;
380389
int ROCKSDB_MAX_LOG_FILE_SIZE;
381390
int ROCKSDB_KEEP_LOG_FILE_NUM;
382391
bool SS_BACKUP_KEYS_OP_LOGS;

fdbserver/KeyValueStoreRocksDB.actor.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,16 @@ rocksdb::ColumnFamilyOptions getCFOptions() {
324324
options.hard_pending_compaction_bytes_limit = SERVER_KNOBS->ROCKSDB_HARD_PENDING_COMPACT_BYTES_LIMIT;
325325
}
326326
options.paranoid_file_checks = SERVER_KNOBS->ROCKSDB_PARANOID_FILE_CHECKS;
327+
if (SERVER_KNOBS->ROCKSDB_TARGET_FILE_SIZE_BASE > 0) {
328+
options.target_file_size_base = SERVER_KNOBS->ROCKSDB_TARGET_FILE_SIZE_BASE;
329+
}
330+
options.target_file_size_multiplier = SERVER_KNOBS->ROCKSDB_TARGET_FILE_SIZE_MULTIPLIER;
331+
options.write_buffer_size = SERVER_KNOBS->ROCKSDB_WRITE_BUFFER_SIZE;
332+
options.max_write_buffer_number = SERVER_KNOBS->ROCKSDB_MAX_WRITE_BUFFER_NUMBER;
333+
options.min_write_buffer_number_to_merge = SERVER_KNOBS->ROCKSDB_MIN_WRITE_BUFFER_NUMBER_TO_MERGE;
334+
options.level0_file_num_compaction_trigger = SERVER_KNOBS->ROCKSDB_LEVEL0_FILENUM_COMPACTION_TRIGGER;
335+
options.level0_slowdown_writes_trigger = SERVER_KNOBS->ROCKSDB_LEVEL0_SLOWDOWN_WRITES_TRIGGER;
336+
options.level0_stop_writes_trigger = SERVER_KNOBS->ROCKSDB_LEVEL0_STOP_WRITES_TRIGGER;
327337

328338
// Compact sstables when there's too much deleted stuff.
329339
if (SERVER_KNOBS->ROCKSDB_ENABLE_COMPACT_ON_DELETION) {
@@ -1143,7 +1153,7 @@ struct RocksDBKeyValueStore : IKeyValueStore {
11431153
? rocksdb::NewGenericRateLimiter(
11441154
SERVER_KNOBS->ROCKSDB_WRITE_RATE_LIMITER_BYTES_PER_SEC, // rate_bytes_per_sec
11451155
100 * 1000, // refill_period_us
1146-
10, // fairness
1156+
SERVER_KNOBS->ROCKSDB_WRITE_RATE_LIMITER_FAIRNESS, // fairness
11471157
rocksdb::RateLimiter::Mode::kAllIo,
11481158
SERVER_KNOBS->ROCKSDB_WRITE_RATE_LIMITER_AUTO_TUNE)
11491159
: nullptr) {

0 commit comments

Comments
 (0)