diff --git a/ircd/db.cc b/ircd/db.cc index c8d484a0d..26b8e1717 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -74,6 +74,25 @@ ircd::db::rog "rdb", 'R' }; +ircd::conf::item +ircd::db::request_pool_stack_size +{ + { "name", "ircd.db.request_pool.stack_size" }, + { "default", long(128_KiB) }, +}; + +ircd::conf::item +ircd::db::request_pool_size +{ + { + { "name", "ircd.db.request_pool.size" }, + { "default", 32L }, + }, [] + { + request.set(size_t(request_pool_size)); + } +}; + /// Concurrent request pool. Requests to seek may be executed on this /// pool in cases where a single context would find it advantageous. /// Some examples are a db::row seek, or asynchronous prefetching. @@ -85,15 +104,8 @@ decltype(ircd::db::request) ircd::db::request { "db req", - 128_KiB, // stack size (must be adequate for transfer to rocksdb) - 0, // don't prespawn because this is static -}; - -ircd::conf::item -request_pool_default -{ - { "name", "ircd.db.request_pool.default" }, - { "default", 32L } + size_t(request_pool_stack_size), + 0, // don't prespawn because this is static }; /////////////////////////////////////////////////////////////////////////////// @@ -115,7 +127,7 @@ ircd::db::init::init() { init_compressions(); init_directory(); - request.add(size_t(request_pool_default)); + request.add(request_pool_size); } ircd::db::init::~init() diff --git a/ircd/db.h b/ircd/db.h index 89f0a9ac6..37c9ba462 100644 --- a/ircd/db.h +++ b/ircd/db.h @@ -39,6 +39,8 @@ namespace ircd::db const auto DEFAULT_READAHEAD = 4_MiB; extern log::log rog; + extern conf::item request_pool_size; + extern conf::item request_pool_stack_size; extern ctx::pool request; string_view reflect(const rocksdb::Env::Priority &p);