Putting Theory to Practice: Understanding the SSD Performance Degradation Problem

Let’s look at the problem in the real world. You, me and our best friend have decided to start making SSDs. We buy up some NAND-flash and build a controller. The table below summarizes our drive’s characteristics:

  Our Hypothetical SSD
Page Size 4KB
Block Size 5 Pages (20KB)
Drive Size 1 Block (20KB
Read Speed 2 KB/s
Write Speed 1 KB/s


Through impressive marketing and your incredibly good looks we sell a drive. Our customer first goes to save a 4KB text file to his brand new SSD. The request comes down to our controller, which finds that all pages are empty, and allocates the first page to this text file.

Our SSD. The yellow boxes are empty pages

The user then goes and saves an 8KB JPEG. The request, once again, comes down to our controller, and fills the next two pages with the image.

The picture is 8KB and thus occupies two pages, which are thankfully empty

The OS reports that 60% of our drive is now full, which it is. Three of the five open pages are occupied with data and the remaining two pages are empty.

Now let’s say that the user goes back and deletes that original text file. This request doesn’t ever reach our controller, as far as our controller is concerned we’ve got three valid and two empty pages.

For our final write, the user wants to save a 12KB JPEG, that requires three 4KB pages to store. The OS knows that the first LBA, the one allocated to the 4KB text file, can be overwritten; so it tells our controller to overwrite that LBA as well as store the last 8KB of the image in our last available LBAs.

Now we have a problem once these requests get to our SSD controller. We’ve got three pages worth of write requests incoming, but only two pages free. Remember that the OS knows we have 12KB free, but on the drive only 8KB is actually free, 4KB is in use by an invalid page. We need to erase that page in order to complete the write request.

Uhoh, problem. We don't have enough empty pages.

Remember back to Flash 101, even though we have to erase just one page we can’t; you can’t erase pages, only blocks. We have to erase all of our data just to get rid of the invalid page, then write it all back again.

To do so we first read the entire block back into memory somewhere; if we’ve got a good controller we’ll just read it into an on-die cache (steps 1 and 2 below), if not hopefully there’s some off-die memory we can use as a scratch pad. With the block read, we can modify it, remove the invalid page and replace it with good data (steps 3 and 4). But we’ve only done that in memory somewhere, now we need to write it to flash. Since we’ve got all of our data in memory, we can erase the entire block in flash and write the new block (step 5).

Now let’s think about what’s just happened. As far as the OS is concerned we needed to write 12KB of data and it got written. Our SSD controller knows what really transpired however. In order to write that 12KB of data we had to first read 12KB then write an entire block, or 20KB.

Our SSD is quite slow, it can only write at 1KB/s and read at 2KB/s. Writing 12KB should have taken 12 seconds but since we had to read 12KB and then write 20KB the whole operation now took 26 seconds.

To the end user it would look like our write speed dropped from 1KB/s to 0.46KB/s, since it took us 26 seconds to write 12KB.

Are things starting to make sense now? This is why the Intel X25-M and other SSDs get slower the more you use them, and it’s also why the write speeds drop the most while the read speeds stay about the same. When writing to an empty page the SSD can write very quickly, but when writing to a page that already has data in it there’s additional overhead that must be dealt with thus reducing the write speeds.

The Blind SSD Free Space to the Rescue


View All Comments

  • vailr - Wednesday, March 18, 2009 - link

    Is there any benefit in using 2 SSD's in a Raid 0 configuration?
    And: any differences between motherboard Intel Raid vs. a Raid controller card from Areca, for example. Also: can the "Trim" command work while in Raid mode? Probably not, I'm guessing...
  • 7Enigma - Thursday, March 19, 2009 - link

    Raid0 is really the holy grail for SSD's. The low risk of failure of SSD's which normally makes Raid0 with typical mechanical HD's more dangerous is very appealing. My personal storage-size goal is ~120-160gigs. Once they reach that size for under $300 I think I'm going to jump in. But I'm more likely to grab 2 60's or 2 80's and Raid0 them than get a single large SSD. The added performance will outweigh the higher power draw of 2 drives, and should make them extremely competitive with Intel's offerings (or whatever holds the crown at the time).

    I figure it will be about a year or so until the prices are in that range, as 2 60gig Vertex drives will currently run you about $400 after rebate.

    I can't wait to jump on that upgrade and will then put my current 250gig mechanical drive as the storage drive (I don't use a ton of space in general as I have a 320gig external backup).
  • Rasterman - Thursday, March 19, 2009 - link

    The problem with doing that is if you want to move your drives to another system they won't work, so upgrading is a pain. You could image them I guess, but plugging one drive in is much simpler. I had an older XP install that made it through 3-4 different systems.

    I would also question real world results, if you're going at 250MB/s or 500MB/s its not even going to be noticeable unless you are doing some massive video editing or some other huge file operations, and as Anand says, SSDs don't fill this role right now as they are super expensive per GB. So if you really are editing video a lot, you are going to need a hell of a lot more space than SSDs can offer you.
  • Gasaraki88 - Friday, March 20, 2009 - link

    RAID is a universal standard so if you take two RAID0 drives out and move them to another computer with a RAID controller, it SHOULD just work if the original RAID was doing it correctly. Reply
  • coil222 - Wednesday, March 18, 2009 - link

    Yes I run a pair of MTRON 7500s in a raid 0 stripe for my OS and Gaming (wow). I don't recall numbers off the top of my head but tests were better on the raid 0 than a single drive configuration.

    Watch this:
  • sawyeriii - Wednesday, March 18, 2009 - link

    I just wanted to state how much I loved the combination of technical and real world information in this article.

    What is the possibility of having different page sizes built into a drive? I.e. you could have a drive with many 1k page packages on one die, 2k on another, and most others 4k. Could that theoretically help? Could the controllers work with that (or would you need to combine multiple 1k's into a 4k transfer size)?

    PS One note on page 3, the VelociRaptor and Intel in the first chart (responce time) are switched, however the text is correct.
  • StormyParis - Wednesday, March 18, 2009 - link

    the ugly truth is that an SSD won't let you do anything that you couldn't do without it, and due to its cost and small capacity, it's not a replacement drive, it's an extra drive: not less power consumption but more, not less noise but just the same. You just gain a bit of time when booting up and lauching apps... which I do about 1/week and 1/day, respectively. Assuming your system has enough RAM (and if it doesn't, buy RAM before buying an SSD !), you won't feel much difference once the apps are launched.

    For the same cost, I'd rather buy a bigger screen.

    It's urgent to wait for prices to come down. But I'm all for lots of people buying them now and help get the price down for us wiser buyers.
  • Rasterman - Thursday, March 19, 2009 - link

    I've already decided my next system in a few months will have one, after you go through 5 hard drive failures (over several years) lets see how much your willing to pay to not have to put up with it anymore. If you use your PC for anything useful (work) then an SSD is a no brainer even at $1000/64GB IMO if the data security is there, speed is secondary for me.

    When you already have the best screen, video card, memory, why not have the best drive? And your argument is pretty dumb, almost any upgrade won't let you do anything that you couldn't do without it, not just SSDs.
  • Calin - Wednesday, March 18, 2009 - link

    You get lower power due to the lower power use of the SSD and the fact that the other drive is not stressed with difficult access patterns (small random reads/writes). Remember that idle power of a SSD drive is very low Reply
  • 7Enigma - Wednesday, March 18, 2009 - link

    No, his comment was accurate for most users. Due to the small capacities and high cost these will be used as boot drives primarily with maybe a single heavily used program (say the current game or program you are playing/using), the rest will be on an additional drive. So while the power consumption of the SSD would be less than the old drive, the aggregate power usage of both (even when the larger storage drive is primarily at idle) will be higher than the single HD.

    And I believe you meant to say traditional HD for idle power?

Log in

Don't have an account? Sign up now