mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 15:33:54 +01:00
ircd::db: Support universal compaction by default; various write tweaks.
This commit is contained in:
parent
1a7447837e
commit
afe0b96249
4 changed files with 29 additions and 27 deletions
|
@ -91,7 +91,7 @@ struct ircd::db::descriptor
|
||||||
db::compactor compactor {};
|
db::compactor compactor {};
|
||||||
|
|
||||||
/// Compaction priority algorithm
|
/// Compaction priority algorithm
|
||||||
std::string compaction_pri {"kOldestLargestSeqFirst"};
|
std::string compaction_pri {};
|
||||||
|
|
||||||
/// Compaction related parameters. see: rocksdb/advanced_options.h
|
/// Compaction related parameters. see: rocksdb/advanced_options.h
|
||||||
struct
|
struct
|
||||||
|
|
31
ircd/db.cc
31
ircd/db.cc
|
@ -2078,10 +2078,10 @@ ircd::db::database::column::column(database &d,
|
||||||
|
|
||||||
//TODO: descriptor / conf
|
//TODO: descriptor / conf
|
||||||
|
|
||||||
this->options.write_buffer_size = 4_MiB;
|
this->options.write_buffer_size = 1_MiB;
|
||||||
this->options.max_write_buffer_number = 8;
|
this->options.max_write_buffer_number = 16;
|
||||||
this->options.min_write_buffer_number_to_merge = 4;
|
this->options.min_write_buffer_number_to_merge = 2;
|
||||||
this->options.max_write_buffer_number_to_maintain = 0;
|
this->options.max_write_buffer_number_to_maintain = 8;
|
||||||
|
|
||||||
// Conf item can be set to disable automatic compactions. For developers
|
// Conf item can be set to disable automatic compactions. For developers
|
||||||
// and debugging; good for valgrind.
|
// and debugging; good for valgrind.
|
||||||
|
@ -2089,8 +2089,12 @@ ircd::db::database::column::column(database &d,
|
||||||
|
|
||||||
// Set the compaction style; we don't override this in the descriptor yet.
|
// Set the compaction style; we don't override this in the descriptor yet.
|
||||||
//this->options.compaction_style = rocksdb::kCompactionStyleNone;
|
//this->options.compaction_style = rocksdb::kCompactionStyleNone;
|
||||||
this->options.compaction_style = rocksdb::kCompactionStyleLevel;
|
//this->options.compaction_style = rocksdb::kCompactionStyleLevel;
|
||||||
//this->options.compaction_style = rocksdb::kCompactionStyleUniversal;
|
//this->options.compaction_style = rocksdb::kCompactionStyleUniversal;
|
||||||
|
this->options.compaction_style =
|
||||||
|
this->descriptor->compaction_pri.empty() || this->descriptor->compaction_pri == "Universal"?
|
||||||
|
rocksdb::kCompactionStyleUniversal:
|
||||||
|
rocksdb::kCompactionStyleLevel;
|
||||||
|
|
||||||
// Set the compaction priority from string in the descriptor
|
// Set the compaction priority from string in the descriptor
|
||||||
this->options.compaction_pri =
|
this->options.compaction_pri =
|
||||||
|
@ -2105,8 +2109,9 @@ ircd::db::database::column::column(database &d,
|
||||||
rocksdb::CompactionPri::kOldestLargestSeqFirst;
|
rocksdb::CompactionPri::kOldestLargestSeqFirst;
|
||||||
|
|
||||||
this->options.num_levels = 7;
|
this->options.num_levels = 7;
|
||||||
this->options.level0_file_num_compaction_trigger = 7;
|
|
||||||
this->options.level_compaction_dynamic_level_bytes = false;
|
this->options.level_compaction_dynamic_level_bytes = false;
|
||||||
|
this->options.level0_file_num_compaction_trigger = 8;
|
||||||
|
|
||||||
//this->options.ttl = -2U;
|
//this->options.ttl = -2U;
|
||||||
#ifdef IRCD_DB_HAS_PERIODIC_COMPACTIONS
|
#ifdef IRCD_DB_HAS_PERIODIC_COMPACTIONS
|
||||||
this->options.periodic_compaction_seconds = this->descriptor->compaction_period.count();
|
this->options.periodic_compaction_seconds = this->descriptor->compaction_period.count();
|
||||||
|
@ -2137,13 +2142,13 @@ ircd::db::database::column::column(database &d,
|
||||||
|
|
||||||
// Universal compaction options; these are unused b/c we don't use this
|
// Universal compaction options; these are unused b/c we don't use this
|
||||||
// style; they are here for hacking an experimentation for now.
|
// style; they are here for hacking an experimentation for now.
|
||||||
this->options.compaction_options_universal.size_ratio = 1;
|
this->options.compaction_options_universal.size_ratio = 67;
|
||||||
this->options.compaction_options_universal.min_merge_width = 2;
|
this->options.compaction_options_universal.min_merge_width = 8;
|
||||||
this->options.compaction_options_universal.max_merge_width = UINT_MAX;
|
this->options.compaction_options_universal.max_merge_width = 10;
|
||||||
this->options.compaction_options_universal.max_size_amplification_percent = 200;
|
this->options.compaction_options_universal.max_size_amplification_percent = 1000;
|
||||||
this->options.compaction_options_universal.compression_size_percent = -1;
|
this->options.compaction_options_universal.compression_size_percent = -1;
|
||||||
this->options.compaction_options_universal.stop_style = rocksdb::kCompactionStopStyleTotalSize;
|
this->options.compaction_options_universal.stop_style = rocksdb::kCompactionStopStyleTotalSize;
|
||||||
this->options.compaction_options_universal.allow_trivial_move = false;;
|
this->options.compaction_options_universal.allow_trivial_move = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Table options
|
// Table options
|
||||||
|
@ -2156,7 +2161,7 @@ ircd::db::database::column::column(database &d,
|
||||||
table_opts.format_version = 4; // RocksDB >= 5.16.x compat only; otherwise use 3.
|
table_opts.format_version = 4; // RocksDB >= 5.16.x compat only; otherwise use 3.
|
||||||
|
|
||||||
table_opts.index_type = rocksdb::BlockBasedTableOptions::kTwoLevelIndexSearch;
|
table_opts.index_type = rocksdb::BlockBasedTableOptions::kTwoLevelIndexSearch;
|
||||||
table_opts.index_block_restart_interval = 16;
|
table_opts.index_block_restart_interval = 1;
|
||||||
table_opts.read_amp_bytes_per_bit = 8;
|
table_opts.read_amp_bytes_per_bit = 8;
|
||||||
|
|
||||||
// Specify that index blocks should use the cache. If not, they will be
|
// Specify that index blocks should use the cache. If not, they will be
|
||||||
|
@ -2186,7 +2191,7 @@ ircd::db::database::column::column(database &d,
|
||||||
table_opts.block_size = this->descriptor->block_size;
|
table_opts.block_size = this->descriptor->block_size;
|
||||||
table_opts.metadata_block_size = this->descriptor->meta_block_size;
|
table_opts.metadata_block_size = this->descriptor->meta_block_size;
|
||||||
table_opts.block_size_deviation = 50;
|
table_opts.block_size_deviation = 50;
|
||||||
table_opts.block_restart_interval = 32;
|
table_opts.block_restart_interval = 16;
|
||||||
|
|
||||||
//table_opts.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
|
//table_opts.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
|
||||||
//table_opts.data_block_hash_table_util_ratio = 0.75;
|
//table_opts.data_block_hash_table_util_ratio = 0.75;
|
||||||
|
|
|
@ -113,25 +113,13 @@ ircd::m::dbs::desc::event_json
|
||||||
{},
|
{},
|
||||||
|
|
||||||
// compaction priority algorithm
|
// compaction priority algorithm
|
||||||
"kOldestLargestSeqFirst"s,
|
"Universal"s,
|
||||||
|
|
||||||
// target_file_size
|
// target_file_size
|
||||||
{
|
{
|
||||||
2_GiB, // base
|
2_GiB, // base
|
||||||
1L, // multiplier
|
1L, // multiplier
|
||||||
},
|
},
|
||||||
|
|
||||||
// max_bytes_for_level[8]
|
|
||||||
{
|
|
||||||
{ 128_MiB, 1L }, // max_bytes_for_level_base
|
|
||||||
{ 0L, 0L }, // max_bytes_for_level[0]
|
|
||||||
{ 0L, 1L }, // max_bytes_for_level[1]
|
|
||||||
{ 0L, 1L }, // max_bytes_for_level[2]
|
|
||||||
{ 0L, 3L }, // max_bytes_for_level[3]
|
|
||||||
{ 0L, 7L }, // max_bytes_for_level[4]
|
|
||||||
{ 0L, 15L }, // max_bytes_for_level[5]
|
|
||||||
{ 0L, 31L }, // max_bytes_for_level[6]
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -140,6 +140,15 @@ ircd::m::dbs::desc::room_type
|
||||||
|
|
||||||
// meta_block size
|
// meta_block size
|
||||||
size_t(room_type__meta_block__size),
|
size_t(room_type__meta_block__size),
|
||||||
|
|
||||||
|
// compression
|
||||||
|
"kLZ4Compression;kSnappyCompression"s,
|
||||||
|
|
||||||
|
// compactor
|
||||||
|
{},
|
||||||
|
|
||||||
|
// compaction priority algorithm
|
||||||
|
"kOldestSmallestSeqFirst"s,
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue