Random and Sequential Read/Write Speed

The four corners of SSD performance are as follows: random read, random write, sequential read and sequential write speed. Random accesses are generally small in size, while sequential accesses tend to be larger and thus we have the four Iometer tests we use in all of our reviews. Our first test writes 4KB in a completely random pattern over an 8GB space of the drive to simulate the sort of random access that you'd see on an OS drive (even this is more stressful than a normal desktop user would see). We perform three concurrent IOs and run the test for 3 minutes. The results reported are in average MB/s over the entire time. We use both standard pseudo randomly generated data for each write as well as fully random data to show you both the maximum and minimum performance offered by SandForce based drives in these tests. The average performance of SF drives will likely be somewhere in between the two values for each drive you see in the graphs. For an understanding of why this matters, read our original SandForce article.

Desktop Iometer—4KB Random Read (4K Aligned)

Plextor M3 provides very good 4KB random read performance. Looking at the Crucial m4 that uses the same Marvell controller, the Plextor M3 is 47% faster in random performance, so Plextor has clearly paid attention to their firmware.

Desktop Iometer—4KB Random Write (4K Aligned)—8GB LBA Space

Random write performance is not as great as random read but still quite good enough for most workloads. This time Crucial's m4 comes out 33% faster than the M3, while the SF-2281 drives are all faster as well—write less data thanks to realtime compression and data deduplication techniques and your write speeds should generally be faster.

Desktop Iometer—4KB Random Write (8GB LBA Space QD=32)

Switching the queue depth to 32 shows the difference between SandForce and non-SandForce quite well. SandForce is in its own class but among the Marvell SSDs, the Plextor M3 is the fastest. It's important to note that only heavy I/O workloads use queue depths that reach 32; most usage models don't go over 5.

Sequential Read/Write Speed

To measure sequential performance we ran a one minute long 128KB sequential test over the entire span of the drive at a queue depth of 1. The results reported are in average MB/s over the entire test length.

Desktop Iometer—128KB Sequential Read (4K Aligned)

Sequential read speed is identical to Crucial m4 and Corsair P3, and good if not class leading for a SATA 6Gbps SSD.

Desktop Iometer—128KB Sequential Write (4K Aligned)

In sequential write speeds, the M3 is once again the fastest Marvell based SSD and is only a few percent behind SandForce based SSDs.

Plextor M3 and Test Setup AS-SSD Incompressible Sequential Performance
Comments Locked

113 Comments

