]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/test/vhost/common/run_fio.py
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / test / vhost / common / run_fio.py
index 0760b018c01d22093dc7794896e2371afd42eb65..4624a2f285b7d82fbf0e98aa7363e0d27cc3dec1 100755 (executable)
@@ -45,66 +45,66 @@ def save_file(path, mode, contents):
 
 
 def run_fio(vms, fio_cfg_fname, out_path, perf_vmex=False, json=False):
-        global fio_bin
-        job_name = os.path.splitext(os.path.basename(fio_cfg_fname))[0]
-
-        # Build command for FIO
-        fio_cmd = " ".join([fio_bin, "--eta=never"])
-        if json:
-            fio_cmd = " ".join([fio_bin, "--output-format=json"])
-        for vm in vms:
-            # vm[0] = IP address, vm[1] = Port number
-            fio_cmd = " ".join([fio_cmd,
-                                "--client={vm_ip},{vm_port}".format(vm_ip=vm[0], vm_port=vm[1]),
-                                "--remote-config {cfg}".format(cfg=fio_cfg_fname)])
-        print(fio_cmd)
-
-        if perf_vmex:
-            perf_dir = os.path.join(out_path, "perf_stats")
-            try:
-                os.mkdir(perf_dir)
-            except OSError:
-                pass
-
-            # Start gathering perf statistics for host and VM guests
-            perf_rec_file = os.path.join(perf_dir, "perf.data.kvm")
-            perf_run_cmd = "perf kvm --host --guest " + \
-                           "-o {0} stat record -a".format(perf_rec_file)
-            print(perf_run_cmd)
-            perf_p = exec_cmd(perf_run_cmd, blocking=False)
-
-        # Run FIO test on VMs
-        rc, out = exec_cmd(fio_cmd, blocking=True)
-
-        # if for some reason output contains lines with "eta" - remove them
-        out = re.sub(r'.+\[eta\s+\d{2}m:\d{2}s\]', '', out)
-
-        print(out)
-
-        if rc != 0:
-            print("ERROR! While executing FIO jobs - RC: {rc}".format(rc=rc, out=out))
-            sys.exit(rc)
-        else:
-            save_file(os.path.join(out_path, ".".join([job_name, "log"])), "w", out)
-
-        if perf_vmex:
-            # Stop gathering perf statistics and prepare some result files
-            perf_p.send_signal(signal.SIGINT)
-            perf_p.wait()
-
-            perf_stat_cmd = "perf kvm --host -i {perf_rec} stat report --event vmexit"\
-                .format(perf_rec=perf_rec_file)
-
-            rc, out = exec_cmd(" ".join([perf_stat_cmd, "--event vmexit"]),
-                               blocking=True)
-            print("VMexit host stats:")
-            print("{perf_out}".format(perf_out=out))
-            save_file(os.path.join(perf_dir, "vmexit_stats_" + job_name),
-                      "w", "{perf_out}".format(perf_out=out))
-            try:
-                os.remove(perf_rec_file)
-            except OSError:
-                pass
+    global fio_bin
+    job_name = os.path.splitext(os.path.basename(fio_cfg_fname))[0]
+
+    # Build command for FIO
+    fio_cmd = " ".join([fio_bin, "--eta=never"])
+    if json:
+        fio_cmd = " ".join([fio_bin, "--output-format=json"])
+    for vm in vms:
+        # vm[0] = IP address, vm[1] = Port number
+        fio_cmd = " ".join([fio_cmd,
+                            "--client={vm_ip},{vm_port}".format(vm_ip=vm[0], vm_port=vm[1]),
+                            "--remote-config {cfg}".format(cfg=fio_cfg_fname)])
+    print(fio_cmd)
+
+    if perf_vmex:
+        perf_dir = os.path.join(out_path, "perf_stats")
+        try:
+            os.mkdir(perf_dir)
+        except OSError:
+            pass
+
+        # Start gathering perf statistics for host and VM guests
+        perf_rec_file = os.path.join(perf_dir, "perf.data.kvm")
+        perf_run_cmd = "perf kvm --host --guest " + \
+                       "-o {0} stat record -a".format(perf_rec_file)
+        print(perf_run_cmd)
+        perf_p = exec_cmd(perf_run_cmd, blocking=False)
+
+    # Run FIO test on VMs
+    rc, out = exec_cmd(fio_cmd, blocking=True)
+
+    # if for some reason output contains lines with "eta" - remove them
+    out = re.sub(r'.+\[eta\s+\d{2}m:\d{2}s\]', '', out)
+
+    print(out)
+
+    if rc != 0:
+        print("ERROR! While executing FIO jobs - RC: {rc}".format(rc=rc, out=out))
+        sys.exit(rc)
+    else:
+        save_file(os.path.join(out_path, ".".join([job_name, "log"])), "w", out)
+
+    if perf_vmex:
+        # Stop gathering perf statistics and prepare some result files
+        perf_p.send_signal(signal.SIGINT)
+        perf_p.wait()
+
+        perf_stat_cmd = "perf kvm --host -i {perf_rec} stat report --event vmexit"\
+            .format(perf_rec=perf_rec_file)
+
+        rc, out = exec_cmd(" ".join([perf_stat_cmd, "--event vmexit"]),
+                           blocking=True)
+        print("VMexit host stats:")
+        print("{perf_out}".format(perf_out=out))
+        save_file(os.path.join(perf_dir, "vmexit_stats_" + job_name),
+                  "w", "{perf_out}".format(perf_out=out))
+        try:
+            os.remove(perf_rec_file)
+        except OSError:
+            pass
 
 
 def main():