Currently only 40% or less of the raw bandwidth of the flash memory in the SSDs is delivered by the storage system to the applications.
This is because the I/O requests from upper-level software, such as file systems, databases, and key-value stores, are usually not optimized to generate SSD-friendly access patterns. This observation is similar to what FlashGraph has observed:
the random (4KB) I/O throughput of SSDs today is only two or three times less than their sequential I/O.
Besides the bandwidth, only 40% or less of the raw bandwidth of the flash memory in the SSDs is delivered by the storage system to the applications.
To overcome these problems, SDF has redesigned the interface of SSDs:
- The read request is limited to 4KB, but the write unit size is limited to be multiple of the flash erase block size and require write address to be block-aligned.
- The internal parallelism are exposed to the applications. Each channels have it’s own independent controller and exposed as a single device.
- Erase operation is exposed as a new command to the device. So that no over-provision space are needed and no gc background process need to be run.
The I/O stack is much simpler in this design. However, the application design becomes more complicated.