diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-12-10 10:07:26 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2020-12-10 10:07:26 +0000 |
commit | d4f175578d97d280b6ef498bab17fea246a8e01e (patch) | |
tree | f20aff3021f10bf3d31f3dfc3177960155a50970 /storage | |
parent | 2050d83063418bca2c04f73918c7548dbaddb5ed (diff) |
Make "events before wakeup" configurable for SharedRpcResources.
Diffstat (limited to 'storage')
6 files changed, 13 insertions, 6 deletions
diff --git a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp index 8b009e02f28..a39ee819f64 100644 --- a/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp +++ b/storage/src/tests/storageserver/rpc/cluster_controller_rpc_api_service_test.cpp @@ -57,7 +57,7 @@ struct FixtureBase { config.getConfig("stor-server").set("node_index", "1"); addSlobrokConfig(config, slobrok); - shared_rpc_resources = std::make_unique<SharedRpcResources>(config.getConfigId(), 0, 1); + shared_rpc_resources = std::make_unique<SharedRpcResources>(config.getConfigId(), 0, 1, 1); cc_service = std::make_unique<ClusterControllerApiRpcService>(dispatcher, *shared_rpc_resources); shared_rpc_resources->start_server_and_register_slobrok("my_cool_rpc_test"); } diff --git a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp index d1cdd649787..0b33da39c41 100644 --- a/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp +++ b/storage/src/tests/storageserver/rpc/storage_api_rpc_service_test.cpp @@ -119,7 +119,7 @@ public: cfg.set("is_distributor", is_distributor ? "true" : "false"); addSlobrokConfig(_config, slobrok); - _shared_rpc_resources = std::make_unique<SharedRpcResources>(_config.getConfigId(), 0, 1); + _shared_rpc_resources = std::make_unique<SharedRpcResources>(_config.getConfigId(), 0, 1, 1); // TODO make codec provider into interface so we can test decode-failures more easily? _codec_provider = std::make_unique<MessageCodecProvider>(_doc_type_repo); } diff --git a/storage/src/vespa/storage/config/stor-communicationmanager.def b/storage/src/vespa/storage/config/stor-communicationmanager.def index 8f24646367f..d674ee96aa3 100644 --- a/storage/src/vespa/storage/config/stor-communicationmanager.def +++ b/storage/src/vespa/storage/config/stor-communicationmanager.def @@ -63,6 +63,9 @@ use_direct_storageapi_rpc bool default=false ## The number of network (FNET) threads used by the shared rpc resource. rpc.num_network_threads int default=2 restart +## The number of events in the queue of a network (FNET) thread before it is woken up. +rpc.events_before_wakeup int default=1 restart + ## The number of (FNET) RPC targets to use per node in the cluster. ## ## The bucket id associated with a message is used to select the RPC target. diff --git a/storage/src/vespa/storage/storageserver/communicationmanager.cpp b/storage/src/vespa/storage/storageserver/communicationmanager.cpp index 9d4b7b58a6f..7a3dd16bbd1 100644 --- a/storage/src/vespa/storage/storageserver/communicationmanager.cpp +++ b/storage/src/vespa/storage/storageserver/communicationmanager.cpp @@ -429,7 +429,8 @@ void CommunicationManager::configure(std::unique_ptr<CommunicationManagerConfig> } _message_codec_provider = std::make_unique<rpc::MessageCodecProvider>(_component.getTypeRepo()->documentTypeRepo); - _shared_rpc_resources = std::make_unique<rpc::SharedRpcResources>(_configUri, config->rpcport, config->rpc.numNetworkThreads); + _shared_rpc_resources = std::make_unique<rpc::SharedRpcResources>(_configUri, config->rpcport, + config->rpc.numNetworkThreads, config->rpc.eventsBeforeWakeup); _cc_rpc_service = std::make_unique<rpc::ClusterControllerApiRpcService>(*this, *_shared_rpc_resources); rpc::StorageApiRpcService::Params rpc_params; rpc_params.compression_config = convert_to_rpc_compression_config(*config); diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp index 3aa3d21aa7b..4c075f44d35 100644 --- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp +++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.cpp @@ -62,9 +62,11 @@ public: SharedRpcResources::SharedRpcResources(const config::ConfigUri& config_uri, int rpc_server_port, - size_t rpc_thread_pool_size) + size_t rpc_thread_pool_size, + size_t rpc_events_before_wakeup) : _thread_pool(std::make_unique<FastOS_ThreadPool>(1024*60)), - _transport(std::make_unique<FNET_Transport>(TransportConfig(rpc_thread_pool_size).events_before_wakeup(1))), + _transport(std::make_unique<FNET_Transport>(TransportConfig(rpc_thread_pool_size). + events_before_wakeup(rpc_events_before_wakeup))), _orb(std::make_unique<FRT_Supervisor>(_transport.get())), _slobrok_register(std::make_unique<slobrok::api::RegisterAPI>(*_orb, slobrok::ConfiguratorFactory(config_uri))), _slobrok_mirror(std::make_unique<slobrok::api::MirrorAPI>(*_orb, slobrok::ConfiguratorFactory(config_uri))), diff --git a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h index 740277218c3..1fdd0f2648b 100644 --- a/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h +++ b/storage/src/vespa/storage/storageserver/rpc/shared_rpc_resources.h @@ -30,7 +30,8 @@ class SharedRpcResources { int _rpc_server_port; bool _shutdown; public: - SharedRpcResources(const config::ConfigUri& config_uri, int rpc_server_port, size_t rpc_thread_pool_size); + SharedRpcResources(const config::ConfigUri& config_uri, int rpc_server_port, + size_t rpc_thread_pool_size, size_t rpc_events_before_wakeup); ~SharedRpcResources(); FRT_Supervisor& supervisor() noexcept { return *_orb; } |