From ed01ed05dcf22988066ee23dd135969db9d6a9e8 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sat, 12 Sep 2020 20:23:24 -0700 Subject: [PATCH] ircd::db: Variable per-column write buffer derived from block size. --- ircd/db.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ircd/db.cc b/ircd/db.cc index 3e6a795cb..95a54d44b 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -2075,8 +2075,20 @@ ircd::db::database::column::column(database &d, //this->options.bottommost_compression_opts = this->options.compression_opts; //TODO: descriptor / conf + static const auto write_buffer_blocks{2048L}; + static const long write_buffer_size_minmax[] + { + 256_KiB, 4_MiB + }; + + // Derive the write buffer size from the block size + this->options.write_buffer_size = std::clamp + ( + write_buffer_blocks * long(this->descriptor->block_size), + write_buffer_size_minmax[0], + write_buffer_size_minmax[1] + ); - this->options.write_buffer_size = 1_MiB; this->options.max_write_buffer_number = 16; this->options.min_write_buffer_number_to_merge = 2; this->options.max_write_buffer_number_to_maintain = 8;