Whether a full SLC cache comes back depends on how full the drive is, and in my idle tests it came back almost only on drives that were not full. On drives my write test had already filled to capacity, 30 minutes of idle brought back a median of 0GB. On drives with room left, the median was 125GB, about 53% of the cache. Among the full drives, only the Crucial P5 Plus 2TB got most of its cache back. Full drives were also faster, with a median burst of 5,870MB/s against 3,197MB/s. A second, smaller set of 31 drives from my second test bench points the same way. It belongs to the Flash Myths, Tested series.

Once the cache fills, does the drive stay slow? Tested on 55 drivesA three-panel schematic. Left: on the 33 drives my write test had filled to capacity, the median amount written at full speed after 30 minutes of idle was 0GB. Center: on the 19 drives it had not filled, the median was 125GB, about 53% of the cache. Right: the idle gaps tested, from 30 seconds to 30 minutes, with the not-full median growing at each step.FLASH MYTHS, TESTED / SPEEDThe cache comes back, if there is roomFULL · NOT FULL · IDLE01 FULL DRIVECACHE BACK, MEDIAN0GBafter 30 minutes idle33 drives writtento capacityBar is schematic02 NOT FULLCACHE BACK, MEDIAN125GBabout 53% ofthe cache19 drives, under1x writtenBar is schematic03 IDLE TESTED30s1m5m30mlongest idle:30 minutesNot-full median,to scale

Where the myth comes from

The speed on the box myth ends at the cache cliff. A TLC or QLC drive writes incoming data to part of its flash in SLC mode first, and when that part is full the write speed drops to a fraction of the burst. This myth takes the next step and says that once the cache has filled, the drive is slow from then on.

The opposite advice, that a drive recovers if you leave it alone, is common too, and it has a basis. A drive moves data out of the SLC cache into its permanent cells when it has nothing else to do, which Flash Foundations Part 6 calls folding. Kwon et al. describe the same arrangement for combined SLC and TLC flash in consumer devices, where data goes to the SLC buffer first and is migrated to the TLC region during idle time. Yang et al. found that in the drive they studied, the cache, about 65GB, was cleared during idle time.

Where the myth comes from

Idle time folds the cache into permanent cells

A left-to-right flow of three boxes: Host writes, SLC cache written first, and TLC region with permanent cells. A solid arrow from Host writes to the SLC cache is labeled write. A solid arrow from the SLC cache to the TLC region is labeled fold while idle. A dashed path runs under the boxes from Host writes straight to the TLC region and is labeled cache full, no idle time: writes go straight to the TLC region at TLC speed. At the bottom, a box Cache cleared is joined by a dashed arrow to a box Room for a new cache, marked with a question.01Host writes02SLC cachewritten first03TLC regionpermanent cellswritefoldat idleCache full, no idle time:writes go straight to the TLC region at TLC speedCache clearedRoom for anew cache?Normal pathCache full, or open question
Writes land in the SLC cache first and move to the TLC region while the drive is idle; with the cache full and no idle time they go straight to the TLC region at TLC speed. Source: Kwon et al., IEEE Transactions on Consumer Electronics, 2017. The drawing has no values.

Clearing the cache isn’t the same as being able to use it again, and the second part is what a user feels. A drive can be done folding and still have no room to start a new cache, and that second question is the one I could test.

How I tested it

Every drive here ran the same write-saturation test that I describe in how I made SSD validation repeatable and used in the box-speed myth. It used sequential 1MiB writes at a queue depth of 32, straight to the raw disk, starting empty. That main run lasted between 15 minutes and about two hours depending on the drive. After it, the drive sat idle for a set gap, and then I ran another write for about 300 seconds.

How I tested it

A main run, an idle gap, then a write run counted at speed

