But How About Incompressible Data and TRIM?

I mentioned earlier that TRIM has never functioned properly in SandForce SSDs when the drive is tortured with incompressible datam, which has never been a strength of SandForce. When it faces some, it's not exactly sure what to do with it. Your data will of course be written just like compressible data, but when your whole design is based on the assumption that the data will be compressed on the fly, there are some design trade-offs when it comes to performance with incompressible data. SandForce has said that third generation controllers should bring vast improvements to incompressible performance but we have no concrete numbers as of yet.

To test how TRIM behaves with incompressible data, I filled the Force GS with incompressible data and then tortured it with incompressible 4KB random writes (100% LBA space, QD=32) for 60 minutes:

Corsair Force GS—Resiliency—AS SSD—6Gbps
  Read Speed Write Speed
Firmware 5.0.2 5.0.3 5.0.2 5.0.3
Clean 494.1MB/s 507.6MB/s 270.5MB/s 266.8MB/s
After Torture 372.3MB/s 501.1MB/s 74.9MB/s 156.2MB/s
After TRIM 479.8MB/s 506.0MB/s 220.2MB/s 150.3MB/s

With firmware 5.0.2, both read and write speed degrade when tortured. The read speed doesn't degrade as much as write speed, but there is still a clear drop in performance. Fortunately TRIM will mostly restore read performance so there doesn't seem to be a similar problem as with compressible data. Write performance, on the other hand, restores but not fully. After TRIM write performance is about 81% of clean state performance, which isn't bad but not ideal either.

Firmware 5.0.3 seems to bring some changes to how incompressible data is dealt with. TRIM still doesn't work properly but as I've said before, I believe it's the way how the controller and firmware were designed, meaning that there isn't really a way to fix it. The good news is that write speed doesn't degrade nearly as much after torture as it did with firmware 5.0.2. Read speed also stays on-par with clean state performance. On the other hand, TRIM doesn't restore performance at all. As a matter of fact TRIM actually degrades write speed slightly but the difference is small enough to not raise any real concern. We did experience similar behavior with HD Tach, though.

Conclusion

SSD performance is all about trade-offs. As you improve one area, you generally weaken another. For example, you can opt for a large logical block size and get super fast sequential write speeds. The flip side is that random write speed will be horrible. Another good example is SandForce. They have chosen to concentrate on performance with compressible data, which has resulted in a trade-off with incompressible data performance.

Since it's generally impossible to have everything in one package, creating a good firmware and SSD is all about finding the balance. SandForce's approach in firmware 5.0.3 is in the right direction but it's far from perfect. TRIM now restores read speed after torture but in exchange, write speed takes a hit. I'm more satisfied with this behavior because the degradation in write speed is smaller and it seems that sequential writes and idle time will help to restore performance back to clean state. With firmware 5.0.2, read speed degraded for good; TRIMing the drive again and running HD Tach for several times didn't show any improvement.

What I'm more worried about is the TRIM behavior with incompressible data. With 5.0.2, TRIM at least worked somewhat as performance was better after TRIM than after torture. Sure, write speed doesn't go as low as it did with 5.0.2 but since most SSDs are used in TRIM-supported environments, I would rather take worse worst-case performance and partially working TRIM.

Hopefully SandForce will be able to find the right balance in a future firmware, which would be working TRIM regardless of the nature of data. 5.0.3 is a good start, but I feel that it concentrates too much on fixing one problem and as a result creates a bunch of new ones.

Firmware 5.0.3 to the Rescue The Corsair Force GS
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