GUIDE: SSD Tweaking Guide

Orlandoech

macrumors 68040
Original poster
Jun 2, 2011
3,325
786
Salt Lake City, UT
I am in the non-profit (lol) business to help as many MR members and visitors as possible. I have been taking my experience, research, free time, and documentation skills (I do a lot of documentation in the IT field) and put them to use by creating easy on the eyes, readable and helpful HOW TO GUIDES for the MR Community. Feel free to PM me directly or make a post to add contributions, update existing information, or remove any inaccuracies to this thread and I will update the thread to reflect the changes.

Source: Martin's Weekend Coding
Credit: Martin's Weekend Coding


DISCLAIMER: APPLY TWEAKS AT OWN RISK, IN NO EVENT WILL MACRUMORS.COM OR ORLANDOECH(.COM) BE LIABLE FOR ANY CONSEQUENTIAL DAMAGES IN CONNECTION, RELATED OR UNREALTED WITH APPLYING OR PERFORMING ANY OF THE “TWEAKS” REFERENCED IN THIS POST INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA CORRUPTION, APPLICATION/PROGRAMS CORRUPTION, OPERATING SYSTEM CORRUPTION, OR HARDWARE FAILURE.

DISCLAIMER #2: ALL "TWEAKS" ARE PERSONAL PREFERENCE. SOME USERS MAY FIND VALUE IN SOME OR ALL OF THE "TWEAKS" WHILE OTHERS MAY NOT, MOST NOTABLY STEP #5.



