What is NVMe?

NVMe (Non-Volatile Memory Express) is an Industry standard for non-volatile memory based enterprise level storage solution. NVMe is designed to remove the bottleneck that have been experienced by legacy hard drive infrastructure.

NVMe is an interface which is designed to have faster data transfer between enterprise level systems and solid-state drives (SSDs). NVMe defines the standardize register set, command set for better performance. Simple command set takes around 13 commands to get NVMe device up and running in comparison to SCSI or ACI  which takes around 400 commands.

How NVMe works

NVMe works based on a paired submission and completion queue mechanism. Host software places commands into the submission queue. The NVMe controller places command completions into an associated completion queue. Multiple submission queues may report completions on a single completion queue, provided the controller supports arbitration with different priorities. Message-Signaled Interrupts Extended (MSI-X) and interrupt steering is supported as well.

High-end SSDs have been made using the PCI Express bus before NVMe, but using non-standard specification interfaces. By standardizing the interface of SSDs, operating systems only need one driver to work with all SSDs adhering to the specification.

Intel SSD 750 series, an SSD that uses NVM Express

NVMe advantages

  1. NVMe supports deep queue depth of 64k commands per queue and upto 64k IO queue.
  2. NVMe provided low latency, low CPU utilization and high performance.
  3. NVMe requires less than half the number of CPU instructions than the SCSI command set.
  4. Support for enterprise capabilities like end-to-end data protection, enhanced error reporting, and virtualization

OS support

  • Linux:  RHEL 6.5, 6.6, 6.7, 7.0, 7.1 SUSE 11 SP3, 12, Ubuntu 13, 14
  • Windows: Windows 7, 8, 8.1, 10 Windows Server 2008 R2, 2012, 2012 R2
  • UNIX: FreeBSD, Solaris 11.2 and higher
  • VMware: ESXi 5.5, 6.0

NVMe Use cases

  1. Simultaneous read and write performances
  2. Performance measurement with database applications workload
  3. System level validation of NVMe Controller
  4. Testing for NVMe over Fabrics, including RDMA and Fiber Channel solutions
  5. WHQL testing for NVMe driver

[Tweet “NVMe Primer ~ via @CalsoftInc”]