From aa3d9c38b5950e5b244b2d093313ecfa4cb79ed5 Mon Sep 17 00:00:00 2001 From: Vlad Zolotarov Date: Tue, 12 Jun 2018 14:21:26 -0400 Subject: [PATCH 1/5] scylla_lib.sh: tolerate perftune.py errors When we check the currently configured tuning mode perftune.py is allowed to return an error. get_tune_mode() has to be able to tolerate them. Signed-off-by: Vlad Zolotarov --- dist/common/scripts/scylla_lib.sh | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/dist/common/scripts/scylla_lib.sh b/dist/common/scripts/scylla_lib.sh index 238f3ca30c..7e154174d9 100644 --- a/dist/common/scripts/scylla_lib.sh +++ b/dist/common/scripts/scylla_lib.sh @@ -46,6 +46,21 @@ verify_args() { fi } +# +# get_mode_cpu_set +# +get_mode_cpu_set() { + local mode=$1 + local mode_cpu_mask=`/usr/lib/scylla/perftune.py --tune net --nic "$nic" --mode "$mode" --get-cpu-mask` 2>&- + + # If the given mode is not supported - return invalid CPU set + if [[ "$?" -ne "0" ]]; then + echo "-1" + else + echo "$mode_cpu_mask" | /usr/lib/scylla/hex2list.py + fi +} + # # check_cpuset_conf # @@ -56,9 +71,9 @@ get_tune_mode() { [[ ! -e '/etc/scylla.d/cpuset.conf' ]] && return local cur_cpuset=`cat /etc/scylla.d/cpuset.conf | cut -d "\"" -f2- | cut -d" " -f2` - local mq_cpuset=`/usr/lib/scylla/perftune.py --tune net --nic "$nic" --mode mq --get-cpu-mask | /usr/lib/scylla/hex2list.py` - local sq_cpuset=`/usr/lib/scylla/perftune.py --tune net --nic "$nic" --mode sq --get-cpu-mask | /usr/lib/scylla/hex2list.py` - local sq_split_cpuset=`/usr/lib/scylla/perftune.py --tune net --nic "$nic" --mode sq_split --get-cpu-mask | /usr/lib/scylla/hex2list.py` + local mq_cpuset=`get_mode_cpu_set 'mq'` + local sq_cpuset=`get_mode_cpu_set 'sq'` + local sq_split_cpuset=`get_mode_cpu_set 'sq_split'` local tune_mode="" case "$cur_cpuset" in From 77463ddc3b5bc93d49dbe85d473997d94f431fde Mon Sep 17 00:00:00 2001 From: Vlad Zolotarov Date: Tue, 12 Jun 2018 15:25:55 -0400 Subject: [PATCH 2/5] scylla_io_setup: print the io_properties.yaml file name and not its handle info In order to get a file name from the given file() handle one should use a file_handle.name property. Signed-off-by: Vlad Zolotarov --- dist/common/scripts/scylla_io_setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/common/scripts/scylla_io_setup b/dist/common/scripts/scylla_io_setup index ba7cf7efe9..52bf64826a 100755 --- a/dist/common/scripts/scylla_io_setup +++ b/dist/common/scripts/scylla_io_setup @@ -64,7 +64,7 @@ if __name__ == "__main__": properties_file = file("/etc/scylla.d/io_properties.yaml", "w") yaml.dump({ "disks": disk_properties }, properties_file, default_flow_style=False) ioconf = file("/etc/scylla.d/io.conf", "w") - ioconf.write("SEASTAR_IO=\"--io-properties-file={}\"\n".format(properties_file)) + ioconf.write("SEASTAR_IO=\"--io-properties-file={}\"\n".format(properties_file.name)) else: if os.environ.has_key("SCYLLA_CONF"): conf_dir = os.environ["SCYLLA_CONF"] From 26277e59736f23115ba0c4d1107d4c339db6d68a Mon Sep 17 00:00:00 2001 From: Vlad Zolotarov Date: Tue, 12 Jun 2018 15:51:10 -0400 Subject: [PATCH 3/5] scylla_io_setup: hardcode the "mountpoint" YAML node to "/var/lib/scylla" for AMIs Signed-off-by: Vlad Zolotarov --- dist/common/scripts/scylla_io_setup | 1 + 1 file changed, 1 insertion(+) diff --git a/dist/common/scripts/scylla_io_setup b/dist/common/scripts/scylla_io_setup index 52bf64826a..148f4e462b 100755 --- a/dist/common/scripts/scylla_io_setup +++ b/dist/common/scripts/scylla_io_setup @@ -39,6 +39,7 @@ if __name__ == "__main__": idata = scylla_util.aws_instance() disk_properties = {} + disk_properties["mountpoint"] = "/var/lib/scylla" nr_disks = len(idata.ephemeral_disks()) ## both i3 and i2 can run with 1 I/O Queue per shard if idata.instance() == "i3.large": From 038b2f3be2e2776697024a5e972f42c29ba8c93a Mon Sep 17 00:00:00 2001 From: Vlad Zolotarov Date: Tue, 12 Jun 2018 18:54:34 -0400 Subject: [PATCH 4/5] scylla_io_setup: fix a typo: s/write_bandwdith/write_bandwidth/ Signed-off-by: Vlad Zolotarov --- dist/common/scripts/scylla_io_setup | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/common/scripts/scylla_io_setup b/dist/common/scripts/scylla_io_setup index 148f4e462b..18e2e1e283 100755 --- a/dist/common/scripts/scylla_io_setup +++ b/dist/common/scripts/scylla_io_setup @@ -46,22 +46,22 @@ if __name__ == "__main__": disk_properties["read_iops"] = 111000 disk_properties["read_bandwidth"] = 653925080 disk_properties["write_iops"] = 36800 - disk_properties["write_bandwdith"] = 215066473 + disk_properties["write_bandwidth"] = 215066473 elif idata.instance() == "i3.xlarge": disk_properties["read_iops"] = 200800 disk_properties["read_bandwidth"] = 1185106376 disk_properties["write_iops"] = 53180 - disk_properties["write_bandwdith"] = 423621267 + disk_properties["write_bandwidth"] = 423621267 elif idata.instance_class() == "i3": disk_properties["read_iops"] = 411200 * nr_disks disk_properties["read_bandwidth"] = 2015342735 * nr_disks disk_properties["write_iops"] = 181500 * nr_disks - disk_properties["write_bandwdith"] = 808775652 * nr_disks + disk_properties["write_bandwidth"] = 808775652 * nr_disks elif idata.instance_class() == "i2": disk_properties["read_iops"] = 64000 * nr_disks disk_properties["read_bandwidth"] = 507338935 * nr_disks disk_properties["write_iops"] = 57100 * nr_disks - disk_properties["write_bandwdith"] = 483141731 * nr_disks + disk_properties["write_bandwidth"] = 483141731 * nr_disks properties_file = file("/etc/scylla.d/io_properties.yaml", "w") yaml.dump({ "disks": disk_properties }, properties_file, default_flow_style=False) ioconf = file("/etc/scylla.d/io.conf", "w") From 0004c29aba404b928948c33f76b04491989afe93 Mon Sep 17 00:00:00 2001 From: Vlad Zolotarov Date: Tue, 12 Jun 2018 19:14:22 -0400 Subject: [PATCH 5/5] scylla_io_setup: properly define the disk_properties YAML hierarchy disk_properties map should be an entry in the 'disk' list hierarchy. Currently this list is going to containe a single element. Signed-off-by: Vlad Zolotarov --- dist/common/scripts/scylla_io_setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/common/scripts/scylla_io_setup b/dist/common/scripts/scylla_io_setup index 18e2e1e283..11b0348790 100755 --- a/dist/common/scripts/scylla_io_setup +++ b/dist/common/scripts/scylla_io_setup @@ -63,7 +63,7 @@ if __name__ == "__main__": disk_properties["write_iops"] = 57100 * nr_disks disk_properties["write_bandwidth"] = 483141731 * nr_disks properties_file = file("/etc/scylla.d/io_properties.yaml", "w") - yaml.dump({ "disks": disk_properties }, properties_file, default_flow_style=False) + yaml.dump({ "disks": [ disk_properties ] }, properties_file, default_flow_style=False) ioconf = file("/etc/scylla.d/io.conf", "w") ioconf.write("SEASTAR_IO=\"--io-properties-file={}\"\n".format(properties_file.name)) else: