Non-volatile memory express over fabric (NVMe-oF™) solid-state drive (SSD) enclosure performance optimization using SSD controller memory buffer
AssigneeDell Products L.P.
InventorAmnon Izhar
Life of this patent
Estimating the term…
Abstract
Systems and methods provide alternative store-and-forward mechanisms to utilize a Non-Volatile Memory Express (NVMe™) drive's Controller Memory Buffer (CMB) instead of using a fabric bridge's memory resources to increase overall throughput. In various embodiment this successfully avoids performance scaling limitations of a centralized store-and-forward memory location for data input/output, within a large disk-array, that may otherwise oversubscribe the available memory space.
Claims20
A computer-implemented method for improving Non-Volatile Memory Express (NVMe™) Over Fabric (NVMe-oF™) Solid-State Drive (SSD) enclosure performance, the method comprising:
- at a first interface, receiving from a host, according to a first network protocol, a read command to read input/output (I/O) data from a shared non-volatile memory;
- converting the read command to obtain a converted read command that is compatible with a second network protocol;
- and
- at a second interface, communicating the converted read command to a submission queue of an SSD controller, the SSD controller being implemented in an SSD and performing steps comprising:
- in response to determining that a volatile memory in the SSD comprises capacity to buffer the I/O data, using a memory data pointer to allocate a memory range in the volatile memory;
- reading the I/O data from the shared non-volatile memory without passing the I/O data to one or more bridge memory devices in a network bridge thereby avoiding a reduction in bridge memory bandwidth;
- writing the I/O data to the volatile memory;
- and
- communicating to the host that the I/O data is available to be read from the volatile memory.
A computer-implemented method for improving Non-Volatile Memory Express (NVMe™) Over Fabric (NVMe-oF™) Solid-State Drive (SSD) enclosure performance, the method comprising:
- at a first interface, receiving from a host, according to a first network protocol, a write command to write input/output (I/O) data to a shared non-volatile memory;
- converting the write command to obtain a converted write command that is compatible with a second network protocol;
- and
- at a second interface, communicating the converted write command to a submission queue of an SSD controller, the SSD controller being implemented in an SSD and performing steps comprising:
- reading the I/O data from the volatile memory;
- writing the I/O data to the shared non-volatile memory without using bridge memory in a network bridge as store-and-forward buffer thereby avoiding a bridge memory performance reduction due to the bridge memory becoming congested;
- and
- communicating to the host that the I/O data has been written to the shared non-volatile memory.
An information handling system comprising:
- a Solid-State Drive (SSD) enclosure comprising:
- a first interface that couples to a host to receive, according to a first network protocol, a read command to read input/output (I/O) data from a shared non-volatile memory;
- a conversion module that converts the read command into a converted read command that is compatible with a second network protocol;
- one or more bridge memory devices;
- and
- a second interface that couples to an SSD that comprises an SSD controller and volatile memory the SSD controller configured to perform steps comprising:
- at a submission queue, receiving the converted read command;
- in response to determining that the volatile memory comprises capacity to buffer the I/O data, using a memory data pointer to allocate a memory range in the volatile memory;
- reading the I/O data from the shared non-volatile memory, without passing the I/O data to the one or more bridge memory devices thereby avoiding a reduction in bridge memory bandwidth;
- writing the I/O data to the volatile memory;
- and
- communicating to the host that the I/O data is available to be read from the volatile memory.
Dependencies are inferred from the claim text.