From 4e07343fea31303cb1040810727b2a498a195057 Mon Sep 17 00:00:00 2001 From: Karol Latecki Date: Wed, 28 Sep 2022 15:26:40 +0200 Subject: [PATCH] scripts/nvmf_perf: common connect & disconnect methods names Rename "kernel_init_connect/disconnect" methods and create equivalents in SPDK Initiator class. This allows to skip conditional checks in main section of the script. Change-Id: I23f620670d628c602dfdc1f24b2ddf493993ae12 Signed-off-by: Karol Latecki Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14739 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki Reviewed-by: Pawel Piatek Reviewed-by: Krzysztof Karas Reviewed-by: Michal Berger --- scripts/perf/nvmf/run_nvmf.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/scripts/perf/nvmf/run_nvmf.py b/scripts/perf/nvmf/run_nvmf.py index d73d24a33..156e816ac 100755 --- a/scripts/perf/nvmf/run_nvmf.py +++ b/scripts/perf/nvmf/run_nvmf.py @@ -904,8 +904,6 @@ runtime={run_time} rate_iops={rate_iops} """ if "spdk" in self.mode: - bdev_conf = self.gen_spdk_bdev_conf(self.subsystem_info_list) - self.exec_cmd(["echo", "'%s'" % bdev_conf, ">", "%s/bdev.conf" % self.spdk_dir]) ioengine = "%s/build/fio/spdk_bdev" % self.spdk_dir spdk_conf = "spdk_json_conf=%s/bdev.conf" % self.spdk_dir else: @@ -949,7 +947,7 @@ rate_iops={rate_iops} # TODO: hipri disabled for now, as it causes fio errors: # io_u error on file /dev/nvme2n1: Operation not supported - # See comment in KernelInitiator class, kernel_init_connect() function + # See comment in KernelInitiator class, init_connect() function if hasattr(self, "ioengine") and "io_uring" in self.ioengine: fio_config = fio_config + """ fixedbufs=1 @@ -1350,7 +1348,7 @@ class KernelInitiator(Initiator): if "SPDK" in x["ModelNumber"] or "Linux" in x["ModelNumber"]] return nvme_list - def kernel_init_connect(self): + def init_connect(self): self.log.info("Below connection attempts may result in error messages, this is expected!") for subsystem in self.subsystem_info_list: self.log.info("Trying to connect %s %s %s" % subsystem) @@ -1382,7 +1380,7 @@ class KernelInitiator(Initiator): _ = self.exec_cmd(["sudo", "cat", "%s" % (sysfs_opt_path)]) self.log.info("%s=%s" % (sysfs_opt_path, _)) - def kernel_init_disconnect(self): + def init_disconnect(self): for subsystem in self.subsystem_info_list: self.exec_cmd(["sudo", self.nvmecli_bin, "disconnect", "-n", subsystem[1]]) time.sleep(1) @@ -1458,6 +1456,21 @@ class SPDKInitiator(Initiator): self.log.info("SPDK built") self.exec_cmd(["sudo", "%s/scripts/setup.sh" % self.spdk_dir]) + def init_connect(self): + # Not a real "connect" like when doing "nvme connect" because SPDK's fio + # bdev plugin initiates connection just before starting IO traffic. + # This is just to have a "init_connect" equivalent of the same function + # from KernelInitiator class. + # Just prepare bdev.conf JSON file for later use and consider it + # "making a connection". + bdev_conf = self.gen_spdk_bdev_conf(self.subsystem_info_list) + self.exec_cmd(["echo", "'%s'" % bdev_conf, ">", "%s/bdev.conf" % self.spdk_dir]) + + def init_disconnect(self): + # SPDK Initiator does not need to explicity disconnect as this gets done + # after fio bdev plugin finishes IO. + pass + def gen_spdk_bdev_conf(self, remote_subsystem_list): bdev_cfg_section = { "subsystems": [ @@ -1634,9 +1647,7 @@ if __name__ == "__main__": configs = [] power_daemon = None for i in initiators: - if i.mode == "kernel": - i.kernel_init_connect() - + i.init_connect() cfg = i.gen_fio_config(rw, fio_rw_mix_read, block_size, io_depth, target_obj.subsys_no, fio_num_jobs, fio_ramp_time, fio_run_time, fio_rate_iops, fio_offset, fio_offset_inc) @@ -1684,8 +1695,7 @@ if __name__ == "__main__": t.join() for i in initiators: - if i.mode == "kernel": - i.kernel_init_disconnect() + i.init_disconnect() i.copy_result_files(args.results) if power_daemon: