Write Amplification at 85% Utilisation

We've already looked at the impact on write amplification of having 50% of the disk occupied. Now we'll look at the effect of increasing this to 85%, and see if this increases write amplification. First, let's review the expected life of the disk. The following 2 sets of SMART stats were taken when the wear levelling count dropped by 1%:

ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      RAW_VALUE
  5 Reallocated_Sector_Ct   100   100   010    Pre-fail  0
  9 Power_On_Hours          099   099   000    Old_age   1777
 12 Power_Cycle_Count       099   099   000    Old_age   161
177 Wear_Leveling_Count     085   085   000    Pre-fail  849
179 Used_Rsvd_Blk_Cnt_Tot   100   100   010    Pre-fail  0
181 Program_Fail_Cnt_Total  100   100   010    Old_age   0
182 Erase_Fail_Count_Total  100   100   010    Old_age   0
183 Runtime_Bad_Block       100   100   010    Pre-fail  0
187 Reported_Uncorrect      100   100   000    Old_age   0
190 Airflow_Temperature_Cel 066   060   000    Old_age   34
195 Hardware_ECC_Recovered  200   200   000    Old_age   0
199 UDMA_CRC_Error_Count    100   100   000    Old_age   0
235 Unknown_Attribute       099   099   000    Old_age   28
241 Total_LBAs_Written      099   099   000    Old_age   1769630340990
ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      RAW_VALUE
  5 Reallocated_Sector_Ct   100   100   010    Pre-fail  0
  9 Power_On_Hours          099   099   000    Old_age   1843
 12 Power_Cycle_Count       099   099   000    Old_age   161
177 Wear_Leveling_Count     084   084   000    Pre-fail  910
179 Used_Rsvd_Blk_Cnt_Tot   100   100   010    Pre-fail  0
181 Program_Fail_Cnt_Total  100   100   010    Old_age   0
182 Erase_Fail_Count_Total  100   100   010    Old_age   0
183 Runtime_Bad_Block       100   100   010    Pre-fail  0
187 Reported_Uncorrect      100   100   000    Old_age   0
190 Airflow_Temperature_Cel 065   060   000    Old_age   35
195 Hardware_ECC_Recovered  200   200   000    Old_age   0
199 UDMA_CRC_Error_Count    100   100   000    Old_age   0
235 Unknown_Attribute       099   099   000    Old_age   28
241 Total_LBAs_Written      099   099   000    Old_age   1894685865950

The volume of data written to cause this drop was:

(1894685865950 -1769630340990) * 512 = 64.03TB.

This is exactly in line with the last measurement, and supports the estimated life for the disk at around 6.4PBW.

Moving on to write amplification, we need to look at two more sets of SMART stats.

After run 2008:

ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      RAW_VALUE
  5 Reallocated_Sector_Ct   100   100   010    Pre-fail  0
  9 Power_On_Hours          099   099   000    Old_age   1726
 12 Power_Cycle_Count       099   099   000    Old_age   161
177 Wear_Leveling_Count     086   086   000    Pre-fail  801
179 Used_Rsvd_Blk_Cnt_Tot   100   100   010    Pre-fail  0
181 Program_Fail_Cnt_Total  100   100   010    Old_age   0
182 Erase_Fail_Count_Total  100   100   010    Old_age   0
183 Runtime_Bad_Block       100   100   010    Pre-fail  0
187 Reported_Uncorrect      100   100   000    Old_age   0
190 Airflow_Temperature_Cel 067   060   000    Old_age   33
195 Hardware_ECC_Recovered  200   200   000    Old_age   0
199 UDMA_CRC_Error_Count    100   100   000    Old_age   0
235 Unknown_Attribute       099   099   000    Old_age   28
241 Total_LBAs_Written      099   099   000    Old_age   1671265323927

After run 3568:

ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      RAW_VALUE
  5 Reallocated_Sector_Ct   100   100   010    Pre-fail  0
  9 Power_On_Hours          099   099   000    Old_age   1970
 12 Power_Cycle_Count       099   099   000    Old_age   161
177 Wear_Leveling_Count     083   083   000    Pre-fail  1029
179 Used_Rsvd_Blk_Cnt_Tot   100   100   010    Pre-fail  0
181 Program_Fail_Cnt_Total  100   100   010    Old_age   0
182 Erase_Fail_Count_Total  100   100   010    Old_age   0
183 Runtime_Bad_Block       100   100   010    Pre-fail  0
187 Reported_Uncorrect      100   100   000    Old_age   0
190 Airflow_Temperature_Cel 064   060   000    Old_age   36
195 Hardware_ECC_Recovered  200   200   000    Old_age   0
199 UDMA_CRC_Error_Count    100   100   000    Old_age   0
235 Unknown_Attribute       099   099   000    Old_age   28
241 Total_LBAs_Written      099   099   000    Old_age   2138526416722

Each test run writes 143GiB, so we can calculate the total data written during this period of the test from the number of test runs completed:

(3568 - 2008) * 143GiB / 1024 = 217.85TiB.

This correlates very closely with what the SSD has recorded as 'Total LBAs Written', but is actually slightly higher:

(2138526416722 -1671265323927) * 512 / (1024 * 1024 * 1024 * 1024) = 217.59TiB.

One possible explanation for this could be that, since the file is deleted immediately after it has been written, the last part of it is still in the SSD's cache and never actually makes it to flash storage.

Over the same period, the wear levelling count has gone up from 801 to 1029 - a total of 228. From the results in our previous post ’Estimating Reserved Space in the SSD’, this equates to:

228 * 0.9885TiB = 225.378TiB

And from this we can work out the write amplification factor:

225.378TiB / 217.59TiB = 1.036.

As before, this is a tiny level of write amplification, and indicates that the controller continues to do a fantastic job of minimising the impact of having a very large static file present. Wow!