Blob Blame History Raw
From b02af7c959377cb95521f1f8d17e8ac38d2999e5 Mon Sep 17 00:00:00 2001
From: Krishnan Parthasarathi <kparthas@redhat.com>
Date: Sat, 11 Jul 2015 09:21:27 +0530
Subject: [PATCH 312/320] glusterd: use 2 epoll worker threads by default

        Backport of http://review.gluster.org/11847

The no. of epoll worker threads can be configured
by adding the following option into glusterd.vol.

        option event-threads <NUM-OF-EPOLL_WORKERS>

BUG: 1241336
Change-Id: I2a9e2d81c64beaf54872081f9ce45355cf4dfca7
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/11630
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
(cherry picked from commit 6b7bdcb02cf39199d3720c2471121d14df64c8ab)
Reviewed-on: http://review.gluster.org/11847
Reviewed-on: https://code.engineering.redhat.com/gerrit/56625
Tested-by: Atin Mukherjee <amukherj@redhat.com>
---
 xlators/mgmt/glusterd/src/glusterd.c |   21 +++++++++++++++++++++
 xlators/mgmt/glusterd/src/glusterd.h |    1 +
 2 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
index 2c75545..b83b249 100644
--- a/xlators/mgmt/glusterd/src/glusterd.c
+++ b/xlators/mgmt/glusterd/src/glusterd.c
@@ -28,6 +28,7 @@
 #include "defaults.h"
 #include "list.h"
 #include "dict.h"
+#include "options.h"
 #include "compat.h"
 #include "compat-errno.h"
 #include "syscall.h"
@@ -1327,6 +1328,7 @@ init (xlator_t *this)
         char              *valgrind_str               = NULL;
         char              *transport_type             = NULL;
         char               var_run_dir[PATH_MAX]      = {0,};
+        int32_t            workers                    = 0;
 
 #ifndef GF_DARWIN_HOST_OS
         {
@@ -1775,6 +1777,15 @@ init (xlator_t *this)
         if (ret)
                 goto out;
 
+        GF_OPTION_INIT ("event-threads", workers, int32, out);
+        if (workers > 0 && workers != conf->workers) {
+                conf->workers = workers;
+                ret = event_reconfigure_threads (this->ctx->event_pool,
+                                                 workers);
+                if (ret)
+                        goto out;
+        }
+
         ret = 0;
 out:
         if (ret < 0) {
@@ -1953,5 +1964,15 @@ struct volume_options options[] = {
           .max  = 300,
           .default_value = TOSTRING(RPC_DEFAULT_PING_TIMEOUT),
         },
+        { .key   = {"event-threads"},
+          .type  = GF_OPTION_TYPE_INT,
+          .min   = 1,
+          .max   = 32,
+          .default_value = "2",
+          .description = "Specifies the number of event threads to execute "
+                         "in parallel. Larger values would help process"
+                         " responses faster, depending on available processing"
+                         " power. Range 1-32 threads."
+        },
         { .key   = {NULL} },
 };
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index c72c569..b6876f8 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -175,6 +175,7 @@ typedef struct {
         struct cds_list_head       missed_snaps_list;
         int                        ping_timeout;
         uint32_t                   generation;
+        int32_t                    workers;
 } glusterd_conf_t;
 
 
-- 
1.7.1