diff --git a/doc/nvme.md b/doc/nvme.md index 56d8d240e..3565156d7 100644 --- a/doc/nvme.md +++ b/doc/nvme.md @@ -58,24 +58,24 @@ demonstrate how to use perf. Example: Using perf for 4K 100% Random Read workload to a local NVMe SSD for 300 seconds ~~~{.sh} -perf -q 128 -s 4096 -w randread -r 'trtype:PCIe traddr:0000:04:00.0' -t 300 +perf -q 128 -o 4096 -w randread -r 'trtype:PCIe traddr:0000:04:00.0' -t 300 ~~~ Example: Using perf for 4K 100% Random Read workload to a remote NVMe SSD exported over the network via NVMe-oF ~~~{.sh} -perf -q 128 -s 4096 -w randread -r 'trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420' -t 300 +perf -q 128 -o 4096 -w randread -r 'trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420' -t 300 ~~~ Example: Using perf for 4K 70/30 Random Read/Write mix workload to all local NVMe SSDs for 300 seconds ~~~{.sh} -perf -q 128 -s 4096 -w randrw -M 70 -t 300 +perf -q 128 -o 4096 -w randrw -M 70 -t 300 ~~~ Example: Using perf for extended LBA format CRC guard test to a local NVMe SSD, users must write to the SSD before reading the LBA from SSD ~~~{.sh} -perf -q 1 -s 4096 -w write -r 'trtype:PCIe traddr:0000:04:00.0' -t 300 -e 'PRACT=0,PRCKH=GUARD' -perf -q 1 -s 4096 -w read -r 'trtype:PCIe traddr:0000:04:00.0' -t 200 -e 'PRACT=0,PRCKH=GUARD' +perf -q 1 -o 4096 -w write -r 'trtype:PCIe traddr:0000:04:00.0' -t 300 -e 'PRACT=0,PRCKH=GUARD' +perf -q 1 -o 4096 -w read -r 'trtype:PCIe traddr:0000:04:00.0' -t 200 -e 'PRACT=0,PRCKH=GUARD' ~~~ # Public Interface {#nvme_interface} @@ -227,8 +227,8 @@ Example: identical shm_id and non-overlapping core masks [-c core mask for I/O submission/completion] [-i shared memory group ID] -./perf -q 1 -s 4096 -w randread -c 0x1 -t 60 -i 1 -./perf -q 8 -s 131072 -w write -c 0x10 -t 60 -i 1 +./perf -q 1 -o 4096 -w randread -c 0x1 -t 60 -i 1 +./perf -q 8 -o 131072 -w write -c 0x10 -t 60 -i 1 ~~~ ## Limitations {#nvme_multi_process_limitations} diff --git a/examples/ioat/perf/perf.c b/examples/ioat/perf/perf.c index d98b7a079..fdc222096 100644 --- a/examples/ioat/perf/perf.c +++ b/examples/ioat/perf/perf.c @@ -250,7 +250,7 @@ usage(char *program_name) printf("\t[-c core mask for distributing I/O submission/completion work]\n"); printf("\t[-q queue depth]\n"); printf("\t[-n number of channels]\n"); - printf("\t[-s transfer size in bytes]\n"); + printf("\t[-o transfer size in bytes]\n"); printf("\t[-t time in seconds]\n"); printf("\t[-v verify copy result if this switch is on]\n"); } @@ -261,9 +261,9 @@ parse_args(int argc, char **argv) int op; construct_user_config(&g_user_config); - while ((op = getopt(argc, argv, "c:hn:q:s:t:v")) != -1) { + while ((op = getopt(argc, argv, "c:hn:o:q:t:v")) != -1) { switch (op) { - case 's': + case 'o': g_user_config.xfer_size_bytes = atoi(optarg); break; case 'n': diff --git a/examples/nvme/perf/perf.c b/examples/nvme/perf/perf.c index e7a8ec4ad..b5418b473 100644 --- a/examples/nvme/perf/perf.c +++ b/examples/nvme/perf/perf.c @@ -911,7 +911,7 @@ static void usage(char *program_name) #endif printf("\n"); printf("\t[-q io depth]\n"); - printf("\t[-s io size in bytes]\n"); + printf("\t[-o io size in bytes]\n"); printf("\t[-w io pattern type, must be one of\n"); printf("\t\t(read, write, randread, randwrite, rw, randrw)]\n"); printf("\t[-M rwmixread (100 for reads, 0 for writes)]\n"); @@ -938,7 +938,7 @@ static void usage(char *program_name) printf("\t PRCHK Control of Protection Information Checking (PRCHK=GUARD|REFTAG|APPTAG)\n"); printf("\t Example: -e 'PRACT=0,PRCHK=GUARD|REFTAG|APPTAG'\n"); printf("\t -e 'PRACT=1,PRCHK=GUARD'\n"); - printf("\t[-d DPDK huge memory size in MB.]\n"); + printf("\t[-s DPDK huge memory size in MB.]\n"); printf("\t[-m max completions per poll]\n"); printf("\t\t(default: 0 - unlimited)\n"); printf("\t[-i shared memory group ID]\n"); @@ -1280,14 +1280,11 @@ parse_args(int argc, char **argv) g_core_mask = NULL; g_max_completions = 0; - while ((op = getopt(argc, argv, "c:d:e:i:lm:q:r:s:t:w:DLM:")) != -1) { + while ((op = getopt(argc, argv, "c:e:i:lm:o:q:r:s:t:w:DLM:")) != -1) { switch (op) { case 'c': g_core_mask = optarg; break; - case 'd': - g_dpdk_mem = atoi(optarg); - break; case 'e': if (parse_metadata(optarg)) { usage(argv[0]); @@ -1303,6 +1300,9 @@ parse_args(int argc, char **argv) case 'm': g_max_completions = atoi(optarg); break; + case 'o': + g_io_size_bytes = atoi(optarg); + break; case 'q': g_queue_depth = atoi(optarg); break; @@ -1313,7 +1313,7 @@ parse_args(int argc, char **argv) } break; case 's': - g_io_size_bytes = atoi(optarg); + g_dpdk_mem = atoi(optarg); break; case 't': g_time_in_sec = atoi(optarg); diff --git a/test/nvme/nvme.sh b/test/nvme/nvme.sh index 18b8800f5..9cdcb21e2 100755 --- a/test/nvme/nvme.sh +++ b/test/nvme/nvme.sh @@ -111,10 +111,10 @@ done timing_exit identify timing_enter perf -$rootdir/examples/nvme/perf/perf -q 128 -w read -s 12288 -t 1 -LL -i 0 +$rootdir/examples/nvme/perf/perf -q 128 -w read -o 12288 -t 1 -LL -i 0 if [ -b /dev/ram0 ]; then # Test perf with AIO device - $rootdir/examples/nvme/perf/perf /dev/ram0 -q 128 -w read -s 12288 -t 1 -LL -i 0 + $rootdir/examples/nvme/perf/perf /dev/ram0 -q 128 -w read -o 12288 -t 1 -LL -i 0 report_test_completion "nvme_perf" fi timing_exit perf @@ -153,11 +153,11 @@ timing_exit arbitration if [ `uname` = Linux ]; then timing_enter multi_secondary - $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -s 4096 -t 3 -c 0x1 & + $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x1 & pid0=$! - $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -s 4096 -t 3 -c 0x2 & + $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x2 & pid1=$! - $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -s 4096 -t 3 -c 0x4 + $rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x4 wait $pid0 wait $pid1 report_test_completion "nvme_multi_secondary" diff --git a/test/nvmf/host/perf.sh b/test/nvmf/host/perf.sh index e39d6e2f3..ef5214c8e 100755 --- a/test/nvmf/host/perf.sh +++ b/test/nvmf/host/perf.sh @@ -44,10 +44,10 @@ $rpc_py construct_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 "trtype:RDMA traddr: # Test multi-process access to local NVMe device if [ -n "$local_nvme_trid" ]; then - $rootdir/examples/nvme/perf/perf -i 0 -q 32 -s 4096 -w randrw -M 50 -t 1 -r "$local_nvme_trid" + $rootdir/examples/nvme/perf/perf -i 0 -q 32 -o 4096 -w randrw -M 50 -t 1 -r "$local_nvme_trid" fi -$rootdir/examples/nvme/perf/perf -q 32 -s 4096 -w randrw -M 50 -t 1 -r "trtype:RDMA adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:4420" +$rootdir/examples/nvme/perf/perf -q 32 -o 4096 -w randrw -M 50 -t 1 -r "trtype:RDMA adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:4420" sync $rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 @@ -63,8 +63,8 @@ if [ $RUN_NIGHTLY -eq 1 ]; then qd_depth=("1" "128") io_size=("512" "131072") for qd in ${qd_depth[@]}; do - for s in ${io_size[@]}; do - $rootdir/examples/nvme/perf/perf -q $qd -s $s -w randrw -M 50 -t 10 -r "trtype:RDMA adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:4420" + for o in ${io_size[@]}; do + $rootdir/examples/nvme/perf/perf -q $qd -o $o -w randrw -M 50 -t 10 -r "trtype:RDMA adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:4420" done done