TRIM Enabler 4.3.6 for Mac was available to download from the developer's website when we last checked. We cannot confirm if there is a free download of this app available. The most frequent installer filenames for the program include: trimenabler.dmg and TRIMEnabler.zip etc.
TRIM Enabler 4.3
A trim command (known as TRIM in the ATA command set, and UNMAP in the SCSI command set) allows an operating system to inform a solid-state drive (SSD) which blocks of data are no longer considered to be 'in use' and therefore can be erased internally.[1]
Although tools to "reset" some drives to a fresh state were already available before the introduction of trimming, they also delete all data on the drive, which makes them impractical to use for ongoing optimization.[4] As of 2023, many SSDs and USB flash drives had internal garbage collection mechanisms for certain filesystems (such as FAT32, NTFS, APFS) that worked independently of trimming. Although this successfully maintained their lifetime and performance even under operating systems that did not support trim, it had the associated drawbacks of increased write amplification and wear of the flash cells.[5]
The TRIM command enables an operating system to notify the SSD of pages which no longer contain valid data. For a file deletion operation, the operating system will mark the file's sectors as free for new data, then send a TRIM command to the SSD. After trimming, the SSD will not preserve any contents of the block when writing new data to a page of flash memory, resulting in less write amplification (fewer writes), higher write throughput (no need for a read-erase-modify sequence), thus increasing drive life.
The TRIM command is beneficial only if the drive implements it and the operating system requests it. The table below identifies each notable operating system and the first version supporting the command. Additionally, older solid-state drives designed before the addition of the TRIM command to the ATA standard will need firmware updates, otherwise the new command will be ignored. However, not every drive can be upgraded to support trimming.
Not all filesystems make use of trim. Among the filesystems that can issue trim requests automatically are ext4,[25] Btrfs,[26] FAT, GFS2, JFS,[27] XFS,[28] and NTFS-3G. However, in some distributions, this is disabled by default due to performance concerns,[29] in favor of scheduled trimming on supported SSDs.[30] Ext3, NILFS2 and OCFS2 offer ioctls to perform offline trimming. The TRIM specification calls for supporting a list of trim ranges, but as of kernel 3.0 trim is only invoked with a single range that is slower.[31]
TRIM is supported for RAID (0,1,4,5 & 10) volumes when using the third-party SoftRAID application, including TRIM support with non-Apple SSD devices.(Note: TRIM for non-Apple SSD devices must be specifically enabled using the terminal command "sudo trimforce enable")
Not to be confused with dmraid, Linux's general-purpose software RAID system, mdraid, has experimental support for batch-based (rather than live, upon file deletion) TRIM on RAID 1 arrays when systems are configured to periodically run the mdtrim utility on filesystems (even those like ext3 without native TRIM support).[50] In later versions of Linux, e.g. Red Hat Enterprise Linux 6.5 and beyond, mdraid supports actually passing through TRIM commands in real-time, rather than just as a batch job.[51]
Where the filesystem does not automatically support TRIM, some utilities can send trimming commands manually. Usually they determine which blocks are free and then pass this list as a series of trimming commands to the drive. These utilities are available from various manufacturers (e.g. Intel,[60] G.Skill[61]), or as general utilities (e.g. Linux's hdparm "wiper" since v9.17,[62][63] or mdtrim, as mentioned above). Both hdparm and mdtrim find free blocks by allocating a large file on the filesystem and resolving what physical location it was assigned to.
Regardless of operating system, the drive can detect when the computer writes all-zeros to a block, and de-allocate (trim) that block instead of recording a block of zeros. If reading a de-allocated block always returns zeros, this shortcut is transparent to the user, except for faster writing (and reading) of all-zero blocks, in addition to the usual benefit of faster writing into unused areas. Operating systems don't write all-zeros to "wipe" files or free space, but some utilities do.
An individual LBA range is called an LBA Range Entry and is represented by eight bytes. The LBA is expressed by the LBA Range Entry's first six bytes and the Range Length is a zero-based counter (e.g., 0=0 and 1=1) represented by the remaining two bytes. If the two-byte range length is zero, then the LBA Range Entry shall be discarded as padding.[69] This means that for each 512-byte block of TRIM ranges that a device supports, the maximum is 64 ranges of 32 MB, or 2 GB. If a device supports SATA Word 105 at 8 then it should be able to trim 16 GB in a single TRIM (DATA SET MANAGEMENT) command.
The NVM Express command set has a generic Dataset Management command set, for hinting the host's intent to the storage device on a set of block ranges. One of its operations, DEALLOCATE performs trim. It also has a WRITE ZEROES command that provides a DEALLOCATE hint and allows the disk to trim and return zeroes. 2ff7e9595c
Comments