From baa566be8832a56fdea7068d84844ec1ec84d8d9 Mon Sep 17 00:00:00 2001 From: mohit84 Date: Thu, 15 Oct 2020 16:28:58 +0530 Subject: [PATCH 504/511] io-stats: Configure ios_sample_buf_size based on sample_interval value (#1574) io-stats xlator declares a ios_sample_buf_size 64k object(10M) per xlator but in case of sample_interval is 0 this big buffer is not required so declare the default value only while sample_interval is not 0.The new change would be helpful to reduce RSS size for a brick and shd process while the number of volumes are huge. > Change-Id: I3e82cca92e40549355edfac32580169f3ce51af8 > Fixes: #1542 > Signed-off-by: Mohit Agrawal > (Cherry picked from commit f71660eb879a9cd5761e5adbf10c783e959a990a) > (Reviewed on upstream link https://github.com/gluster/glusterfs/issues/1542) Change-Id: I3e82cca92e40549355edfac32580169f3ce51af8 BUG: 1898778 Signed-off-by: Mohit Agrawal Reviewed-on: https://code.engineering.redhat.com/gerrit/221183 Tested-by: RHGS Build Bot Reviewed-by: Sunil Kumar Heggodu Gopala Acharya --- tests/bugs/glusterd/daemon-log-level-option.t | 8 ++++---- xlators/debug/io-stats/src/io-stats.c | 26 ++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/tests/bugs/glusterd/daemon-log-level-option.t b/tests/bugs/glusterd/daemon-log-level-option.t index 66e55e3..5352a63 100644 --- a/tests/bugs/glusterd/daemon-log-level-option.t +++ b/tests/bugs/glusterd/daemon-log-level-option.t @@ -61,8 +61,8 @@ rm -f /var/log/glusterfs/glustershd.log TEST $CLI volume set all cluster.daemon-log-level WARNING TEST $CLI volume start $V0 -# log should not have any info messages -EXPECT 0 Info_messages_count "/var/log/glusterfs/glustershd.log" +# log does have 1 info message specific to configure ios_sample_buf_size in io-stats xlator +EXPECT 1 Info_messages_count "/var/log/glusterfs/glustershd.log" # log should not have any debug messages EXPECT 0 Debug_messages_count "/var/log/glusterfs/glustershd.log" @@ -78,8 +78,8 @@ rm -f /var/log/glusterfs/glustershd.log TEST $CLI volume set all cluster.daemon-log-level ERROR TEST $CLI volume start $V0 -# log should not have any info messages -EXPECT 0 Info_messages_count "/var/log/glusterfs/glustershd.log" +# log does have 1 info message specific to configure ios_sample_buf_size in io-stats xlator +EXPECT 1 Info_messages_count "/var/log/glusterfs/glustershd.log" # log should not have any warning messages EXPECT 0 Warning_messages_count "/var/log/glusterfs/glustershd.log" diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index aa91a0a..9b34895 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -3724,6 +3724,15 @@ xlator_set_loglevel(xlator_t *this, int log_level) } } +void +ios_sample_buf_size_configure(char *name, struct ios_conf *conf) +{ + conf->ios_sample_buf_size = 1024; + gf_log(name, GF_LOG_INFO, + "Configure ios_sample_buf " + " size is 1024 because ios_sample_interval is 0"); +} + int reconfigure(xlator_t *this, dict_t *options) { @@ -3779,8 +3788,13 @@ reconfigure(xlator_t *this, dict_t *options) int32, out); GF_OPTION_RECONF("ios-dump-format", dump_format_str, options, str, out); ios_set_log_format_code(conf, dump_format_str); - GF_OPTION_RECONF("ios-sample-buf-size", conf->ios_sample_buf_size, options, - int32, out); + if (conf->ios_sample_interval) { + GF_OPTION_RECONF("ios-sample-buf-size", conf->ios_sample_buf_size, + options, int32, out); + } else { + ios_sample_buf_size_configure(this->name, conf); + } + GF_OPTION_RECONF("sys-log-level", sys_log_str, options, str, out); if (sys_log_str) { sys_log_level = glusterd_check_log_level(sys_log_str); @@ -3947,8 +3961,12 @@ init(xlator_t *this) GF_OPTION_INIT("ios-dump-format", dump_format_str, str, out); ios_set_log_format_code(conf, dump_format_str); - GF_OPTION_INIT("ios-sample-buf-size", conf->ios_sample_buf_size, int32, - out); + if (conf->ios_sample_interval) { + GF_OPTION_INIT("ios-sample-buf-size", conf->ios_sample_buf_size, int32, + out); + } else { + ios_sample_buf_size_configure(this->name, conf); + } ret = ios_init_sample_buf(conf); if (ret) { -- 1.8.3.1