From 761942e9fe8f6d7bbd5c56720e52dc4f6663cd9f Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Thu, 7 Sep 2017 18:48:34 +0530 Subject: mount/fuse: Make event-history feature configurable ... and disable it by default. Backport of: > Change-Id: Ia533788d309c78688a315dc8cd04d30fad9e9485 > Reviewed-on: https://review.gluster.org/18242 > BUG: 1467614 > cherry-picked from commit 956d43d6e89d40ee683547003b876f1f456f03b6 This is because having it disabled seems to improve performance. This could be due to the lock contention by the different epoll threads on the circular buff lock in the fop cbks just before writing their response to /dev/fuse. Just to provide some data - wrt ovirt-gluster hyperconverged environment, I saw an increase in IOPs by 12K with event-history disabled for randrom read workload. Usage: mount -t glusterfs -o event-history=on $HOSTNAME:$VOLNAME $MOUNTPOINT OR glusterfs --event-history=on --volfile-server=$HOSTNAME --volfile-id=$VOLNAME $MOUNTPOINT Change-Id: Ia533788d309c78688a315dc8cd04d30fad9e9485 BUG: 1495397 Signed-off-by: Krutika Dhananjay --- glusterfsd/src/glusterfsd.c | 28 ++++++++++++++++++++++++++++ glusterfsd/src/glusterfsd.h | 1 + 2 files changed, 29 insertions(+) (limited to 'glusterfsd') diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index 78b06bf4701..eeffdc5c34e 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -244,6 +244,8 @@ static struct argp_option gf_options[] = { "Override default for secure (SSL) management connections"}, {"localtime-logging", ARGP_LOCALTIME_LOGGING_KEY, 0, 0, "Enable localtime logging"}, + {"event-history", ARGP_FUSE_EVENT_HISTORY_KEY, "BOOL", + OPTION_ARG_OPTIONAL, "disable/enable fuse event-history"}, {0, 0, 0, 0, "Miscellaneous Options:"}, {0, } }; @@ -554,6 +556,15 @@ set_fuse_mount_options (glusterfs_ctx_t *ctx, dict_t *options) goto err; } } + if (cmd_args->event_history) { + ret = dict_set_str (options, "event-history", + cmd_args->event_history); + if (ret < 0) { + gf_msg ("glusterfsd", GF_LOG_ERROR, 0, glusterfsd_msg_4, + "event-history"); + goto err; + } + } ret = 0; err: return ret; @@ -1287,6 +1298,23 @@ no_oom_api: } cmd_args->subdir_mount = gf_strdup (arg); break; + case ARGP_FUSE_EVENT_HISTORY_KEY: + if (!arg) + arg = "no"; + + if (gf_string2boolean (arg, &b) == 0) { + if (b) { + cmd_args->event_history = "yes"; + } else { + cmd_args->event_history = "no"; + } + + break; + } + + argp_failure (state, -1, 0, + "unknown event-history setting \"%s\"", arg); + break; } return 0; diff --git a/glusterfsd/src/glusterfsd.h b/glusterfsd/src/glusterfsd.h index 871bcf61e58..6d1e16594b1 100644 --- a/glusterfsd/src/glusterfsd.h +++ b/glusterfsd/src/glusterfsd.h @@ -98,6 +98,7 @@ enum argp_option_keys { #endif ARGP_LOCALTIME_LOGGING_KEY = 177, ARGP_SUBDIR_MOUNT_KEY = 178, + ARGP_FUSE_EVENT_HISTORY_KEY = 179, }; struct _gfd_vol_top_priv { -- cgit