diff options
4 files changed, 18 insertions, 2 deletions
diff --git a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp index ed104dc6cd5..59802167c34 100644 --- a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp +++ b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.cpp @@ -17,6 +17,7 @@ RPCNetworkParams::RPCNetworkParams(config::ConfigUri configUri) : _maxOutputBufferSize(256_Ki), _numThreads(4), _numNetworkThreads(1), + _numRpcTargets(1), _tcpNoDelay(true), _dispatchOnEncode(true), _dispatchOnDecode(false), diff --git a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h index 193bc013c0a..37739ee5189 100644 --- a/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h +++ b/messagebus/src/vespa/messagebus/network/rpcnetworkparams.h @@ -21,6 +21,7 @@ private: uint32_t _maxOutputBufferSize; uint32_t _numThreads; uint32_t _numNetworkThreads; + uint32_t _numRpcTargets; bool _tcpNoDelay; bool _dispatchOnEncode; bool _dispatchOnDecode; @@ -47,6 +48,13 @@ public: uint32_t getNumNetworkThreads() const { return _numNetworkThreads; } + RPCNetworkParams &setNumRpcTargets(uint32_t numRpcTargets) { + _numRpcTargets = numRpcTargets; + return *this; + } + + uint32_t getNumRpcTargets() const { return _numRpcTargets; } + /** * Returns the identity to use for the network. * diff --git a/storage/src/vespa/storage/config/stor-communicationmanager.def b/storage/src/vespa/storage/config/stor-communicationmanager.def index 534be7cb6fe..70b8d3ca2b7 100644 --- a/storage/src/vespa/storage/config/stor-communicationmanager.def +++ b/storage/src/vespa/storage/config/stor-communicationmanager.def @@ -29,8 +29,14 @@ mbus.compress.type enum {NONE, LZ4, ZSTD} default=LZ4 restart ## TTL for rpc target cache mbus.rpctargetcache.ttl double default = 600 restart +## Number of rpc targets per spec +mbus.num_rpc_targets int default=1 restart + +## Use tcpNoDelay for mbus network writes +mbus.tcp_no_delay bool default=true restart + ## Number of threads for network. -mbus.num_network_threads int default=1 +mbus.num_network_threads int default=1 restart ## Number of workers threads for messagebus ## Any value below 1 will be 1. diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp index 39f058d1085..7de1b7d869e 100644 --- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp +++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp @@ -394,9 +394,10 @@ void CommunicationManager::configure(std::unique_ptr<CommunicationManagerConfig> params.setConnectionExpireSecs(config->mbus.rpctargetcache.ttl); params.setNumThreads(std::max(1, config->mbus.numThreads)); params.setNumNetworkThreads(std::max(1, config->mbus.numNetworkThreads)); + params.setNumRpcTargets(std::max(1, config->mbus.numRpcTargets)); params.setDispatchOnDecode(config->mbus.dispatchOnDecode); params.setDispatchOnEncode(config->mbus.dispatchOnEncode); - params.setTcpNoDelay(config->mbus.optimizeFor == CommunicationManagerConfig::Mbus::OptimizeFor::LATENCY); + params.setTcpNoDelay(config->mbus.tcpNoDelay); params.setIdentity(mbus::Identity(_component.getIdentity())); if (config->mbusport != -1) { |