Introduction to the TRIM Issue

TRIM in SandForce based SSDs has always been trickier than with other SSDs due to the fact that SandForce's way to deal with data is a lot more complicated. Instead of just writing the data to the NAND as other SSDs do, SandForce employs a real-time compression and de-duplication engine. When even your basic design is a lot more complex, there is a higher chance that something will go wrong. When other SSDs receive a TRIM command, they can simply clean the blocks with invalid data and that's it. SandForce, on the other hand, has to check if the data is used by something else (i.e. thanks to de-duplication). You don't want your SSD to erase data that can be crucial to your system's stability, do you?

As we have shown in dozens of reviews, TRIM doesn't work properly when dealing with incompressible data. It never has. That means when the drive is filled and tortured with incompressible data, it's put to a state where even TRIM does not fully restore performance. Since even Intel's own proprietary firmware didn't fix this, I believe the problem is so deep in the design that there is just no way to completely fix it. However, the TRIM issue we are dealing with today has nothing to do with incompressible data: now TRIM doesn't work properly with compressible data either.

Testing TRIM: It's Broken

SandForce doesn't behave normally when we put it through our torture test with compressible data. While other SSDs experience a slowdown in write speed, SandForce's write speed remains the same but read speed degrades instead. Below is an HD Tach graph of 240GB Corsair Force GS, which was first filled with compressible data and then peppered with compressible 4KB random writes (100% LBA space, QD=32):

And for comparison, here is the same HD Tach graph ran on a secure erased Force GS:

As you can see, write speed wasn't affected at all by the torture. However, read performance degraded by more than 50% from 402MB/s to 182MB/s. That is actually quite odd because reading from NAND is a far simpler process: You simply keep applying voltages until you get the desired outcome. There is no read-modify-write scheme, which is the reason why write speed degrades in the first place. We don't know the exact reason why read speed degrades in SandForce based SSDs but once again, it seems to be the way it was designed. My guess is that the degradation has something to do with how the data is decompressed but most likely there is something much more complicated in here.

Read speed degradation is not the real problem, however. So far we haven't faced a consumer SSD that wouldn't experience any degradation after enough torture. Given that consumer SSDs typically have only 7-15% of over-provisioned NAND, sooner than later you will run into a situation where read-modify-write is triggered, which will result in a substantial decline in write performance. With SandForce your write speed won't change (at least not by much) but the read speed goes downhill instead. It's a trade-off but neither is worse than the other as all workloads consist of both reads and writes.

To test TRIM, I TRIM'ed the drive after our 20 minute torture:

And here is the real issue. Normally TRIM would restore performance to clean-level state, but this is not the case. Read speed is definitely up from dirty state but it's not fully restored. Running TRIM again didn't yield any improvement either, so something is clearly broken here. Also, it didn't matter if I filled and tortured with drive with compressible, pseudo-random data, or incompressible data; the end result was always the same when I ran HD Tach.

I didn't want to rely completely on HD Tach as it's always possible that one benchmark behaves differently from others, especially when it comes to SandForce. I turned to ATTO since it uses highly compressible data as well to see if it would report data similar to our HD Tach results. Once again, I first secure erased the drive, filled it with sequential data and proceeded to torture the drive with 4KB random writes (LBA space 100%, QD=32) for 20 minutes:

As expected, write speed is not affected except for an odd bump at transfer size of 32KB. Since we are only talking about one IO size and performance actually degraded after TRIM, it's completely possible that this is simply an error.

The read speed ATTO graph is telling the same story as our HD Tach graphs; read speed does indeed degrade and is not fully restored after TRIM. The decrease in read speed is a lot smaller compared to our HD Tach results, but it should be kept in mind that ATTO reads/writes a lot less data to the drive compared to HD Tach, which reads/writes across the whole drive.

What we can conclude from the results is that TRIM is definitely broken in SandForce SSDs with firmware 5.0.0, 5.0.1, or 5.0.2. If your SandForce SSD is running the older 3.x.x firmware, you have nothing to worry about because this TRIM issue is limited strictly to 5.x.x firmwares. Luckily, this is not the end of the world because SandForce has been aware of this issue for a long time and a fix is already available for some drives. Let's have a look how the fix works.

Firmware 5.0.3 to the Rescue
POST A COMMENT

56 Comments

View All Comments

  • bradcollins - Thursday, November 22, 2012 - link

    One question, all of the tests at Anandtech for Sandforce performance after being hammered for a period of time are always over the entire drive. Do the drives maintain their performance if the random writes are only over 50% or 75% of the LBA's on the drive? Very few people actually fill up their SSD so I wonder if it is a truely relevant test? Reply
  • Impulses - Wednesday, November 28, 2012 - link

    You will always eventually use all of your SSD, wear leveling algorithms will spread data across all NAND packages... A certain portion will always be marked "empty" if you haven't filled it to capacity, but that space has been issued and it's subject to the performance degradation conditions AT tests for. Reply
  • Bullwinkle J Moose - Thursday, November 22, 2012 - link

    Time for an article on Cache Analysis?

    It looks to me as though the 1GB Dram Cache on the Intel DC S3700 is mainly responsible for smoothing out those peaks and valleys to deliver "Consistant" performance across the drive

    As for trim.....

    It's time to start with a fresh perspective on SSD's
    Reply
  • Bullwinkle J Moose - Thursday, November 22, 2012 - link

    I know Intel claimed otherwise on the dram usage, but I don't buy it

    Sounds more likely they are just sending the competition on a wild goose chase
    Reply
  • Bullwinkle J Moose - Thursday, November 22, 2012 - link

    Reread DC S3700 review again

    256MB of the 1GB is used for cache

    OK, my bad
    Reply
  • Bullwinkle J Moose - Thursday, November 22, 2012 - link

    Doh

    If I read it 5 more times I'll get it right eventually
    Reply
  • extide - Saturday, November 24, 2012 - link

    If it were that easy, don't you think other guys would have drives like the 3700 out? Reply
  • Kristian Vättö - Friday, November 23, 2012 - link

    The problem with caching in general is that there is no good way to test how much write/read caching the drive is doing. All we got is what manufacturers tell us, which may or may not be accurate. Reply
  • mayankleoboy1 - Friday, November 23, 2012 - link

    With each review, Samsung 840Pro looks better and better. Reply
  • JellyRoll - Friday, November 23, 2012 - link

    This information has been already hashed over by several sites, in particular TweakTown. They have been educating the public for months about the lack of TRIM with Sandforce SSDs.
    Other sites have also noticed the read degradation, and commented on it ad nauseum.
    Reply

Log in

Don't have an account? Sign up now