Does the SandForce controller have garbage collection and does it work with the HFS+ filesystem?

Does garbage collection have a significant effect on new SSD controllers on OS's without TRIM support (OS X)?

3 Answers 3


How does it know what blocks that are junk and which belongs to files without support from the filesystem?

I think this is an important question that nobody's really answered. The drive cannot know which blocks are valid and which blocks are valid without either understanding the filesystem being used or by getting additional information (e.g. from TRIM).

Our conventional understanding of garbage collection is that blocks that partially contain invalid data are consolidated to free up entire blocks* that can be written quickly (without having to read existing valid data and writing back with the new data). Without knowing which blocks are valid and which blocks are invalid, this process cannot occur.

AnandTech speculates a bit on this:

It either works by looking at the data on the drive and organizing it into a less fragmented state, or by looking at the file system on the drive and attempting to TRIM based on what it finds. Both Indilinx and Samsung have attempted to implement this sort of idle garbage collection and it appears they do it in different ways. While the end result is the same, how they get there determines the usefulness of this feature.

In the first scenario, this is not simply TRIMing the contents of the drive, the drive doesn’t know what to TRIM; it must still keep track of all data. Instead, the drive is re-organizing its data to maximize performance.

The second scenario requires a compatible file system (allegedly NTFS for the Samsung drives) and then the data is actually TRIMed as it would be with the TRIM instruction.

We already discussed the second scenario, which probably does not work for HFS+. The first scenario is more puzzling to me, and I have not been able to locate any good information about how it works, or how effective it is on HFS+.


Yes the SandForce controller has garbage collection. Some would say it does garbage collection better than any other controller out there. It does not matter what file system resides on the SSD... garbage collection works at a level beneath the file level called the block level. Garbage collection is a mechanism built into the SSD to help maintain performance. In most cases the SSD will write to empty blocks first and then keep track of blocks that contain “old data” for later use. Once each block is written once, the SSD will need to clean up those used blocks. That's garbage collection.

Garbage collection does help maintain drive performance on OS's without TRIM support. Otherwise the SSD performance would degrade over time until it was zeroed out by some SSD utility and reformatted/reinstalled.

  • How does it know what blocks that are junk and which belongs to files without support from the filesystem?
    – Daniel O
    Commented Aug 20, 2010 at 7:02
  • 1
    Almost always (or maybe always), when a file system deletes a file, it is only marking it to be overwritten. That is why for a lot of filesystems there are file recovery utilities that can find these files that have been marked to be overwritten and recover them. That's why when you do a "secure erase", it is actually overwriting those blocks with zeros & takes time. A regular erase is quick because it's not actually wiping out all of the data's blocks. I think all filesystems interact with the disks' blocks the same way as far as this is concerned.
    – churnd
    Commented Aug 20, 2010 at 15:30

The answer that chrund gave is the reason I use Sandforce drives... they support TRIM (for Win7+) but for OSX and XP (still need tricks re: 4k alignment), these drives are the best (not to mention they top most of the performance charts).

Win7 users can rely on lots of TRIM drives available that might have a better cost/performance ratio, but for OSX, Sandforce drives are plug&play, and a great value.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .