This is an automated email from the ASF dual-hosted git repository.

alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/master by this push:
     new 48068c7  [kserver] output info on server-wide size limit
48068c7 is described below

commit 48068c7cbf4066e3d2081960b50d466baf01543d
Author: Alexey Serbin <ale...@apache.org>
AuthorDate: Mon May 17 17:11:25 2021 -0700

    [kserver] output info on server-wide size limit
    
    With this patch, Kudu servers output an INFO log line about the maximum
    number of threads in a server-wide thread pool.  That's useful when
    assessing how many threads a Kudu server might legitimately spawn.
    Yes, those numbers can be calculated given the setting for RLIMIT_NPROC
    and values in /proc/sys/kernel/pid_max and /proc/sys/kernel/threads-max,
    but (a) those settings might change after the start of a server and
    (b) it's convenient to have a pre-computed number ready in the logs.
    
    Change-Id: I62b4168fc153e693f0fcc3d6d1ecfc6be0e69b47
    Reviewed-on: http://gerrit.cloudera.org:8080/17474
    Reviewed-by: Bankim Bhavsar <ban...@cloudera.com>
    Tested-by: Alexey Serbin <aser...@cloudera.com>
---
 src/kudu/kserver/kserver.cc | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/kudu/kserver/kserver.cc b/src/kudu/kserver/kserver.cc
index d325301..73021ae 100644
--- a/src/kudu/kserver/kserver.cc
+++ b/src/kudu/kserver/kserver.cc
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <initializer_list>
+#include <limits>
 #include <memory>
 #include <mutex>
 #include <ostream>
@@ -28,7 +29,6 @@
 #include <glog/logging.h>
 
 #include "kudu/fs/fs_manager.h"
-#include "kudu/gutil/integral_types.h"
 #include "kudu/gutil/strings/numbers.h"
 #include "kudu/gutil/strings/substitute.h"
 #include "kudu/rpc/messenger.h"
@@ -94,7 +94,7 @@ namespace kserver {
 
 namespace {
 
-int GetThreadPoolThreadLimit(Env* env) {
+int32_t GetThreadPoolThreadLimit(Env* env) {
   // Maximize this process' running thread limit first, if possible.
   static std::once_flag once;
   std::call_once(once, [&]() {
@@ -117,7 +117,7 @@ int GetThreadPoolThreadLimit(Env* env) {
 
     // Callers of this function expect a signed 32-bit integer, so we need to
     // further cap the limit just in case it's too large.
-    rlimit = std::min(rlimit, static_cast<uint64_t>(kint32max));
+    rlimit = std::min<uint64_t>(rlimit, std::numeric_limits<int32_t>::max());
 
     // Take only 10% of the calculated limit; we don't want to hog the system.
     return static_cast<int32_t>(rlimit) / 10;
@@ -159,7 +159,9 @@ Status KuduServer::Init() {
 
   // These pools are shared by all replicas hosted by this server, and thus
   // are capped at a portion of the overall per-euid thread resource limit.
-  int server_wide_pool_limit = GetThreadPoolThreadLimit(fs_manager_->env());
+  auto server_wide_pool_limit = GetThreadPoolThreadLimit(fs_manager_->env());
+  LOG(INFO) << Substitute("Server-wide thread pool size limit: $0",
+                          server_wide_pool_limit);
   RETURN_NOT_OK(ThreadPoolBuilder("prepare")
                 .set_max_threads(server_wide_pool_limit)
                 .Build(&tablet_prepare_pool_));

Reply via email to