to any interested - ie especially for owners of SF2xxx based SSDs
repeating here what I told on OWC
trim, issued to drive, should have as an argument list of blocks to clean. It is that same list that OS uses to mark as free after deleting file. As we assume that OS can delete files from drive correctly – it can form that list correctly. No more, no less. No additional errors.
on trim vs GC – one difference – only OS itself knows exactly what is deleted.
And one more thing )
when GC is walking over drive, analyzing and optimizing data, it walks with read+write+analyze speed – ie not very fast. mean at least dozen(s) of minutes for drive – so it gives you deferred result
I’m trying to measure it myself right now, but it looks like trim crawls over drive much, much faster. Like probably 1000 times faster at least – so it gives you almost immediate result
So, in tight situations trim looks preferable to any kind of GC. But if you have spare place on drive enough – GC can outperform trim if well implemented.
From all I know, SF2xxx GC is implemented very well.
from minimal analysis you can get that SF2xxx heavily relies on internal compression. And in this case trim block list correspond to nothing on die level - so for run trim command, controller have to decompress some information and then recompress and write it back, so instead of really fast trim we have same execution speed as for GC (actually lower as GC runs read-workout-write, trim runs read-decompress-workout-compress-write), so yes, trim will definitely slow down SF2xxx - based SSDs and any other that uses controller-level compression.
So, TRIM on SF2xxx-based SSDs will slow them down. Not due to trim implementation in mac os, but due to controller internal logic.
I'd recommend:
IF you see loss of drive speed - let it idle for night
ONLY IF that will not help - enable trim, erase free space from disk utility, wait like an hour or even more, disable trim