In Part 1, I explained how SSDs can degrade over time and the reason for it was associated with an undesirable SSD phenomenon called the Write Amplification Factor (WAF). This is a numerical value that indicates the actual amount of data that was written to an SSD in relation to the amount of data that was requested to be written from the Host (i.e. Windows OS System)
———data written to the SSD
WAF = ——————————
———data written by the host
This occurs because, unlike HDDs, data cannot be directly overwritten on a disk. On SSDs, data can only be written to erased spaces. When you have a brand new initialized SSD, all the pages are in a free/erased state, so no problem in finding free/erased spaces to write new data. But as the SSD starts to fill up with data, resulting in erased spaces having to be created which causes the WAF to increase. A higher WAF value means SSD performance degrades because more writes have to occur than originally requested.
In Part 2, I am going to explain in more detail why SSDs degrade over time. To do this, I must first define two terms – SSD Pages and Blocks
Pages: This is the smallest unit that can be read/written on an SSD from an application and is usually 4KB in size. So, in this 4KB case, even if the file data is less than 4KB, it still takes a 4KB page to store the data on the SSD. If 5KB of data needs to be written out, then two 4KB pages are needed to contain it.
Blocks: Pages are organized in Blocks. For example, some Blocks are 512KB in size. In this 4KB Page Size and 512KB Page size example, there would be 128 pages per block and the first block on the SSD would contain Page-0 to Page-127, and so on. For example:
SSD Write performance Degrades Over Time
Now that these terms are defined, lets show how this affects the SSD performance and degradation, specifically Write performance. As indicated before, data cannot be directly overwritten on SSDs. For example, a small piece of existing file data that is already on a page of the SSD needs to be updated, say page 0 of Block 0. There are a few restrictions when writing to an SSD.
- A write to a page can only occur if that page has been first Erased.
In our 4KB example, Data can only be written in 4KB Pages.
- A single page cannot be erased. To erase a page, the whole block needs to be Erased.
In our example, pages can only be erased in 512KB blocks.
If the same page of data needs to be updated and you want to retain the data in the rest of the pages on that block, these steps would need to occur.
1. That whole block needs to be read into memory.
2. The one page needs to be updated in memory.
3. The whole block needs to be erased (Remember that a page can only write to erased pages).
4. The updated block in memory is then written back to the newly erased block.
In this extreme case where all the other pages on this block had to be written back out, the original 4KB Write from the Host machine caused 512KB of data to be written (re-written) to the block. Here, the WAF would be 512KB/4KB = 128. A worst-case scenario. Now, I said this is an extreme case. In most cases:
1. A different page/block that is already erased is found and the updated data is written to the free page/block.
2. The data pointer is mapped to this new page.
3. The previous page is marked ‘stale’, meaning it cannot be written to until erased.
But as an SSD fills up, there are fewer available free pages, so the extra writes and erases to create erased pages/blocks can and will occur and cause SSDs to degrade over time. As indicated before, to keep the WAF low to help your SSDs run like new:
- Keep sufficient contiguous logical free space to enforce Sequential Writes to your SSDs.
- Enforce Sequential Writes rather than Random Writes.
The technology in DymaxIO does this automatically. Download a 30-day trial of DymaxIO