View All Comments

  • epobirs - Thursday, April 5, 2012 - link

    Kind of sad to see a review where Plextor is treated as an unknown. For quite a long time they were the brand against which all others were judged. For one simple reason: ifPlextor said their drive functioned at speed X, it did. If other companies were claiming a new high performance mark and Plextor hadn't produced a matching product yet, it often meant those other companies were lying about their performance.
  • cjcoats - Thursday, April 5, 2012 - link

    I'm a scientific user (environmental model), and I have a transaction-pattern I've never seen SSD benchmarks use:

    My dataset transactions are of the form "read or
    write the record for variable V for time T"
    (where record-size S may depend upon the variable;
    typical values range from 16K to 100 MB).

    The datasets have a matching form:

    * a header that indexes the variables, their
    records, and various other metadata

    * a sequence of data records for the time
    steps of the variables.

    This may be implemented using one of various
    standard scientific dataset libraries (netCDF,
    HDF, ...)

    A transaction basically is of the form:

    Seek to the start of the record for variable
    V, time T

    Read or write S bytes at that location.

    NONE of the SSD benchmarks I've seen have this
    kind of "seek, then access" pattern. I have the
    suspicion that Sandforce based drives will do
    miserably with it, but have no hard info.

    Any ideas?
  • bji - Thursday, April 5, 2012 - link

    SSDs have no "seek". Your program's concept of "seek" is just setting the blocks that it will be reading to those at the beginning of a file, but from an SSDs perspective, there is little to no difference between the random access patterns used for a particular operation and any other random access patterns. The only significant difference is between random and serial access.

    My point being, your case sounds like it is covered exactly by the "random write" and "random read" benchmarks. It doesn't matter which part of the file you are "seeking" to, just that your access is non-sequential. All random access is the same (more or less) to an SSD.

    This is most of the performance win of SSDs over HDDs - no seek time. SSDs have no head to move and no latency waiting for the desired sectors to arrive under the head.
  • cjcoats - Friday, April 6, 2012 - link

    I guessed you'd understand the obvious: seek() interacts with data-compression.

    A seek to a 500MB point may depend upon sequentially decompressing the preceding 500 MB of data in order to figure out what the data-compression has done with that 500MB seek-point!

    That's how you have to do seeks in conjunction with the software "gzlib", for example.

    So how do SandForce drives deal with that scenario ??
  • Cerb - Saturday, April 7, 2012 - link

    Nobody can say exactly the results for your specific uses, but it would probably be best to focus on other aspects of the drives, given performance of the current lot. You might get a 830, while a 520 could be faster at your specific application, but you'd more than likely be dealing with <10% either way. If it was more than that, a good RAID card would be a worthy addition to your hardware.

    If you must read the file up to point X, then that's a sequential read. If you read an index and then just read what you need, then that's a random read.

    Compression of the data *IN*SOFTWARE* is a CPU/RAM issue, not an SSD issue. For that, focus on incompressible data results.

    TBH, though, if you must read 500MB into it to edit a single small record, you should consider seekable data formats, instead of wasting all that CPU time.
  • bji - Saturday, April 7, 2012 - link

    They don't use streaming ciphers. They use block ciphers that encrypt each block individually and independently. Once the data makes it to the drive, there is no concept of 'file', it's just 'sectors' or whatever the block concept is at the SATA interface level. As far as the SSD is concerned, no two sectors have any relationship and wear levelling moves them around the drive in seemingly arbitrary (but designed to spread writes out) ways.

    Basically what happens is that the drive represents the sequence of sectors on the drive using the same linear addressing scheme as is present in hard drives, but maintains a mapping for each sector from the linear address that the operating system uses to identify it, to whatever unrelated actual block and sub-block address on the device that it is physically located at. Via this mapping the SSD controller can write blocks wherever makes the most sense, but present a consistent linear sector addressing scheme to the operating system. The SSD can even move blocks around in the background and during unrelated writes, which it definitely does to reduce write amplification and once again for wear levelling purposes. The operating system always believes that it wrote the sector at address N, and the SSD will always deliver the same data back when address N is read back, but under the covers the actual data can be moved around and positioned arbitrarily by the SSD.

    Given the above, and given that blocks are being written all over the flash all the time regardless of how linearly the operating system thinks it has arranged them, there really isn't any concept of contiguously compressed blocks and having to start back at the beginning of some stream of data to uncompress data.

    Keep in mind also that the Sanforce drives do de-duplication as well (as far as I know), which means that for many blocks that have the same contents, only one copy needs to actually be stored in the flash and the block mapping can point multiple operating system sector addresses at the same physical flash block and sub-block segment that has the data. Of course it would have to do copy-on-write when the sector is written but that's not hard once you have all of the rest of the controller machinery built.

    SSD controllers must be really interesting tech to work on. I can't imagine all of the cool algorithmic tricks that must be going on under the covers, but it's fun to try.
  • BolleY2K - Thursday, April 5, 2012 - link

    Don´t forget about the Yamaha CRW-F1... ;-)
  • Metaluna - Saturday, April 7, 2012 - link

    Heh I still have one of those Yamahas, along with some old Kodak Gold CD-R's. I have no real use for them anymore but hate to toss them.
  • Hourglasss - Thursday, April 5, 2012 - link

    You made a forgivable mistake with OCZ's Vertex 4. You said the M3 was the fastest non-sandforce drive. The Vertex 4 is made with OCZ's new everest-2 controller that they developed in-house after acquiring indillix (don't know if they spelled that right). So the M3 is fast, but it's second for non sandforce.
  • zipz0p - Thursday, April 5, 2012 - link

    I am glad that I'm not the only one who noticed this! :)

Log in

Don't have an account? Sign up now