rocksdb/db
Jim Paton 9700677a2b Slow down writes gradually rather than suddenly
Summary:
Currently, when a certain number of level0 files (level0_slowdown_writes_trigger) are present, RocksDB will slow down each write by 1ms. There is a second limit of level0 files at which RocksDB will stop writes altogether (level0_stop_writes_trigger).

This patch enables the user to supply a third parameter specifying the number of files at which Rocks will start slowing down writes (level0_start_slowdown_writes). When this number is reached, Rocks will slow down writes as a quadratic function of level0_slowdown_writes_trigger - num_level0_files.

For some workloads, this improves latency and throughput. I will post some stats momentarily in https://our.intern.facebook.com/intern/tasks/?t=2613384.

Test Plan:
make -j32 check
./db_stress
./db_bench

Reviewers: dhruba, haobo, MarkCallaghan, xjin

Reviewed By: xjin

CC: leveldb, xjin, zshao

Differential Revision: https://reviews.facebook.net/D11859
2013-07-31 16:20:48 -07:00
..
.nfs00000000066c9ebb00000002 Enhance db_bench 2013-03-14 16:00:23 -07:00
builder.cc [RocksDB] cleanup EnvOptions 2013-06-12 11:17:19 -07:00
builder.h [RocksDB] cleanup EnvOptions 2013-06-12 11:17:19 -07:00
c_test.c Fix poor error on num_levels mismatch and few other minor improvements 2013-01-25 15:37:26 -08:00
c.cc Fix poor error on num_levels mismatch and few other minor improvements 2013-01-25 15:37:26 -08:00
corruption_test.cc Make arena block size configurable 2013-07-31 12:42:23 -07:00
db_bench.cc Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
db_filesnapshot.cc [Rocksdb] Log on disable/enable file deletions 2013-06-05 10:48:24 -07:00
db_impl_readonly.cc [Rocksdb] Support Merge operation in rocksdb 2013-05-03 16:59:02 -07:00
db_impl_readonly.h [RocksDB] Enable manual compaction to move files back to an appropriate level. 2013-07-19 16:20:36 -07:00
db_impl.cc Slow down writes gradually rather than suddenly 2013-07-31 16:20:48 -07:00
db_impl.h Slow down writes gradually rather than suddenly 2013-07-31 16:20:48 -07:00
db_iter.cc Record the number of open db iterators. 2013-05-29 08:47:08 -07:00
db_iter.h [Rocksdb] Support Merge operation in rocksdb 2013-05-03 16:59:02 -07:00
db_statistics.h [RocksDB] Expose DBStatistics 2013-05-23 11:49:38 -07:00
db_stats_logger.cc remove boost 2012-09-16 19:33:43 -07:00
db_test.cc Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
dbformat_test.cc Fix all warnings generated by -Wall option to the compiler. 2012-11-06 14:07:31 -08:00
dbformat.cc Fix refering freed memory in earlier commit. 2013-06-10 15:08:13 -07:00
dbformat.h Fix refering freed memory in earlier commit. 2013-06-10 15:08:13 -07:00
filename_test.cc Added meta-database support. 2012-12-17 11:26:59 -08:00
filename.cc Allow the logs to be purged by TTL. 2013-02-04 19:42:40 -08:00
filename.h Added meta-database support. 2012-12-17 11:26:59 -08:00
log_file.h GetUpdatesSince API to enable replication. 2012-12-07 11:42:13 -08:00
log_format.h Fixed sign-comparison in rocksdb code-base and fixed Makefile 2013-03-19 14:35:23 -07:00
log_reader.cc Codemod NULL to nullptr 2013-02-28 18:04:58 -08:00
log_reader.h TransactionLogIter should stall at the last record. Currently it errors out 2013-03-21 15:12:35 -07:00
log_test.cc Fix more signed-unsigned comparisons 2013-03-19 17:21:36 -07:00
log_writer.cc Fix a number of object lifetime/ownership issues 2013-01-23 16:54:11 -08:00
log_writer.h Fix a number of object lifetime/ownership issues 2013-01-23 16:54:11 -08:00
memtable.cc Make arena block size configurable 2013-07-31 12:42:23 -07:00
memtable.h Make arena block size configurable 2013-07-31 12:42:23 -07:00
memtablelist.cc Make rocksdb-deletes faster using bloom filter 2013-07-11 12:11:11 -07:00
memtablelist.h Make arena block size configurable 2013-07-31 12:42:23 -07:00
merge_helper.cc [Rocksdb] Support Merge operation in rocksdb 2013-05-03 16:59:02 -07:00
merge_helper.h [Rocksdb] Support Merge operation in rocksdb 2013-05-03 16:59:02 -07:00
merge_test.cc Use specific DB name in merge_test 2013-07-29 13:26:38 -07:00
repair.cc Virtualize SkipList Interface 2013-07-23 14:42:27 -07:00
skiplist_test.cc Make arena block size configurable 2013-07-31 12:42:23 -07:00
skiplist.h Make arena block size configurable 2013-07-31 12:42:23 -07:00
skiplistrep.h Make arena block size configurable 2013-07-31 12:42:23 -07:00
snapshot.h [RocksDB] fix compaction filter trigger condition 2013-05-13 12:33:02 -07:00
table_cache.cc Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
table_cache.h Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
transaction_log_iterator_impl.cc [RocksDB] cleanup EnvOptions 2013-06-12 11:17:19 -07:00
transaction_log_iterator_impl.h [RocksDB] cleanup EnvOptions 2013-06-12 11:17:19 -07:00
version_edit_test.cc Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
version_edit.cc Codemod NULL to nullptr 2013-02-28 18:04:58 -08:00
version_edit.h Compact multiple memtables before flushing to storage. 2013-06-18 14:28:04 -07:00
version_set_reduce_num_levels.cc Fix valgrind errors in rocksdb tests: auto_roll_logger_test, reduce_levels_test 2013-03-12 16:03:16 -07:00
version_set_test.cc Codemod NULL to nullptr 2013-02-28 18:04:58 -08:00
version_set.cc Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
version_set.h Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
write_batch_internal.h Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00
write_batch_test.cc Virtualize SkipList Interface 2013-07-23 14:42:27 -07:00
write_batch.cc Use KeyMayExist for WriteBatch-Deletes 2013-07-23 13:36:50 -07:00