Details
-
Bug
-
Resolution: Fixed
-
Critical
-
7.1.0
-
Untriaged
-
1
-
Yes
-
KV 2021-Dec, KV 2022-Jan
Description
Config params num_nonio_threads / num_auxio_threads set via ns_server extra_config_string are not respected.
cbepctl set flush_param still works, modifying the running config in a non-persistent fashion.
extra_config_string in general makes persistent changes to the config for a given bucket, which will survive a restart. This is a somewhat "canonical" method provided to customers by support to change settings in response to issues. Customers with these parameters currently set would find they no longer apply if upgrading to a build in the current state.
Code context:
kv_engine/daemon/memcached.cc |
|
709
|
static void startExecutorPool() {
|
710
|
LOG_INFO_RAW("Start executor pool");
|
711
|
ExecutorPool::create(ExecutorPool::Backend::Folly,
|
712
|
0,
|
713
|
ThreadPoolConfig::ThreadCount(
|
714
|
Settings::instance().getNumReaderThreads()),
|
715
|
ThreadPoolConfig::ThreadCount(
|
716
|
Settings::instance().getNumWriterThreads()));
|
kv_engine/engines/ep/src/ep_engine.cc |
|
2098
|
// Ensure (global) ExecutorPool has been created, and update the (local)
|
2099
|
// configuration with the actual number of each thread type we have (config
|
2100
|
// params are typically defaulted to "0" which means "auto-configure
|
2101
|
// thread counts"
|
2102
|
auto threads = serverApi->core->getThreadPoolSizes();
|
2103
|
configuration.setNumReaderThreads(static_cast<int>(threads.num_readers));
|
2104
|
configuration.setNumWriterThreads(static_cast<int>(threads.num_writers));
|
2105
|
|
2106
|
auto* pool = ExecutorPool::get();
|
2107
|
// Update configuration to reflect the actual number of threads which have
|
2108
|
// been created.
|
2109
|
configuration.setNumReaderThreads(pool->getNumReaders());
|
2110
|
configuration.setNumWriterThreads(pool->getNumWriters());
|
2111
|
configuration.setNumAuxioThreads(pool->getNumAuxIO());
|
2112
|
configuration.setNumNonioThreads(pool->getNumNonIO());
|
This abandoned patch would move to these values being controlled by memcached settings, rather than bucket config, which makes sense as these have global impact.
Attachments
Issue Links
For Gerrit Dashboard: MB-49977 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
167489,1 | MB-49977: Add configuration for auxio and nonio threads | master | kv_engine | Status: ABANDONED | 0 | -1 |
167498,10 | MB-49977: Add configuration for auxio and nonio threads | master | kv_engine | Status: MERGED | +2 | +1 |
168184,5 | MB-49977: Allow configuration of auxio and nonio threads | master | ns_server | Status: MERGED | +2 | +1 |
168245,3 | MB-49977: Support 'default' for num_{aux,non}io_threads config values | master | kv_engine | Status: MERGED | +2 | +1 |
168644,5 | MB-50405, MB-49977 Upgrade memcached_defaults | master | ns_server | Status: MERGED | +2 | +1 |