SSD Speed TweaksTweaking guide for optimizing Solid State Drive performance and reliability
2010-02-11 09:13 by Philip
Tags: ssd, tweak, defragment, pagefile, system restore, hibernate, superfetch, TRIM, MLC, TLC, SLC
Solid State Drives (SSDs) have a great potential to speed up your system, and they're becoming mainstream with prices dropping and the technology maturing. SSDs are faster, have no moving parts, use less power, are quieter, less succeptible to physical shock, with lower access time and latency than traditional mechanical hard disk drives (HDDs).
However, SSDs use memory chips to store data, which makes them quite different than traditional mechanical drives and most current OSes are still not tuned by default to use this type of storage media to its full potential. It may take a bit of knowledge and tinkering to setup and tune the SSDs and squeeze that last bit of potential and improve their reliability.
This article aims at some general principles in improving the speed and reliability of Solid State Drives, discussing some tweaking recommendations. Even though most tweaks are illustrated under Windows 7/Vista, the general ideas can be applied to any OS. In a couple of words, the main idea behind SSD tweaking for performance revolves around partition alignment, enabling TRIM, reducing unnecessary writes (very fast drives with somewhat limited write cycles), and freeing up space where possible. Note that newer generation, and more expensive SSDs have improved write endurance.
Windows 7 is better at recognizing and working with Solid State Drives (SSD) than previous versions of Windows. It has the ability to detect SSDs and set the disk defragmentation service to manual, even use the TRIM command on some drives. Even with these basic optimization steps, there is always some room for improvement, as outlined below.
SSD reliability has been a topic of discussion ever since the inception of this technology, and should be an important factor when tuning your drive in addition to performance. SSDs use NAND-based flash memory, which is able to retain data without power. To reduce production costs and push higher capacity SSDs, manufacturers have to either shrink the NAND die size, or increase density of the data on the same die. There are three common types of NAND flash used in SSD drives today: SLC, MLC and TLC. It is important to know the differences in reliability in the different flash types.
SLC (single layer cell) - up to 100,000 program/erase cycles per cell, high performance, fast write speeds, high cost, good fit for industrial grade devices and critical systems. SLC flash has only two states: erased (empty), and programmed (full).
MLC (multi layer cell) - 3,000 to 10,000 program/erase cycles per cell, much lower endurance limit than SLC, lower cost, typically used for consumer grade products. MLC flash has four states: erased (empty), 1/3, 2/3, and programmed (full).
TLC (three layer cell) - 1,000 to 3,000 program/erase cycles per cell, lower endurance, best price point, good for lower-end consumer products, not intended for critical applications. TLC flash has eight states: erased (empty), 1/7, 2/7, 3/7, 4/7,5/7,6/7, and programmed (full)
Note that even with the lower reliability TLC flash, a typical consumer PC that writes about 10 Gb of data every day can still use the drive well over 10 years before the NAND flash wears out. However, the size of the drive (larger is better), tuning the drive, and reducing writes can greatly impact your experience over time.
SSD Partition Alignment
SSDs are divided into blocks composed of multiple pages, and each flash block must be fully erased prior to re-writing. The write speed will suffer greatly if the SSD controller has to perform unnecessary block erase operations due to partition misalignment. Proper partition alignment is one of the most critical attributes that can greatly boost the I/O performance of an SSD (and increase its lifespan) due to reduced read-modify-write operations.
In essense, you simply have to align the partitions for best performance. I don't know of an easy way to realign a partition after the drive has been formatted (short of ghosting a disk image, aligning the partition and restoring it).
Some geeky technical info
In fact, for best performance the partition offset should allign with (by being a multiple of) all three of the following:
Windows SSD alignment
Note: to create a partition of specific size (100MB), use: create partition primary size=100 align=1024
To verify the alignment:
You should see a result similar to this:
Partition ### Type Size Offset
512KB or 1024KB is best, even though any multiple of 64KB should be somewhat ok (aligns to two out of three parameters, with the exception of erase block size).
Under Linux, you'd have to use something like: 32*7=224 heads and 8*7=56 sectors/cylinder for 256*49=12544 sectors/cylinder, so that each cylinder is 49*128K.
Traditionally, when you delete data on a disk, the data isn't immediately scrubbed, just marked as overwriteable. Given the way SSDs store and overwrite data, it is advantageous for the drive to use the TRIM command and scrub deleted data instead of performing an entire block erase when you are writing new data.
In essense, TRIM support handles deletes/writes in a way that avoids write performance degradation over time to the involved blocks. As an added benefit, the TRIM operaton can help reduce wear by reducing the number of merge operations on a SSD drive. You can think of it as the SSD equivalent of defrag/disk cleanup for SSDs that support it.
For the TRIM command to work, it has to be supported both by the SSD and your OS. This may require firmware upgrade of older first-generation SSDs. It can sometimes be accomplished with third-party software for older OSes (and even drives) that do not support it natively.
TRIM Support by OS:
To check whether TRIM support is enabled under Windows 7, in elevated command prompt, type:
You may also need to verify that your ATA/ATAPI AHCI controller is using a TRIM compliant driver. For Intel chipsets, instead of the default MS AHCI chipsed drivers, download and use the newer Intel chipset drivers 188.8.131.524 or later for TRIM support. For non-Intel chipsets, navigate to:
Alternatively, you can stop the indexing service for all drives:
Even if the search index is disabled for the SSD, the default index file location is under "C:\Program Data\Microsoft\Search", so if you are using the SSD as your OS drive, and have other drives in the system, their index may still be written to the SSD. The index file can be moved from its default location to another drive by navigating to:
Defragmenting a hard disk's used space is only useful on mechanical disks with multi-millisecond latencies. Free-space defragmentation for SSDs is not available in the default Windows Defragmenter. Also, defragmenting SSDs may theoretically shorten the lifespan of the drive. To check if your SSD is scheduled for defragmenation, or turn off the service, follow the instructions below.
Start Menu > type: dfrgui in the search dialog -> highlight your SSD drive in the list -> click "Configure schedule" -> untick "Run on a schedule"
Alternatively, to stop the service if you only have a SSD in the system:
Note: Windows 7 should turn defragmentation for SSDs off by default, but it should be verified.
Disable/Move the Page File
As drives have a limited number of write-cycles, it is generally a good idea to reduce unnecessary writes to your fast/expensive SSD. It has the added benefit of freeing up over 2GB of disk space.
To set a custom size (or disable) the Page file:
Note: If you completely turn off the Page file, and run out of memory, the program you're running will crash.
Disable/Reduce System Restore
The System Restore feature allows for software installations, drivers and other updates to be rolled back. Disabling this feature can free up between a couple of hundred Megabytes and a couple of Gigabytes. You can turn down the amount of disk space System Restore can use, or turn it off completely at the risk of not being able to automatically recover from problems caused by system changes.
To change System Restore (or disable it completely):
You can free up SSD space, (up to the amount of your RAM) by disabling the Hibernation feature in Windows. By default, the size of the hibernation file (hiberfil.sys) is the same as the amount of installed RAM on your computer. Naturally, disabling Hibernate will prevent you from using this power-saving mode.
To disable hibernate (needs elevated command prompt):
Note that Windows does not always delete the hybernation file (called hiberfil.sys under Windows 7), which takes up 75% of your RAM size, i.e. it would take up 6GB of storage on a system with 8GB RAM. To verify the existance/absence of a hibernation file, drop to command prompt and type: dir c:\ /as . Look for a file called hiberfil.sys . You can remove the hibernate file with the above "powercfg -h off" command in elevated command prompt.
To enable hibernate, under elevated command prompt, type: powercfg -h on
Alternatively, hibernation can be enabled/disabled using the registry editor:
Hibernate can also be disabled from the Control Panel, under Advanced Power Options (Sleep > Hibernate after), however, it does not delete the hiberfil.sys file.
To change the write-caching behavior, navigate to:
Notes: The main benefit of leaving write caching on is NCQ, or write combining. Only if you use a UPS, to squeeze the last bit of performance from write caching you may try ticking the second option under the write caching policies tab.
Configure Prefetch & Superfetch
Prefetch is essentially a disk optimisation mechanism. It monitors fragments of executable files that are commonly used together, and causes them to be laid out next to each other on the hard disk. SSDs have extremely low seek times and no rotational delay, so access times are not dependent of the location of particular segments. Prefetch therefore loses its main purpose. In addition, reducing writes to the SSD is part of optimizing its performance, so prefetch should be disabled.
Superfetch is a predictive RAM preloading mechanism. It preloads program files into memory. Its benefits are minimal with SSDs, so it can be disabled, or you can use more conservative settings than the defaults with it.
To make changes to the Prefetch/Superfetch behavior, open regedit.exe and browse down to the following key:
While there, you may also want to turn off:
Reduce the Recycle Bin size
Even though it does not affect speed, reducing the maximum Recycle Bin size to 200 MB for example can help to free up space and reduce writes to your SSD:
Right-click on the "Recycle Bin" icon -> choose "Properties" -> Custom size -> 200 MB
Note that deleted files in the Recycle Bin are only marked for deletion, without being physically moved on the disk. However, excessive Recycle Bin size can lock a considerable percentage of your drive with unnecessary files - that additional available space helps leverage writes over more cells.
Firefox - Use memory cache
Firefox has the ability to write cached files to RAM instead of the hard disk. This is not only faster, but will significantly reduce writes to the SSD while using the browser.
To change the cache location to RAM:
IE - Move Temporary Internet Files
To further reduce unnecessary disk writes to the SSD, you can move Internet Explorer temporary files to a separate mechanical drive.
In Internet Explorer, navigate to:
Reduce other unnecessary disk writes
Even though not necessary, below are some ideas about reducing disk writes further, at your discretion:
Any additional tips and feedback are always welcome.