DRAM-Less Testing
The weakness of DRAM-less SSDs is random write with relatively small block sizes over large areas. We tested this by sending random 4K block-sized writes to a file of varying size to control the locality of the writes, which should put different levels of stress on the flash translation layer and reveal additional structure.
The shape of the curve is really interesting. It looks like there is three parts to it—one steep drop until 4 GB, a gradual increase between 4 GB and 8 GB, and a nearly linear falloff from 8 GB all the way to 120 GB.
For the first 4 GB, some sort of special flash-translation-layer is active, which provides very high speeds for highly localized writes, but without the ability to handle wide-spread writes without a large performance penalty—I suspect this is the controller's internal memory at work.
For test sizes above 8 GB, a different method is used, one that tries to find a balance between locality-preference and performance, which could be the flash-translation-layer stored in the device's flash memory (which is larger, but slower).
For the section in the middle, it looks like both systems are active at the same time, which explains how the results actually increase, while we would usually expect them to decrease the larger the transfer size.
IO Latency
In this section, we take a closer look at the IO latencies of our SSDs, which helps quantify the time it takes for a data transfer to travel through the OS and to the SSD controller, get executed, and report its completion back to the application. The numbers presented are the 99th percentile, recording an upper latency limit (=worst case) you can expect from the drive with the given IO load. The 99th percentile was chosen to eliminate outliers caused by random events, like OS processor scheduling and background processes using up CPU time. Latency is an important factor for enterprise sectors that need to achieve certain quality-of-service levels, but ends up playing an important role to us enthusiasts as well. Our goal here is to identify bottlenecks in the controller or flash-cell-erase process.
Mixed Accesses Patterns
Our final synthetic test workload examines IO performance with various mixed read/write ratios. On the horizontal axis, we start with a 100% read (0% write) operation on the left, moving through various read/write ratios until we reach 100% write (0% read) on the right. The 99% ratio values are especially important data points here since it's rare to only send read or write operations to a drive. It is much more common to have reads and writes interspaced in between, one source of which is disk "noise" created by the operating system or background programs. The other read/write ratios are useful as they help determine what performance you can expect from various application scenarios.