GUIDE: SSD Tweaking Guide

Discussion in 'MacBook Pro' started by Orlandoech, Dec 11, 2012.

  1. Orlandoech, Dec 11, 2012
    Last edited: Sep 27, 2013

    macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #1
    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:
    [​IMG]
    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”.
    [​IMG]

    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:
     
  2. simsaladimbamba

    Joined:
    Nov 28, 2010
    Location:
    located
    #2
    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.
     
  3. thread starter macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #3
    I agree with you on this completely. I removed it.
     
  4. macrumors 6502a

    mankar4

    Joined:
    Aug 23, 2007
    Location:
    USA
    #4
    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.
     
  5. thread starter macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #5
    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.
     
  6. macrumors 6502a

    mankar4

    Joined:
    Aug 23, 2007
    Location:
    USA
    #6
    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?
     
  7. thread starter macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #7
    No, you dont need the app. Ill edit this section, thanks.
     
  8. simsaladimbamba

    Joined:
    Nov 28, 2010
    Location:
    located
    #8
    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).

     
  9. thread starter macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #9
    Added, thanks!

     
  10. macrumors 6502a

    Joined:
    Jul 7, 2008
    Location:
    Tulsa
    #10
    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.
     
  11. macrumors regular

    richnyc

    Joined:
    Nov 8, 2012
    Location:
    NYC
    #11
    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.
     
  12. macrumors member

    WarrenFields

    Joined:
    Jun 11, 2012
    #12
    Guide guide! Definitely will use some of these tips in the near future.
     
  13. macrumors 6502

    Joined:
    Sep 26, 2004
    #13
    I was under the impression that activating TRIM was not recommended for SandForce based SSDs (ie. Intel 520).
     
  14. macrumors 6502a

    karsten

    Joined:
    Sep 3, 2010
    #14
    excellent post, thanks! should be stickied-
     
  15. macrumors regular

    richnyc

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

    Joined:
    Jul 17, 2012
    Location:
    Cincinnati Oh
    #16
    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?
     
  17. macrumors 6502

    Joined:
    Aug 3, 2011
    #17
    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.
     
  18. macrumors regular

    kittiyut

    Joined:
    Oct 28, 2007
    #18
    Great list! Thanks!
    I disabled hibernation and recovered nearly 16GB of precious space!
     
  19. macrumors member

    Joined:
    Dec 8, 2006
    #19
    Just want to say thank you for a such good guidance.
     
  20. macrumors regular

    Joined:
    Nov 9, 2012
    #20
    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!
     
  21. macrumors 6502

    Joined:
    Jul 26, 2010
    #21
    Great share, thanks
     
  22. macrumors 6502

    Joined:
    Jun 27, 2010
    #22
    hope this gets stickied :D
     
  23. macrumors regular

    kittiyut

    Joined:
    Oct 28, 2007
    #23
    BTW, how do you make this sleep hibernation stay off permanently so I don't have to input the command every time I restart?
     
  24. macrumors 68000

    Joined:
    Mar 29, 2009
    Location:
    USA
    #24
    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!
     
  25. Orlandoech, Dec 12, 2012
    Last edited: Dec 12, 2012

    thread starter macrumors 68040

    Orlandoech

    Joined:
    Jun 2, 2011
    Location:
    Salt Lake City, UT
    #25
    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.
     

Share This Page