Commit 0f94938a authored by Seth Howell's avatar Seth Howell Committed by Darek Stojaczyk
Browse files

scripts/fio.py: add support for specifying num_jobs



This will allow us to test a greater number of connections without
having to add more subsystems when doing NVMe-oF testing.

Change-Id: I33203d6db79b30abb065f098c16840096478c5de
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/451677


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 38527b07
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ direct=1
bs=%(blocksize)d
iodepth=%(iodepth)d
norandommap=%(norandommap)d
numjobs=%(numjobs)s
%(verify)s
verify_dump=1

@@ -44,9 +45,9 @@ def interrupt_handler(signum, frame):
def main():

    global fio
    if (len(sys.argv) < 6):
    if (len(sys.argv) < 7):
        print("usage:")
        print("  " + sys.argv[0] + " <nvmf/iscsi> <io_size> <queue_depth> <test_type> <runtime>")
        print("  " + sys.argv[0] + " <nvmf/iscsi> <io_size> <queue_depth> <test_type> <runtime> <num_jobs>")
        print("advanced usage:")
        print("If you want to run fio with verify, please add verify string after runtime.")
        print("Currently fio.py only support write rw randwrite randrw with verify enabled.")
@@ -57,8 +58,10 @@ def main():
    queue_depth = int(sys.argv[3])
    test_type = sys.argv[4]
    runtime = sys.argv[5]
    num_jobs = sys.argv[6]

    verify = False
    if len(sys.argv) > 6:
    if len(sys.argv) > 7:
        verify = True

    if app == "nvmf":
@@ -81,7 +84,7 @@ def main():
    signal.signal(signal.SIGTERM, interrupt_handler)
    signal.signal(signal.SIGINT, interrupt_handler)
    fio = Popen([fio_executable, '-'], stdin=PIPE)
    fio.communicate(create_fio_config(io_size, queue_depth, device_paths, test_type, runtime, verify).encode())
    fio.communicate(create_fio_config(io_size, queue_depth, device_paths, test_type, runtime, num_jobs, verify).encode())
    fio.stdin.close()
    rc = fio.wait()
    print("FIO completed with code %d\n" % rc)
@@ -99,7 +102,7 @@ def get_nvmf_target_devices():
    return re.findall("(nvme[0-9]+n[0-9]+)\n", output)


def create_fio_config(size, q_depth, devices, test, run_time, verify):
def create_fio_config(size, q_depth, devices, test, run_time, num_jobs, verify):
    norandommap = 0
    if not verify:
        verifyfio = ""
@@ -108,7 +111,8 @@ def create_fio_config(size, q_depth, devices, test, run_time, verify):
        verifyfio = verify_template
    fiofile = fio_template % {"blocksize": size, "iodepth": q_depth,
                              "testtype": test, "runtime": run_time,
                              "norandommap": norandommap, "verify": verifyfio}
                              "norandommap": norandommap, "verify": verifyfio,
                              "numjobs": num_jobs}
    for (i, dev) in enumerate(devices):
        fiofile += fio_job_template % {"jobnumber": i, "device": dev}
    return fiofile
+2 −2
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@ function node_login_fio_logout() {
	done
	iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
	sleep 1
	$fio_py iscsi 512 1 write 2
	$fio_py iscsi 512 1 read 2
	$fio_py iscsi 512 1 write 2 1
	$fio_py iscsi 512 1 read 2 1
	iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
	sleep 1
}
+6 −6
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ function running_config() {
	timing_exit start_iscsi_tgt2

	sleep 1
	$fio_py iscsi 4096 1 randrw 5
	$fio_py iscsi 4096 1 randrw 5 1
}

if [ -z "$TARGET_IP" ]; then
@@ -92,12 +92,12 @@ iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
trap "iscsicleanup; killprocess $pid; delete_tmp_files; exit 1" SIGINT SIGTERM EXIT

sleep 1
$fio_py iscsi 4096 1 randrw 1 verify
$fio_py iscsi 131072 32 randrw 1 verify
$fio_py iscsi 524288 128 randrw 1 verify
$fio_py iscsi 4096 1 randrw 1 1 verify
$fio_py iscsi 131072 32 randrw 1 1 verify
$fio_py iscsi 524288 128 randrw 1 1 verify

if [ $RUN_NIGHTLY -eq 1 ]; then
	$fio_py iscsi 4096 1 write 300 verify
	$fio_py iscsi 4096 1 write 300 1 verify

	# Run the running_config test which will generate a config file from the
	#  running iSCSI target, then kill and restart the iSCSI target using the
@@ -107,7 +107,7 @@ if [ $RUN_NIGHTLY -eq 1 ]; then
fi

# Start hotplug test case.
$fio_py iscsi 1048576 128 rw 10 &
$fio_py iscsi 1048576 128 rw 10 1 &
fio_pid=$!

sleep 3
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ iscsiadm -m node --login -p $MIGRATION_ADDRESS:$ISCSI_PORT

# fio tests for multi-process
sleep 1
$fio_py iscsi 4096 32 randrw 10 &
$fio_py iscsi 4096 32 randrw 10 1 &
fiopid=$!
sleep 5

+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
timing_exit discovery

timing_enter fio
$fio_py iscsi 131072 8 randwrite 10 verify
$fio_py iscsi 131072 8 randwrite 10 1 verify
timing_exit fio

rm -f ./local-job0-0-verify.state
Loading