A left-to-right flow of three boxes: the main run writes the raw disk starting empty; the idle gap is one of 30 seconds, 1 minute, 5 minutes, 30 minutes; the write run lasts about 300 seconds and counts the GB written at speed. Below, 55 drives are split in two. Full drives, 35, are those the main run wrote at the capacity 1 time or more. Not-full drives, 20, are those it wrote under 1 time.01Main runwrites the rawdisk from empty02Idle gap30 seconds1 minute5 minutes30 minutes03Write runabout 300 secondscount the GBwritten at speed55 drives with a main-run cache of 50GB or moreFull: 35 drivesmain run wrote the capacity1 time or moreNot full: 20 drivesmain run wrote the capacityunder 1 timeTest stepFull drivesNot-full drives
Every drive got the same three steps; the drives are split by how many times the main run wrote the capacity, 35 full and 20 not full. Source: Sean Webster’s own test method.

The four gaps are named 30 seconds, 1 minute, 5 minutes and 30 minutes. Timestamps show the real gaps were 33, 63, 303 and 1,803 seconds on a typical drive. For each idle run I counted how many GB the drive wrote at speed, from the first fast row to the first confirmed drop. Fast means a smoothed write speed of at least 0.6 times that drive’s own burst speed from the main run. Dividing by the cache size the main run measured gives the share of the cache that came back.

I used the 55 drives whose main-run cache was at least 50GB. Four more drives had a cache under that. For them the first drop is a short dip, and an idle run can write several times more than that so-called cache, so I left them out. Three of the 55 have no 30-minute run, two that the main run filled and one that it didn’t. Their results at the other steps are included, and every count at 30 minutes below is out of the drives that have the run.

The split that matters is how many times the main run wrote the drive’s capacity. I call a drive full when the answer is 1 or more. Its run had written every address at least once, so the drive held a full drive of data when the idle tests began. This is my reading of the writes, because the archive doesn’t record how full the drive was. By that rule, 35 drives were full and 20 were not. The largest count was 13.68 times the capacity.

What came back

Figure 1 gives the median GB written at speed after each gap. For the full drives it is 0GB at every step. For the drives that were not full it is 30GB after 30 seconds, 42GB after 1 minute, 99GB after 5 minutes and 125GB after 30 minutes. Most of that median gain arrived within the first 5 minutes, but this is a median across drives, and single drives behave less tidily.

What came back

Idle time brought the cache back only on drives that were not full

Median GB written at speed in a 300-second run after each idle gap

A grouped column chart. The horizontal axis is the idle time before a 300-second write run: 30 seconds, 1 minute, 5 minutes, 30 minutes. The vertical axis is the median GB written at speed, from 0 to 150. Full drives, which the main write test had written to capacity: 0GB after 30 seconds, 0GB after 1 minute, 0GB after 5 minutes, 0GB after 30 minutes. Drives that were not full: 30GB after 30 seconds, 42GB after 1 minute, 99GB after 5 minutes, 125GB after 30 minutes. Counts at the longest step are 33 full drives and 19 not-full drives.Median GB written at speed050100150030seconds3030seconds01minute421minute05minutes995minutes030minutes12530minutesIdle time before the write runFull: main run wrote 1x or more (35)Not full: under 1x (20)
Figure 1 · After 30 minutes of idle the not-full drives had a median of 125GB back and the full drives had 0GB. Source: Sean Webster’s own test data.

Figure 2 shows the spread at 30 minutes. Of the 33 full drives with a 30-minute run, 19 wrote none of their cache at speed, 13 wrote under 25% of it, and one wrote more than half. That one is the Crucial P5 Plus 2TB, which the main run had written 1.39 times. It wrote 144GB at speed, 72% of its 200GB cache. Of the 19 drives that were not full and have the run, 10 got half or more of the cache back, the median share was 53%, and 2 got none.

What came back

Over half of the full drives got nothing back after 30 minutes idle

Drives by share of the main run’s cache written at speed after 30 minutes of idle

A horizontal grouped bar chart counting drives by the share of the main run's cache that was written at speed after 30 minutes of idle, from 0 to 20 drives. 33 full drives: None, 19; Under 25%, 13; 25% to under half, 0; Half to under 100%, 1; 100% or more, 0. 19 drives that were not full: None, 2; Under 25%, 4; 25% to under half, 3; Half to under 100%, 6; 100% or more, 4.Share of cache back05101520Drives, countNone192Under 25%13425% to under half03Half to under 100%16100% or more04Full (33)Not full (19)
Figure 2 · 19 of 33 full drives got none of the cache back, against 2 of 19 drives that were not full. Source: Sean Webster’s own test data.

