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
Comments Locked

56 Comments

View All Comments

  • JellyRoll - Saturday, November 24, 2012 - link

    Entertaining that you would link to thessdreview, which is pretty much unanimously known as the home of misinformation. Here is a link to the actual slide deck from that presentation, which does not ever mention deduplication.
    http://www.flashmemorysummit.com/English/Collatera...
  • CeriseCogburn - Saturday, December 29, 2012 - link

    LOL - good job, I will continue to read and see if all the "smart" people have finally shut the H up.
    I was hoping one would come by, apologize, and thank you.
    Of course I know better.
    *Happy the consensus is NOT the final word.*
  • dishayu - Friday, November 23, 2012 - link

    Get Kristian on to the next episode of the podcast and make him talk!!
  • popej - Friday, November 23, 2012 - link

    What exactly does it mean: "I TRIM'ed the drive after our 20 minute torture"?

    Shouldn't TRIM function be executed by OS all the time during torture test?
  • Kristian Vättö - Friday, November 23, 2012 - link

    Most of our tests are run without a partition, meaning that the OS has no access to the drive. After the torture, I created a partition which formats the drive and then deleted it. Formatting the drive is the same as TRIMing all user-accessible LBAs since it basically tells the controller to get rid of all data in the drive.
  • popej - Friday, November 23, 2012 - link

    Does it mean, that there was no TRIM command executed at all?

    Not when torturing drive, because it wasn't TRIM supported partition. Not when you "TRIM'ed" drive, because it was a format.

    While I agree that you can notice some weird effects, why do you describe them as TRIM problems? Sorry, but I don't know how your test could be relevant to standard use of SDD, when TRIM is active all the time.
  • Kristian Vättö - Friday, November 23, 2012 - link

    Formatting is the same as issuing a TRIM command to the whole drive. If I disable TRIM and format the drive, its performance won't restore since the drive still thinks the data is in use and hence you'll have to do read-modify-write when writing to the drive.

    They are problems in the sense that the performance should fully restore after formatting. If it doesn't, then TRIM does not function properly. Using an extreme scenario like we do it the best for checking if there is a problem; how that affects real world usage is another question. With light usage there shouldn't be a problem but you may notice the degradation in performance if your usage is write intensive.
  • popej - Friday, November 23, 2012 - link

    Basing on you test I would say, that format is not enough to restore drive performance after using it without TRIM. Quite possible that the state of the drive after torture without TRIM is very different to anything you can get when TRIM is active.

    It would be interesting to compare your test to real life scenario, with NTFS partition and working TRIM.
  • Kristian Vättö - Friday, November 23, 2012 - link

    With most SSDs, formatting the drive will fully restore it's performance, so the behavior we're seeing here is not completely normal.

    Remember that even if TRIM is active at all times, sending a TRIM command to the controller does not mean the data will be erased immediately. If you're constantly writing to the SSD, the controller may not have time to do garbage collection in real time and hence the SSD may be pushed to a very fragmented state as in our test where, as we can see, TRIM doesn't work perfectly.

    I know that our test may not translate to real world in most cases, but it's still a possible scenario if the drive is hammered enough.
  • JellyRoll - Friday, November 23, 2012 - link

    If the majority of your tests are conducted without a partition that means none of the storage bench results are with TRIM?

Log in

Don't have an account? Sign up now