diff options
author | Alexander Smirnov <alex@ydb.tech> | 2024-04-16 09:11:59 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2024-04-16 09:11:59 +0000 |
commit | 25de1d521ca218e2b040739fea77a39e9fc543e9 (patch) | |
tree | 21521d8866cf1462dbd52c071cf369974c29650e /contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc | |
parent | bf444b8ed4d0f6bf17fd753e2cf88f9440012e87 (diff) | |
parent | 0a63d9ddc516f206f2b8745ce5e5dfa60190d755 (diff) | |
download | ydb-25de1d521ca218e2b040739fea77a39e9fc543e9.tar.gz |
Merge branch 'rightlib' into mergelibs-240416-0910
Diffstat (limited to 'contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc')
-rw-r--r-- | contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc index abb20e245d..154e3471b8 100644 --- a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc +++ b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc @@ -31,10 +31,23 @@ #include "src/core/lib/gpr/useful.h" #include "src/core/lib/gprpp/sync.h" #include "src/core/lib/gprpp/thd.h" +#include "src/core/lib/gprpp/env.h" +#include "src/core/lib/gpr/string.h" namespace grpc { namespace { +size_t GetNextingThreadNumFromEnv() { + auto value = grpc_core::GetEnv("GRPC_NEXTING_THREAD_NUM_ENV"); + if (!value.has_value()) return 0; + int parse_succeeded = gpr_parse_nonnegative_int(value->c_str()); + + if (parse_succeeded <= 0) { + return 0; + } + return static_cast<size_t>(parse_succeeded); +} + gpr_once g_once_init_callback_alternative = GPR_ONCE_INIT; grpc_core::Mutex* g_callback_alternative_mu; @@ -55,6 +68,13 @@ struct CallbackAlternativeCQ { cq = new CompletionQueue; int num_nexting_threads = grpc_core::Clamp(gpr_cpu_num_cores() / 2, 2u, 16u); + + auto threads_limit_env = GetNextingThreadNumFromEnv(); + if (threads_limit_env) { + gpr_log(GPR_INFO, "Nexting thread number changed via env from %d to %zd", num_nexting_threads, threads_limit_env); + num_nexting_threads = static_cast<int>(threads_limit_env); + } + nexting_threads = new std::vector<grpc_core::Thread>; for (int i = 0; i < num_nexting_threads; i++) { nexting_threads->emplace_back( |