From 742a4eed244833761697646044f20675d1411292 Mon Sep 17 00:00:00 2001 From: Shreyas Siravara Date: Wed, 6 Dec 2017 07:41:19 -0800 Subject: nfs: Enable multi-core epoll support in gNFSd Change-Id: Ie8a7b1ba04b0e83f5ec7a09f9d181fe59be479ca BUG: 1522847 Signed-off-by: Shreyas Siravara --- xlators/nfs/server/src/nfs.c | 22 +++++++++++++++++++++- xlators/nfs/server/src/nfs.h | 5 +++-- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'xlators/nfs') diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index b03f407e1bb..577c67833ce 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -1158,6 +1158,10 @@ nfs_init_state (xlator_t *this) nfs->register_portmap = rpcsvc_register_portmap_enabled (nfs->rpcsvc); + GF_OPTION_INIT ("nfs.event-threads", + nfs->event_threads, uint32, free_foppool); + event_reconfigure_threads (this->ctx->event_pool, nfs->event_threads); + this->private = (void *)nfs; INIT_LIST_HEAD (&nfs->versions); nfs->generation = 1965; @@ -1384,6 +1388,11 @@ nfs_reconfigure_state (xlator_t *this, dict_t *options) nfs_reconfigure_acl3 (this); } + GF_OPTION_RECONF ("nfs.event-threads", + nfs->event_threads, options, uint32, out); + event_reconfigure_threads (this->ctx->event_pool, nfs->event_threads); + + ret = 0; out: return ret; @@ -2122,6 +2131,17 @@ struct volume_options options[] = { .description = "When this option is set to off NFS falls back to " "standard readdir instead of readdirp" }, - + { .key = {"nfs.event-threads"}, + .type = GF_OPTION_TYPE_SIZET, + .min = 1, + .max = 32, + .default_value = "1", + .description = "Specifies the number of event threads to execute in" + "in parallel. Larger values would help process" + " responses faster, depending on available processing" + " power. Range 1-32 threads.", + .op_version = {GD_OP_VERSION_4_0_0}, + .flags = OPT_FLAG_SETTABLE, + }, { .key = {NULL} }, }; diff --git a/xlators/nfs/server/src/nfs.h b/xlators/nfs/server/src/nfs.h index 9bcc88f5548..33ba419a573 100644 --- a/xlators/nfs/server/src/nfs.h +++ b/xlators/nfs/server/src/nfs.h @@ -93,13 +93,14 @@ struct nfs_state { char *rmtab; struct rpc_clnt *rpc_clnt; gf_boolean_t server_aux_gids; - uint32_t server_aux_gids_max_age; - gid_cache_t gid_cache; + uint32_t server_aux_gids_max_age; + gid_cache_t gid_cache; uint32_t generation; gf_boolean_t register_portmap; char *rpc_statd; char *rpc_statd_pid_file; gf_boolean_t rdirplus; + uint32_t event_threads; }; struct nfs_inode_ctx { -- cgit