Four drives show how uneven single results are. Below is the GB each wrote at speed after each gap.

Drive Main run wrote 30 seconds 1 minute 5 minutes 30 minutes
WD Black SN770 2TB 0.71 times the drive 0GB 17.1GB 121.4GB 346.8GB
Crucial P5 Plus 2TB 1.39 times 142.8GB 147.4GB 110GB 144.2GB
Samsung 980 1TB 0.55 times 27.5GB 53.2GB 82.6GB 0GB
Inland Prime 1TB 0.91 times 0GB 0GB 0GB 0GB

The SN770 is a slow comeback, with nothing after 30 seconds and almost half of its 714GB cache after 30 minutes. The P5 Plus is a full drive that got its cache back in 30 seconds, though it dipped to 110GB at 5 minutes before returning to 144.2GB. Samsung’s 980 rose for three steps and then wrote nothing at speed after 30 minutes, I can’t say why, because there is one run per step. Inland Prime wrote nothing at speed at any step even though the main run had not filled it.

What came back

Drives the main run had filled to capacity got little cache back

52 drives: cache back after 30 minutes of idle against how many times the main run wrote the drive

A scatter chart of 52 drives. The horizontal axis is how many times the main write test wrote the drive's capacity, on a logarithmic scale from 0.25 to 16. The vertical axis is the share of the main run's cache written at speed after 30 minutes of idle, from 0 to 250 percent. 19 drives below 1 are teal circles and 33 drives at 1 or more are neutral diamonds. A vertical line marks 1 and a horizontal line marks 50 percent. The diamonds sit almost all near zero, while the circles spread from zero to above 200 percent.Cache written at speed, % of main-run cache0501001502002500.250.51248161: written onceHalf the cacheTimes the main run wrote the drive, log scaleUnder 1 (19)1 or more (33)
Figure 3 · Drives that had been written once or more mostly sit near zero, while the drives below one scatter from none to more than twice their cache. Source: Sean Webster’s own test data.

Figure 3 plots every drive with a 30-minute run against how many times the main run wrote it. Below 1 the drives scatter from none to more than twice their measured cache. Above 1 they sit almost all near zero. Some points are above 100% because the drive wrote more at speed in the idle run than the cache the main run measured, which says the main-run figure isn’t a hard limit. There is no clean line at 1. One drive at 0.91 got nothing back, and the full drives show no trend with more writes.

A second set of drives

After the first analysis I ran the same one on a second set of drives from a second test bench. Call the 55 drives above bench set A and these bench set B. Set B has 31 drives, with the same main write run, the same four idle gaps and the same count of GB written at speed. I keep the two sets apart and don’t pool them, because I only know the method is the same, not that the two benches are. Setup, drive preparation or room conditions could differ.

A second set of drives

In the second set too, only drives that were not full got cache back

Median GB written at speed after each idle gap, bench set B, 31 drives

A grouped column chart for bench set B. The horizontal axis is the idle time before the write run: 30 seconds, 1 minute, 5 minutes, 30 minutes. The vertical axis is the median GB written at speed, from 0 to 100. The 22 full drives: 0GB after 30 seconds, 0GB after 1 minute, 0GB after 5 minutes, 0GB after 30 minutes. The 9 drives that were not full: 0GB after 30 seconds, 14.6GB after 1 minute, 71GB after 5 minutes, 96GB after 30 minutes.Median GB written at speed0255075100030seconds030seconds01minute14.61minute05minutes715minutes030minutes9630minutesIdle time before the write runFull: main run wrote 1x or more (22)Not full: under 1x (9)
Figure 4 · Set B agrees with set A: a median of 0GB at every gap on the 22 full drives, and 96GB after 30 minutes on the 9 that were not full. Source: Sean Webster’s own test data, bench set B.

