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 Use Trim Enabler [3rd Party SSD's only] Turn off local Time Machine snapshots [laptops only] Turn off hibernation [laptops only] Set noatime flag Move user home directories to HDD [SSD+HDD only] Use RAM disk or HDD for temporary files Turn off sudden motion sensor [SSD+HDD only] Turn off hard drive sleep [SSD+HDD only] Misc Tweaks Benchmark Tools/Utilities 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 - Blackmagic Disk Speed Test AJA System Test Xbench *Chameleon SSD Optimizer 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: http://blog.philippklaus.de/2011/04/ssd-optimizations-on-mac-os-x/ http://www.ocztechnologyforum.com/forum/showthread.php?62354
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.
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.
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?
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). AJA System Test Blackmagic Disk Speed Test Xbench
EXCELLENT guide, thanks so much! 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.
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.
I was under the impression that activating TRIM was not recommended for SandForce based SSDs (ie. Intel 520).
BTW, a huge thanks for #2: Turning off Time Machine local snapshots... I have recovered almost 80GB of space
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.
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!
BTW, how do you make this sleep hibernation stay off permanently so I don't have to input the command every time I restart?
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.