aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/grpc/server/grpc_server.h
diff options
context:
space:
mode:
authoreivanov89 <eivanov89@ydb.tech>2023-01-31 20:33:45 +0300
committereivanov89 <eivanov89@ydb.tech>2023-01-31 20:33:45 +0300
commitbbc27c3fbad3ce6cbd9aa2f5b652df89ca861bab (patch)
tree3ac88835a51f8943675a3de892b8caf9d6f221ad /library/cpp/grpc/server/grpc_server.h
parent9e9a539f90b6551d4626af86d5b66f8447349936 (diff)
downloadydb-bbc27c3fbad3ce6cbd9aa2f5b652df89ca861bab.tar.gz
add option to set number of workers per CQ
Diffstat (limited to 'library/cpp/grpc/server/grpc_server.h')
-rw-r--r--library/cpp/grpc/server/grpc_server.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/library/cpp/grpc/server/grpc_server.h b/library/cpp/grpc/server/grpc_server.h
index c9b48a6676..1f31f7166a 100644
--- a/library/cpp/grpc/server/grpc_server.h
+++ b/library/cpp/grpc/server/grpc_server.h
@@ -54,7 +54,14 @@ struct TServerOptions {
//! Number of worker threads.
DECLARE_FIELD(WorkerThreads, size_t, 2);
- //! Create one completion queue per thread
+ //! Number of workers per completion queue, i.e. when
+ // WorkerThreads=8 and PriorityWorkersPerCompletionQueue=2
+ // there will be 4 completion queues. When set to 0 then
+ // only UseCompletionQueuePerThread affects number of CQ.
+ DECLARE_FIELD(WorkersPerCompletionQueue, size_t, 0);
+
+ //! Obsolete. Create one completion queue per thread.
+ // Setting true equals to the WorkersPerCompletionQueue=1
DECLARE_FIELD(UseCompletionQueuePerThread, bool, false);
//! Memory quota size for grpc server in bytes. Zero means unlimited.
@@ -166,7 +173,17 @@ class IGRpcService: public TThrRefBase {
public:
virtual grpc::Service* GetService() = 0;
virtual void StopService() noexcept = 0;
+
virtual void InitService(grpc::ServerCompletionQueue* cq, TLoggerPtr logger) = 0;
+
+ virtual void InitService(
+ const std::vector<std::unique_ptr<grpc::ServerCompletionQueue>>& cqs,
+ TLoggerPtr logger,
+ size_t index)
+ {
+ InitService(cqs[index % cqs.size()].get(), logger);
+ }
+
virtual void SetGlobalLimiterHandle(TGlobalLimiter* limiter) = 0;
virtual bool IsUnsafeToShutdown() const = 0;
virtual size_t RequestsInProgress() const = 0;