Where the main run wrote a drive at least once over, 22 drives, the result is flat. None of them wrote anything at speed after any of the four gaps, so the median is 0GB at every step. Counts per step are 22, 21, 20 and 18 drives, because not every drive has every run. That includes all 7 of the PCIe 5.0 drives in the set. Three of them are retail drives of 1TB, 2TB and 4TB, which the main run wrote 10.23, 7.96 and 3.63 times, and each wrote 0GB at every gap.

Where the main run wrote under the capacity, 9 drives, some of the cache came back. The median was 0GB after 30 seconds, 14.6GB after 1 minute, 71GB after 5 minutes and 96GB after 30 minutes. Of the drives with the run, 5 of 9 wrote something at speed after 1 minute, 7 of 8 after 5 minutes and 6 of 7 after 30 minutes. This is the same shape as set A, with a lower median at 30 minutes (96GB against 125GB), and I wouldn’t read anything into that difference at these counts.

Drive Capacity Main run wrote 30 seconds 1 minute 5 minutes 30 minutes
28 1,000GB 0.68 times the drive 0GB 35.7GB 70GB 110.5GB
29 2,000GB 0.75 times 0GB 50.1GB 99.8GB 143.1GB
32 500GB 0.48 times 0GB 21.1GB 72.7GB 95.7GB
33 1,000GB 0.78 times 0GB 0GB no run no run
34 2,000GB 0.64 times 0GB 50.3GB 192GB 294.4GB
35 4,000GB 0.79 times 0GB 14.6GB 180.5GB no run
36 8,000GB 0.32 times 0GB 0GB 0GB 0GB
37 500GB 0.92 times 0GB 0GB 11.3GB 11.3GB
38 1,000GB 0.87 times 0GB 0GB 38.1GB 36.2GB

Set B has the same weakness as set A, but where set A’s was speed, set B’s is cell type. All 9 drives that were not full are QLC. Of the 22 full drives, 20 are TLC, one is QLC and one has no proven cell type. So in this set “not full” and “QLC” are almost the same group, and I cannot say which one lets the cache come back.

The one full QLC drive, which the main run wrote 1.26 times, wrote nothing at speed after 30 seconds, 1 minute or 5 minutes and has no 30-minute run. It’s one drive, and it fits the fill explanation better than the cell type one. Drive 36 is a not-full drive with nothing back at any gap, so the not-full group is not uniform either.

Speed class differs between the groups too, with the 22 full drives at 7 PCIe 5.0, 14 PCIe 4.0 and one with no recorded link, and the 9 that were not full are 5 PCIe 3.0, 2 PCIe 4.0 and 2 with no recorded link.

Set B is thin on one point. It has one run per step and the counts at 30 minutes are 18 and 7 drives. It agrees with set A and adds PCIe 5.0 drives to the picture. It does not add a test of one drive at two fill levels, which would settle the question.

Why a full drive may not get its cache back

Here I’m going beyond what I measured. Most SLC cache technologies size the cache from the amount of data stored on the drive, according to Yang et al.. Advantech’s white paper says the same in plainer terms, that the cache differs with the free space, so larger and less occupied drives can write more data at peak speed than smaller SSDs or drives nearing full capacity. My idle runs fit that. A drive can finish folding its cache into permanent cells, but a new cache has to be built out of free blocks, and a drive whose every address holds data has few to give.

Why a full drive may not get its cache back

A new cache is built from free blocks, and a full drive has few

Two panels, each a grid of blocks. Panel 1, room to spare: many blocks are free and a group of blocks is marked as a new SLC cache built from free blocks. Panel 2, every address written: almost every block holds data and one is free, so there are few free blocks to build a cache from. Below, a note says the test wrote the raw disk with no file system and no TRIM, so the controller saw every written address as valid.01 ROOM TO SPARENew cache builtfrom free blocks02 EVERY ADDRESS WRITTENFew free blocksto build one fromRaw-disk test: no file system and no TRIM,so every written address looks valid to the controllerHolds dataNew SLC cacheFree block
Figure 5 · Two drives drawn as grids of blocks: with room to spare a new SLC cache can be built, and when every address holds data there is little to build it from; the raw-disk test gave the drive no way to find free space. Illustrative values.

