summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.c21
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
index 2c755457715..b83b249a404 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 c72c5690a79..b6876f80071 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;