CONTENTS

  1. Use Trim Enabler [3rd Party SSD's only]
  2. Turn off local Time Machine snapshots [laptops only]
  3. Turn off hibernation [laptops only]
  4. Set noatime flag
  5. Move user home directories to HDD [SSD+HDD only]
  6. Use RAM disk or HDD for temporary files
  7. Turn off sudden motion sensor [SSD+HDD only]
  8. Turn off hard drive sleep [SSD+HDD only]
  9. Misc Tweaks
  10. Benchmark Tools/Utilities
  11. References

1. Use Trim Enabler [3rd Party SSD's only]
NOTE: This IS NOT NEEDED for any OEM Apple SSDs in any iMac, Mac Mini, MacBook Pro Retina, MacBook Pro, MacBook Air.

TRIM support is essential for keeping the SSD healthy. Unfortunately, MacOS supports TRIM only for Apple-supplied SSD’s. If you bought a 3rd party one like I did, you have to tweak the system to be able to turn on the TRIM support. Trim Enabler is a simple utility that does this for you. Download TrimEnabler.​


2. Turn off local Time Machine snapshots [laptops only]
If you are using the SSD in a laptop, and you turned the Time Machine backups on, you should know that OS X Lion does local snapshots at times when your Time Machine disk is not available. This is quite common – you are typically connecting your external TM disk only once in a while or you are using Time Capsule at home but take your laptop to the office every day for 8+ hours. You can confirm if the local TM backups are on by opening Time Machine Preferences:

There is no GUI switch to turn these local backups off, but it can easily be done on the command line. Just start Terminal.app and execute the following command:

Code:
sudo tmutil disablelocal
Once you do this, the TM Preferences panel will immediately reflect it – the text will change from “Time Machine keeps local snapshots as space permits, and:” to “Time Machine keeps:”. To turn it back on, you can simply run the following in the Terminal:

Code:
sudo tmutil enablelocal
Also note, this feature gets turned on automatically whenever you turn off and on the Time Machine – so don’t forget to turn the local backups back off again whenever you do that.

I found out about how to turn off the local backups from this article: http://osxdaily.com/2011/09/28/disable-time-machine-local-backups-in-mac-os-x-lion/


3. Turn off hibernation [laptops only] - *UPDATED 01.16.2013 -

Another feature of Mac OS turned on by default on laptops is, that it saves all the memory to disk when entering sleep mode. This is to ensure your laptop does not lose your work if it runs out of battery while “sleeping”. The more RAM you have, the more gigabytes it writes to the disk every time you close the lid/put it to sleep. I typically do this at least twice a day – when leaving the office and when going to sleep in the evening. If you are in a similar situation and you have 8GB of RAM, that means your MacBook writes 16 to 24 GB of hibernation data to your SSD every day. Here is how you can turn this off – it will not only make your SSD’s life longer, but also significantly speed up the time it takes for your laptop to enter the sleep mode:
Code:
sudo pmset -a hibernatemode 0
*Once you turn off hibernation, you can also remove the sleep image file that will free up several GB of disk space (depending on how much RAM you have):
Code:
sudo rm /Private/var/vm/sleepimage
*Then create a blank zero-byte file so OS X cannot rewrite the file:
Code:
sudo touch /Private/var/vm/sleepimage
*Last, make the file immutable:
Code:
sudo chflags uchg /Private/var/vm/sleepimage


4. Set noatime flag

MacOS (like other unix-based systems) by default records last access time for every file. I.e. every time you read a file, a write is made on the filesystem to record this action. There is no point in doing it and no side effects if you disable that by mounting the root filesystem with noatime flag set. To do that create a file named for example “com.nullvision.noatime.plist” (you can pick any other name you wish) in the directory /Library/LaunchDaemons with the following content:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.nullvision.noatime</string>
        <key>ProgramArguments</key>
        <array>
            <string>mount</string>
            <string>-vuwo</string>
            <string>noatime</string>
            <string>/</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>
And execute the following command in Terminal:

Code:
sudo chown root:wheel /Library/LaunchDaemons/com.nullvision.noatime.plist
Restart the machine.

You can verify that it worked by executing the following in Terminal:

Code:
mount | grep " / "
You should get the following output (i.e. see noatime in the list in parentheses):

Code:
/dev/disk0s2 on / (hfs, local, journaled, noatime)
This tweak was taken from blogs.nullvision.com, which seems to not be available anymore, but I found a mirror of the old content here: http://www.icyte.com/saved/blogs.nullvision.com/441781
And the same trick (inspired by the same blog) is here: http://blog.philippklaus.de/2011/04/ssd-optimizations-on-mac-os-x/


5. Move user home directories to HDD [SSD+HDD only]

This tweak is only useful if you have both SSD as well as HDD in your Mac. I’m using this in my iMac. I moved all the content of /Users folder to the HDD and created a symbolic link from the SSD to it (so that I don’t have to change the home folder location in the user settings, as I read some applications don’t like it and may not work correctly). To do that execute the following commands in Terminal:

Code:
sudo ditto /Users /Volumes/your_hdd_name/Users
sudo mv /Users /Users.bak
sudo ln -s /Volumes/your_hdd_name/Users /Users
UPDATE: To be safe, you should also go to System Preferences, click on Users & Groups, click the lock icon to unlock advanced editing (password prompt will appear). Once unlocked, you should be able to right-click on each user account and choose Advanced Options from the pop-up menu. Once in the Advanced Options dialog, change the Home directory of the user from “/Users/user-name” to the new location (e.g. “/Volumes/HDD/Users/user-name”).

Now, check if your home folders are showing up correctly in Finder. If so, restart your computer.

Finally, delete the back-up of your Users folder on the SSD by typing the following into the Terminal:
Code:
sudo rm -rf /Users.bak


6. Use RAM disk or HDD for temporary files

If you have enough RAM, you can dedicate (typically around 256 to 512 MB) of RAM to a RAM disk. RAM disk is a virtual disk that only resides in memory, so is suitable for storing data that need to live only until you shut down your computer. Temporary files are ideal for this. You can create a RAM disk during the boot time and redirect all the temporary files there. To do that, create a file named “MoveTempFoldersToRamDisk.sh” in your home directory and put the following content in:

Code:
#!/bin/bash

# +----------------------------------------------------------------------+
# | |
# | Set up Mac OS X to store temporary files in RAM rather than on disk.|
# | |
# | By Philipp Klaus <http://blog.philippklaus.de> |
# | |
# | Originally by Ricardo Gameiro <http://blogs.nullvision.com/?p=357> |
# | Changes by Daniel Jenkins |
# | <http://blogs.nullvision.com/?p=357#comment-1140> |
# | |
# +----------------------------------------------------------------------+

cd /System/Library/StartupItems
sudo mkdir RamFS
sudo chown -R root:wheel RamFS
sudo chmod -R u+rwX,g+rX,o+rX RamFS
cat << "EOF" | sudo tee RamFS/RamFS > /dev/null
#!/bin/sh
# Create a RAM disk with same perms as mountpoint

RAMDisk() {
    mntpt=$1
    rdsize=$(($2*1024*1024/512))
    echo "Creating RamFS for $mntpt"
    # Create the RAM disk.
    dev=`hdik -drivekey system-image=yes -nomount ram://$rdsize`
    # Successfull creation...
    if [ $? -eq 0 ] ; then
        # Create HFS on the RAM volume.
        newfs_hfs $dev
        # Store permissions from old mount point.
        eval `/usr/bin/stat -s $mntpt`
        # Mount the RAM disk to the target mount point.
        mount -t hfs -o union -o nobrowse $dev $mntpt
        # Restore permissions like they were on old volume.
        chown $st_uid:$st_gid $mntpt
        chmod $st_mode $mntpt
    fi
}

# Test for arguments.
if [ -z $1 ]; then
echo "Usage: $0 [start|stop|restart] "
    exit 1
fi

# Source the common setup functions for startup scripts
test -r /etc/rc.common || exit 1
. /etc/rc.common

StartService () {
    ConsoleMessage "Starting RamFS disks..."
    RAMDisk /private/tmp 256
    RAMDisk /var/run 64
    #RAMDisk /var/db 1024
    #mkdir -m 1777 /var/db/mds
}
StopService () {
    ConsoleMessage "Stopping RamFS disks, nothing will be done here..."
    # diskutil unmount /private/tmp /private/var/run
    # diskutil unmount /private/var/run
}

RestartService () {
    ConsoleMessage "Restarting RamFS disks, nothing will be done here..."
}

RunService "$1"
EOF
sudo chmod u+x,g+x,o+x RamFS/RamFS


cat << EOF | sudo tee RamFS/StartupParameters.plist > /dev/null
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>Description</key>
<string>RamFS Disks Manager</string>
<key>OrderPreference</key>
<string>Early</string>
<key>Provides</key>
<array>
<string>RamFS</string>
</array>
<key>Uses</key>
<array>
<string>Disks</string>
</array>
</dict>
</plist>
EOF
Now, run the following in the Terminal:

Code:
chmod 755 ~/MoveTempFoldersToRamDisk.sh
~/MoveTempFoldersToRamDisk.sh
This creates two RAM disks on startup – one 256MB large for /private/tmp (command “RAMDisk /private/tmp 256? in the middle of the above script) and another one 64MB large for /var/run. You can now delete ~/MoveTempFoldersToRamDisk.sh from your computer.
For the changes to take effect, you have to restart.

If you decide to undo this tweak in the future, you can do it simply by deleting /System/Library/StartupItems/RamFS directory from your Mac. E.g. by executing the following command in the Terminal:
Code:
sudo rm -rf /System/Library/StartupItems/RamFS
Again, restart is needed for this to take effect.

There are some small drawbacks to applying this tweak:

  • After applying it it takes a few seconds (2-3 on my machine) to shut down
  • It lowers the size of RAM usable for applications
If you are bothered by the above and have HDD in your Mac as well, you can consider moving the temporary files to HDD instead of the RAM disk. The steps are similar to moving the user home directories. E.g. to move /private/tmp, execute the following in the Terminal:
Code:
sudo ditto /private/tmp /Volumes/your_hdd_name/private/tmp
sudo rm -rf /private/tmp
sudo ln -s /Volumes/your_hdd_name/private/tmp /private/tmp
RAM disk portion of this tweak taken from here: http://blog.philippklaus.de/2011/04/ssd-optimizations-on-mac-os-x/
Originally suggested by blogs.nullvision.com (mirror at http://www.icyte.com/saved/blogs.nullvision.com/441781)​


7. Turn off sudden motion sensor [no HDD only]

If SSD is the only drive in your Mac, there is no point in using the Sudden Motion Sensor. You can switch it off by executing the following in the Terminal:

Code:
sudo pmset -a sms 0


8. Turn off hard drive sleep [no HDD only]

Some websites mention SSD may freeze when the hard drive sleep feature is on, so it is recommended to turn it off. However, you probably don’t want to do this if you also have a HDD in your Mac. To switch the hard drive sleep off, go to System Preferences->Energy Saver and uncheck “Put the hard disk(s) to sleep when possible”.


Taken from http://poller.se/2010/08/optimizing-mac-os-x-for-ssd-drives/



9. Misc Tweaks
Disable waking up when LID opens
Code:
sudo pmset lidwake 0
No hibernate
Code:
sudo pmset -a hibernatemode 0
Disabling Sudden Motion Sensor
Code:
sudo pmset -a sms 0
Verify applied tweaks
Code:
pmset -g
Screen capture save format
Code:
defaults write com.apple.screencapture type jpg
Screen capture save location
Code:
defaults write com.apple.screencapture location [path]
Mac login window display System Time
Code:
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo Time
Safari single window mode
Code:
defaults write com.apple.Safari TargetedClicksCreateTabs -bool true
Add a “Recent files” stack to Dock
Code:
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }'
Make Dock app icons spring-loaded
Code:
defaults write com.apple.dock enable-spring-load-actions-on-all-items -boolean YES
Snow Leopard Stack Highlight
Code:
defaults write com.apple.dock mouse-over-hilite-stack -boolean YES
Reload Dock
Code:
killall Dock

10. Benchmark Tools/Utilities - *UPDATED 01.22.2013 -


11. References
The tweaks that I presented are the tweaks that I thought are worth applying. None of them really limits any features. There are other tweaks, which I did not want to apply as I would be giving up on some functionality (such as disabling the Spotlight) or I was not comfortable with (e.g. disabling the swap files). You can find these and more on the following web sites:
 
Last edited:
  • Like
Reactions: isisism

Nov 28, 2010
22,668
27
located
1. Don’t run benchmarks on your new SSD
Some people, right after they buy a new SSD, want to enjoy the speed and are eager to find out how much faster exactly their new SSD is than the old HDD. So they get this cool idea of running some extensive benchmarks to see the amazing performance numbers. Benchmarks usually write a lot of data to the disk (to test the write speed), wearing it out. So it is the best way how you can ruin your SSD even before you start using it. Don’t do it.​
But benchmarks don't write tens of thousand of GBs to your SSD and unless you perform benchmarks several times a day, an initial benchmark to see, if everything works alright does not damage the SSD.

Normally modern SSDs have a theoretical write/read limit of 10,000 to 100,000 cycles (P/E cycles), meaning if you had a 64 GB SSD and its cycle limit would be 10,000, you would have to write 625 TB to it, which would be 351 GB per day everyday for the next five years. Assuming those numbers vary and it would only be a tenth of that, it would still mean 35 GB per day, which under normal usage no average computer consumer does, not even with temporary files.
 

Orlandoech

macrumors 68040
Original poster
Jun 2, 2011
3,325
786
Salt Lake City, UT
But benchmarks don't write tens of thousand of GBs to your SSD and unless you perform benchmarks several times a day, an initial benchmark to see, if everything works alright does not damage the SSD.

Normally modern SSDs have a theoretical write/read limit of 10,000 to 100,000 cycles (P/E cycles), meaning if you had a 64 GB SSD and its cycle limit would be 10,000, you would have to write 625 TB to it, which would be 351 GB per day everyday for the next five years. Assuming those numbers vary and it would only be a tenth of that, it would still mean 35 GB per day, which under normal usage no average computer consumer does, not even with temporary files.
I agree with you on this completely. I removed it.
 

mankar4

macrumors 6502a
Aug 23, 2007
624
0
USA
I agree with you on this completely. I removed it.
Dont remove it. This is a great list, that informs, and allows users to make their own decision. Maybe just make a note of this discussion in the post.

Thanks for this list! This is great. This should become a sticky, maybe in the Macbook Air forum, since there are only SSD's there.
 

Orlandoech

macrumors 68040
Original poster
Jun 2, 2011
3,325
786
Salt Lake City, UT
Dont remove it. This is a great list, that informs, and allows users to make their own decision. Maybe just make a note of this discussion in the post.

Thanks for this list! This is great. This should become a sticky, maybe in the Macbook Air forum, since there are only SSD's there.
I removed it, SSDs lifespan, millions of hours is just too significant to have that around. Technology advances and while that may have been applicable with first gen SSDs, I no longer think its at all relevant.
 

mankar4

macrumors 6502a
Aug 23, 2007
624
0
USA
1. Use Trim Enabler
TRIM support is essential for keeping the SSD healthy. Unfortunately, MacOS supports TRIM only for Apple-supplied SSD’s. If you bought a 3rd party one like I did, you have to tweak the system to be able to turn on the TRIM support. Trim Enabler is a simple utility that does this for you. Download TrimEnabler.​
I have a question. If I just have the stock SSD in my mbpr, is TRIM automatically enabled & working, or do I have to do something else?
 
Nov 28, 2010
22,668
27
located
I agree with you on this completely. I removed it.
Ups, sorry about that.

And another victory for anonymous message board discussion, yippie.

Anyway, you could keep a benchmark section in order to test speeds of the SSD, if it works correctly and is not missing a firmware update (my Vertex 3 needed to be updated to be recognised at 3 Gbps Negotiated Link Speed on my 2009 MBP).

 

Orlandoech

macrumors 68040
Original poster
Jun 2, 2011
3,325
786
Salt Lake City, UT
Ups, sorry about that.

And another victory for anonymous message board discussion, yippie.

Anyway, you could keep a benchmark section in order to test speeds of the SSD, if it works correctly and is not missing a firmware update (my Vertex 3 needed to be updated to be recognised at 3 Gbps Negotiated Link Speed on my 2009 MBP).

Added, thanks!

 

zackkmac

macrumors 6502a
Jul 7, 2008
732
37
Tulsa
EXCELLENT guide, thanks so much! :D

That hibernation mode is helpful but annoying, so disabling it and running those Terminal commands freed up 15GB of space for me! FWIW, I have 16GB RAM in my laptop.
 

richnyc

macrumors regular
Nov 8, 2012
178
1
NYC
7. Turn off sudden motion sensor [no HDD only]

If SSD is the only drive in your Mac, there is no point in using the Sudden Motion Sensor. You can switch it off by executing the following in the Terminal:

Code:
sudo pmset -a sms 0
Taken from http://poller.se/2010/08/optimizing-mac-os-x-for-ssd-drives/
First of all, really amazing HOW-TO guide!!! Thanks for putting it together and posting here.

A small nit-pic: The above link doesn't work for me... Tried to google it, nothing came up.
 
W

WarrenFields

Guest
Guide guide! Definitely will use some of these tips in the near future.
 

TheIguana

macrumors 6502a
Sep 26, 2004
650
381
Canada
1. Use Trim Enabler [3rd Party SSD's only]
NOTE: This IS NOT NEEDED for any OEM Apple SSDs in any iMac, Mac Mini, MacBook Pro Retina, MacBook Pro, MacBook Air.

TRIM support is essential for keeping the SSD healthy. Unfortunately, MacOS supports TRIM only for Apple-supplied SSD’s. If you bought a 3rd party one like I did, you have to tweak the system to be able to turn on the TRIM support. Trim Enabler is a simple utility that does this for you. Download TrimEnabler.​
I was under the impression that activating TRIM was not recommended for SandForce based SSDs (ie. Intel 520).
 

richnyc

macrumors regular
Nov 8, 2012
178
1
NYC
BTW, a huge thanks for #2: Turning off Time Machine local snapshots... I have recovered almost 80GB of space;)
 

Justinhub2003

macrumors regular
Jul 17, 2012
137
0
Cincinnati Oh
So I have a 500GB Samsung 840 SSD which uses TLC nand which has a shorter life span than MLC nand.

That said, I also have 16GB of ram and I did notice a 16GB file on my SSD.


So, using your instructions, I disabled hybernation to gain a longer life on my SSD.
I probably will only keep/use this SSD for 2-3.5 years (if that)

With all that said, do you think disabling hybernation is a good idea with 16Gb of ram and TLC SSD? Or since I dont plan on it lasting more than 5 years, will I be ok wth it on?

Whats the disadvantage of disabling hybernation?
 

Raunien

macrumors 6502
Aug 3, 2011
438
28
So I have a 500GB Samsung 840 SSD which uses TLC nand which has a shorter life span than MLC nand.

That said, I also have 16GB of ram and I did notice a 16GB file on my SSD.


So, using your instructions, I disabled hybernation to gain a longer life on my SSD.
I probably will only keep/use this SSD for 2-3.5 years (if that)

With all that said, do you think disabling hybernation is a good idea with 16Gb of ram and TLC SSD? Or since I dont plan on it lasting more than 5 years, will I be ok wth it on?

Whats the disadvantage of disabling hybernation?
The only disadvantage to disabling hibernation is that in the event your computer loses all power (AC and battery) while in sleep mode and it shuts down, the data you were working on will not be saved.

If you do not see this happening, then there is not discernible disadvantage.
 

kittiyut

macrumors regular
Oct 28, 2007
234
1
Great list! Thanks!
I disabled hibernation and recovered nearly 16GB of precious space!
 

ultra7k

macrumors 6502
Nov 9, 2012
251
35
awesome. disabled hibernation as well and got back 16 gb!

I used to do this on my PC but wasn't aware that mac had it as well. thanks!
 

kittiyut

macrumors regular
Oct 28, 2007
234
1
BTW, how do you make this sleep hibernation stay off permanently so I don't have to input the command every time I restart?
 

robvas

macrumors 68030
Mar 29, 2009
2,801
371
USA
With modern SSD's you really don't need to be worried about 'wearing out' your SSD. So some of these are pointless - noatime, moving files to HDD, using a RAM disk...

But shutting hibernation off to save disk space isn't a bad idea. If I'm going to put my computer to sleep for a long period of time (12+ hours) I just turn it off - with an SSD you can boot back up in 15 seconds anyway.

I also wouldn't shut off local time machine snapshots - they might save your life, or at least your work!
 

Orlandoech

macrumors 68040
Original poster
Jun 2, 2011
3,325
786
Salt Lake City, UT
With modern SSD's you really don't need to be worried about 'wearing out' your SSD. So some of these are pointless - noatime, moving files to HDD, using a RAM disk...

But shutting hibernation off to save disk space isn't a bad idea. If I'm going to put my computer to sleep for a long period of time (12+ hours) I just turn it off - with an SSD you can boot back up in 15 seconds anyway.

I also wouldn't shut off local time machine snapshots - they might save your life, or at least your work!
I do agree that some of these are pointless and I didn't and wont do a lot, but other users may want to know and may want to do them.

I disabled TM Local Snapsnots and turned off Hibernation because I do what Jesus does and I save often.

I never leave un-saved work open, ever, so Im not worried.
 
Last edited: