Spdk/test/lib/nvme/overhead
Daniel Verkamp fcb00f3780 nvme: expand probe information to a struct
spdk_nvme_probe() will now provide a struct spdk_nvme_probe_info to the
probe and attach callbacks in place of the PCI device pointer.

This struct contains the useful information that could be retrieved from
the PCI device during probe.

The goal of this change is to allow expansion of the probe information
in the future when other transports (specifically, NVMe over Fabrics)
are added that do not necessarily use PCI addressing or device IDs.

Change-Id: I59a2a9e874e248ce5fa1d7f4b57c8056962ff3cd
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
2016-11-02 14:15:02 -07:00
..
.gitignore nvme: add gitignore to overhead directory 2016-08-02 14:33:21 -07:00
Makefile env: Make the environment library configurable. 2016-10-05 11:51:37 -07:00
overhead.c nvme: expand probe information to a struct 2016-11-02 14:15:02 -07:00
README nvme: add new test application to measure SW overhead 2016-08-01 12:58:30 -07:00

This application measures the software overhead of I/O submission
and completion for both the SPDK NVMe driver and an AIO file handle.
It runs a random read, queue depth = 1 workload to a single device,
and captures TSC as follows:

* Submission: capture TSC before and after the I/O submission
  call (SPDK or AIO).
* Completion: capture TSC before and after the I/O completion
  check.  Only record the TSC delta if the I/O completion check
  resulted in a completed I/O.  Also use heuristics in the AIO
  case to account for time spent in interrupt handling outside
  of the actual I/O completion check.

Usage:

To test software overhead for a 4KB I/O over a 10 second period:

SPDK:  overhead -s 4096 -t 10
AIO:   overhead -s 4096 -t 10 /dev/nvme0n1

Note that for the SPDK case, it will only use the first namespace
on the first controller found by SPDK.  If a different namespace is
desired, attach controllers individually to the kernel NVMe driver
to ensure they will not be enumerated by SPDK.