1This application measures the software overhead of I/O submission 2and completion for both the SPDK NVMe driver and an AIO file handle. 3It runs a random read, queue depth = 1 workload to a single device, 4and captures TSC as follows: 5 6* Submission: capture TSC before and after the I/O submission 7 call (SPDK or AIO). 8* Completion: capture TSC before and after the I/O completion 9 check. Only record the TSC delta if the I/O completion check 10 resulted in a completed I/O. Also use heuristics in the AIO 11 case to account for time spent in interrupt handling outside 12 of the actual I/O completion check. 13 14Usage: 15 16To test software overhead for a 4KB I/O over a 10 second period: 17 18SPDK: overhead -s 4096 -t 10 19AIO: overhead -s 4096 -t 10 /dev/nvme0n1 20 21Note that for the SPDK case, it will only use the first namespace 22on the first controller found by SPDK. If a different namespace is 23desired, attach controllers individually to the kernel NVMe driver 24to ensure they will not be enumerated by SPDK. 25