Commit b0760bd3 authored by Karol Latecki's avatar Karol Latecki Committed by Tomasz Zawadzki
Browse files

scripts/nvmf_perf: do not discover subsystems with nvmecli



Information about Target subsystems (port / nqn name /
ip address) is already saved at the time of their creation.
Avoid spawning nvme-cli processes and instead just filter
matching subsystems based on available information.

Signed-off-by: default avatarKarol Latecki <karol.latecki@intel.com>
Change-Id: I24d16315d67e5eaade48790b7fae45664110afcb
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14737


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarPawel Piatek <pawelx.piatek@intel.com>
Reviewed-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 4f74eb12
Loading
Loading
Loading
Loading
+3 −29
Original line number Diff line number Diff line
@@ -846,34 +846,8 @@ class Initiator(Server):
                          os.path.join(dest_dir, file))
        self.log.info("Done copying results")

    def discover_subsystems(self, address_list, subsys_no):
        num_nvmes = range(0, subsys_no)
        nvme_discover_output = ""
        for ip, subsys_no in itertools.product(address_list, num_nvmes):
            self.log.info("Trying to discover: %s:%s" % (ip, 4420 + subsys_no))
            nvme_discover_cmd = ["sudo",
                                 "%s" % self.nvmecli_bin,
                                 "discover", "-t", "%s" % self.transport,
                                 "-s", "%s" % (4420 + subsys_no),
                                 "-a", "%s" % ip]

            try:
                stdout = self.exec_cmd(nvme_discover_cmd)
                if stdout:
                    nvme_discover_output = nvme_discover_output + stdout
            except CalledProcessError:
                # Do nothing. In case of discovering remote subsystems of kernel target
                # we expect "nvme discover" to fail a bunch of times because we basically
                # scan ports.
                pass

        subsystems = re.findall(r'trsvcid:\s(\d+)\s+'  # get svcid number
                                r'subnqn:\s+([a-zA-Z0-9\.\-\:]+)\s+'  # get NQN id
                                r'traddr:\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',  # get IP address
                                nvme_discover_output)  # from nvme discovery output
        subsystems = filter(lambda x: x[-1] in address_list, subsystems)
        subsystems = filter(lambda x: "discovery" not in x[1], subsystems)
        subsystems = list(set(subsystems))
    def match_subsystems(self, target_subsytems):
        subsystems = [subsystem for subsystem in target_subsytems if subsystem[2] in self.target_nic_ips]
        subsystems.sort(key=lambda x: x[1])
        self.log.info("Found matching subsystems on target side:")
        for s in subsystems:
@@ -1649,7 +1623,7 @@ if __name__ == "__main__":
        target_obj.tgt_start()

        for i in initiators:
            i.discover_subsystems(i.target_nic_ips, target_obj.subsys_no)
            i.match_subsystems(target_obj.subsystem_info_list)
            if i.enable_adq:
                i.adq_configure_tc()