1## Running NVMe-OF Performace Testcases 2 3In order to reproduce test cases described in [SPDK NVMe-OF Performance Test Cases](https://dqtibwqq6s6ux.cloudfront.net/download/performance-reports/SPDK_nvmeof_perf_report_18.04.pdf) follow the following instructions. 4 5Currently RDMA NIC IP address assignment must be done manually before running the tests. 6 7# Prepare the configuration file 8Configure the target, initiators, and FIO workload in the json configuration file. 9 10## General 11Options which apply to both target and all initiator servers such as "password" and "username" fields. 12All servers are required to have the same user credentials for running the test. 13Test results can be found in /tmp/results directory. 14### transport 15Transport layer to use between Target and Initiator servers - rdma or tcp. 16 17## Target 18Configure the target server information. 19### nic_ips 20List of IP addresses othat will be used in this test.. 21NVMe namespaces will be split between provided IP addresses. 22So for example providing 2 IP's with 16 NVMe drives present will result in each IP managing 238 NVMe subystems. 24### mode 25"spdk" or "kernel" values allowed. 26### use_null_block 27Use null block device instead of present NVMe drives. Used for latency measurements as described 28in Test Case 3 of performance report. 29### num_cores 30List of CPU cores to assign for running SPDK NVMe-OF Target process. Can specify exact core numbers or ranges, eg: 31[0, 1, 10-15]. 32### nvmet_dir 33Path to directory with nvmetcli application. If not provided then system-wide package will be used 34by default. Not used if "mode" is set to "spdk". 35### num_shared_buffers 36Number of shared buffers to use when creating transport layer. 37 38## Initiator 39Describes initiator arguments. There can be more than one initiator section in the configuration file. 40For the sake of easier results parsing from multiple initiators please use only digits and letters 41in initiator section name. 42### ip 43Management IP address used for SSH communication with initiator server. 44### nic_ips 45List of target IP addresses to which the initiator should try to connect. 46### mode 47"spdk" or "kernel" values allowed. 48### num_cores 49Applies only to SPDK initiator. Number of CPUs core to use for running FIO job. 50If not specified then by default each connected subsystem gets its own CPU core. 51### nvmecli_dir 52Path to directory with nvme-cli application. If not provided then system-wide package will be used 53by default. Not used if "mode" is set to "spdk". 54 55## fio 56Fio job parameters. 57- bs: block size 58- qd: io depth 59- rw: workload mode 60- rwmixread: percentage of reads in readwrite workloads 61- run_time: time (in seconds) to run workload 62- ramp_time: time (in seconds) to run workload before statistics are gathered 63- run_num: how many times to run given workload in loop 64