nvme - Murray-LIANG/forgetful GitHub Wiki

NVMe and Related

Storage Evolution

  • SRAM
    • Latency: 1X
    • Size of Data: 1X
  • DRAM
    • Latency: ~10X
    • Size of Data: ~100X
  • 3D XPoint
    • Latency: ~100X
    • Size of Data: ~1000X
  • NAND
    • Latency: ~100000X
    • Size of Data: ~1000X
  • HDD
    • Latency: ~10 MillionX
    • Size of Data: ~10000X

NVMe

NVM Express is a standardized high performance software interface for PCI Express Solid State Drives.

NVMe-of

NVMe over Fabrics: NVMe commands over storage networking fabric.

Remote access to storage - iSCSI vs NVMe-oF

  • iSCSI: Network -> iSCSI target -> SCSI -> Block Device Abstraction(BDEV) -> SCSI devices
  • NVMe-oF: Network -> NVMe-oF target -> NVMe -> Block Device Abstraction(BDEV) -> NVMe devices

NVMe-oF supports various fabric transports: RDMA, InfiniBand, Fibre Channel, .etc.

The idea of NVMe-oF is to extend the efficiency of the local NVMe interface over a network fabric, Ethernet or InfiniBand. NVMe commands and data structures are transferred end to end.

NVMe-oF relies on RDMA for performance: bypassing TCP/IP.

RDMA

Remote Direct Memory Access, is an Advance Transport Protocol (same layer as TCP and UDP)

Main features

  • Remote memory read/write semantics in addition to send/receive
  • Kernel bypass / direct user space access
  • Full hardware offload
  • Secure, channel based IO

Application advantage

  • Low latency
  • High bandwidth
  • Low CPU consumption