My test also gives the drive no way to find free space. It wrote to the raw disk, so there was no file system and no TRIM, and the controller saw every address as valid once the main run had written it. The leave-space myth covers why that matters. I didn’t read any of these drives’ internal state, and I have no saved source that describes what these particular drives do after a run, so treat this as the explanation that fits the numbers.

The limits of this test

  • Each idle run lasted about 300 seconds, so a number here is the GB written at speed within that window. I tested idle only up to 30 minutes. Nothing here says what an hour, a night or a week of idle does.
  • Full and fast are tangled. Each drive’s main run lasted a similar time, so a faster drive wrote the capacity more times. Median burst speed was 5,870MB/s in the full group and 3,197MB/s in the group that was not full, and 31 of 35 full drives ran on PCIe 4.0 against 13 of 20. I cannot separate “this drive was full” from “this is a faster drive”. Measuring one drive at two fill levels would, and I do not have that.
  • The fill is a raw-disk fill. A drive that is nearly full of files with TRIM working is not the same as a drive whose every address was written, and I did not test it.
  • There is one run per step. Results aren’t steady from step to step on single drives, as the table shows.

The limits of this test

A faster drive writes the capacity more times and counts as full

A three-step chain: the same run time on every drive, a faster drive writes the capacity more times, so it counts as full. Below, two boxes. The full group has a median burst speed of 5,870MB/s, with 31 of 35 drives on PCIe 4.0. The not-full group has a median burst speed of 3,197MB/s, with 13 of 20 drives on PCIe 4.0.01Same run timeon every drive02A faster drivewrites the capacitymore times03It counts as fullWhat the data shows about speedFull group5,870MB/smedian burst speed31 of 35drives on PCIe 4.0Not-full group3,197MB/smedian burst speed13 of 20drives on PCIe 4.0Reasoning stepFull drivesNot-full drives
Figure 6 · The main run lasted a similar time on every drive, and the full group was the faster one, so a full drive and a fast drive cannot be told apart in this data. Source: Sean Webster’s own test data.

What to do with this

If you copy several hundred GB at a time to a drive that has plenty of free space, a pause of a few minutes between jobs gave back part of the cache on many of these drives, and a pause of 30 minutes gave back half or more of the cache on 10 of the 19 drives that were not full. A pause is no guarantee, and 2 of those 19 got none.

If the drive is close to full, don’t count on a pause to restore the burst. Of the full drives, 19 of 33 got none of their cache back after 30 minutes, and the median was zero at every gap. The sources and these numbers point to free space. Keep room on a drive that takes big writes, and use TRIM Check to confirm the drive is told what is free.

What to do with this

Free space decides whether a pause brings the cache back

A decision with two branches from the question how much room the drive has. Branch 1, room left on the drive: a pause of a few minutes gave back part of the cache on many drives; after 30 minutes half or more came back on 10 of 19 drives and 2 of the 19 got none. Branch 2, close to full: do not count on a pause; 19 of 33 got no cache back after 30 minutes and the median was 0GB at every gap; keep room and check TRIM.How much room does the drive have?01 ROOM LEFT ON THE DRIVEA pause of a few minutesgave back part of the cacheon many drivesAfter 30 minutes, half or moreback on 10 of 19 drives2 of the 19 got none02 CLOSE TO FULLDo not count on a pause19 of 33 got no cache backafter 30 minutesand the median was 0GBat every gapKeep room and check TRIMRoom leftClose to full
Figure 7 · With room left, a pause helped on many drives but not on 2 of 19; close to full, 19 of 33 drives got nothing back, so the fix is free space. Source: Sean Webster’s own test data.

For reading reviews, look for a test that writes past the cache, and for any test that writes a second time after a pause. One tells you the speed after the cliff, and the other is the only way to see whether the drive came back.