Massively speed up Time Machine backups
13 March 2016, 04:15
Time Machine and its network-equipped brother, Time Capsule, are superb innovations. They make backup seamless, invisible and easy. They’re also slow. Really slow. I’ve had to wait before I put my MacBook Pro to sleep sometimes while a backup finishes and, of course, the initial backup can literally take days.
Here’s how to fix that.
Open a Terminal window, which you’ll find in the Utilities folder within the Applications list, and paste in the following, typing your login password when prompted:
sudo sysctl debug.lowpri_throttle_enabled=0
This command prevents Time Machine’s backup process assuming a low CPU priority, allowing backups to complete insanely quickly. In fact, you’ll see MB and GBs tick past on the Time Capsule progress display in a second-by-second fashion (provided your Mac isn’t very busy with some other task).
Alas, this command is forgotten when you reboot. If you want it to stick around when you reboot, you’ll need to add a launch-time script, as follows.
- Back in the Terminal window, paste in the following single line (it might be split into two lines in your web browser – just highlight all lines at once, then copy and paste):
sudo nano /Library/LaunchDaemons/nothrottle.plist
- You’ll open a document editor in the Terminal window. Copy and paste in the following chunk of 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>nothrottle</string> <key>ProgramArguments</key> <array> <string>/usr/sbin/sysctl</string> <string>debug.lowpri_throttle_enabled=0</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
- In the Terminal window, tap the Ctrl+O keyboard shortcut (that’s Ctrl, not Cmd!) and then hit Enter. Then tap Ctrl+X.
- In the Terminal window, paste in the following single line, which again might appear in your web browser as two or more lines:
sudo chown root /Library/LaunchDaemons/nothrottle.plist;sudo launchctl load /Library/LaunchDaemons/nothrottle.plist
- Close the Terminal window.
Should in future you want to turn off this new command, type the following, which again is a single line:
sudo launchctl unload -w /Library/LaunchDaemons/nothrottle.plist
… And then reboot.
Leave a comment...
This is awesome.
FYI, the first terminal command needs a “-w” flag (at least it did on my mac)
sudo sysctl -w debug.lowpri_throttle_enabled=0
— Alan Levine aka @cogdog · Mar 14, 08:19 AM · #
Hi Alan
Which version of OS X are you using? On El Capitan the man page for sysctl says…
“The -w option has been deprecated and is silently ignored.”
So just to confirm to readers, if you’re using El Capitan then you don’t need the -w on this particular command.
What limits this to Time Machine – as far as I can tell that is a global sysctl affecting all processes.
— Liam · Mar 14, 12:16 PM · #
Liam, it isn’t limited to Time Machine. However, several people have been using this trick for a while and it seems to have no impact on any other process.
Allegedly the throttling of processes in this way started in OS X 10.9. There’s a discussion here: https://groups.google.com/d/msg/comp.sys.mac.system/YMB8ATgsaaI/VyBHR8gozxQJ/
After entering the first command in Terminal, it returns the following
debug.lowpri_throttle_enabled: 0 -> 0
Is that normal?
— Gary L. Gray · Mar 14, 01:37 PM · #
Yes. It’s just tell you that the setting has been set. You can read the setting by typing
sudo sysctl debug.lowpri_throttle_enabled
and you should then see
debug.lowpri_throttle_enabled: 0
That’s all nice and fun but I’d actually just like to schedule a time for it to run and never outside that time. For some odd reason, Time Machine decided one day to start running first thing in the morning when I get to work and refuses to let go of my external disk to the point where I just pull the plug instead of waiting for it to finish if I need to be at a meeting.
— Eugene · Mar 14, 08:44 PM · #
Many thanks. This works very well.
I also found: http://apple.stackexchange.com/questions/212537/time-machine-ridiculously-slow-after-el-capitan-upgrade/219884
but i could not get that running.
Hopefully Apple is also interested in this solution….
The Launch Daemon is totally superfluous.
The points from 2 to 5 can be substituted by a more simple (and elegant) approach.
Open a terminal app, become root and type:
echo “debug.lowpri_throttle_enabled=0” >> /etc/sysctl.conf
— Faithful · May 9, 12:34 PM · #
Correcting to be more copy and paste friendly:
echo ‘debug.lowpri_throttle_enabled=0’ >> /etc/sysctl.conf
— Faithful · May 9, 12:38 PM · #
It works perfectly with 10.11.4 but with 10.11.5 the command disappear :(
GDMAC:~ giovanni$ sudo sysctl debug.lowpri_throttle_enable=0
sysctl: unknown oid ‘debug.lowpri_throttle_enable’
Any idea??
Giovanni, it still works fine on my system:
MacBook-Pro:~ keir$ sudo sysctl debug.lowpri_throttle_enabled=0
Password:
debug.lowpri_throttle_enabled: 1 -> 0
MacBook-Pro:~ keir$
Are you definitely pasting in the correct command from the post above?
— Keir Thomas · May 21, 03:01 AM · #
Giovanni:
debug.lowpri_throttle_enabled not debug.lowpri_throttle_enable
Should do the trick.
— T Tague · May 23, 06:49 AM · #
Wow, I wish I could know your trick earlier. To be honest, I was sick of Time Machine backup dragging down my Mac performance. Though I’ve used an app called Time Machine Editor to decrease the frequency of backup, still not happy about it. Thanks for writing this awesome technique.
— Nikki loves iMac · May 28, 03:45 PM · #
Hi there,
I use a MacBook Pro 13”, 2.4GHz 500gd (mid-2010) model and only upgraded to El Capitan from Mountain Lion last night. My experience with El Capitan has been slower, in general, but extremely slow when I attempt to make a backup of my Mac HD on my external time machine HD.
I saw your solution here, and successfully entered: sudo sysctl debug.lowpri_throttle_enabled=0 followed by my password.
Unfortunately, my time machine is still “Preparing Backup” despite a ~30-minute wait on my end. I got tired of waiting, skipped the backup, ejected my time machine, shut down machine, turned on again, and tried the entire process again….
But it’s still taking a long time “Preparing backup”. Why is this so? Any advice would be much appreciated asap. Thanks heaps.
— val · Jun 17, 09:19 PM · #
I get this message when I type the command into the terminal. That normal?
WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type “man sudo” for more information.
To proceed, enter your password, or type Ctrl-C to abort.
Thank you SO much for this code! I just followed your instructions and the backup time for 17GB update dropped from 8 hours to 45 minutes! I’m running OSX Sierra on a 2012 MBP 15. I’m shocked that Apple would not enable the normal user to choose the throttle speed. As I am typing this, my time dropped to 38 m
— Warren · Oct 26, 07:39 AM · #
You saved my life! Thanks…
— Fivos Sakellis · Oct 29, 12:24 PM · #
Hi Guys, for some reason the script does not work for me and every time the machine is booted I need to just do it over again
Below is what is showing up after creating the script
st;sudo launchctl load /Library/LaunchDaemons/nothrottle.plist
/Library/LaunchDaemons/nothrottle.plist: Service is disabled
— Victor · Nov 2, 02:36 AM · #
This was a life saver. You’re a GOD. I owe you a beer.
— Ali Rae · Dec 5, 04:26 PM · #
Thanks for tip but didnt work for me either . Mac sierra.
— manxman · Dec 6, 05:17 AM · #
MacOS Sierra here too and it does not seem to have any effect, Time Machine is still working really slowly trying to do an initial backup (855GB) to a new Seagate Personal Cloud NAS.
Has anyone successfully used this with positive results on Sierra?
— Adam · Dec 29, 04:19 PM · #
Thanks! My estimated time to completion was 11 hours. After this workaround, it dropped to 53 minutes. I’m backing up 115.58 GB on a late 2016 MBP base model running OSX Sierra 10.12.2. Backing up to a SanDisk Extreme PRO CZ88 128GB flash drive.
Hi Keir
This looks great and much needed as I’m in the process of backing up 155GB and it’s going so slow.
I followed your steps and got the same warning message posted by another user – referring to data loss etc… Is it safe to proceed?
Thanks heaps
— Andrew · Mar 26, 03:03 AM · #
The warning is just a standard “sudo” boilerplate warning that appears when you use the command for the first time. You can ignore it.
— Keir Thomas · Mar 26, 03:38 AM · #
Running Sierra 10.2.5
Followed the procedure carefully, but in the end I got this message: “Invalid property list”
— Dr Trevor J. Hutley · Apr 7, 08:35 AM · #
sysctl asks to specify -w to set variables, i.e. change the argument to sudo sysctl -w debug.lowpri_throttle_enabled=0 leads to the result as expected for me. Thanks for this great hack!!
— Stretch · Apr 13, 07:24 AM · #
Hey,
Seems like this trick is working well on everybody else’s Macbooks, but I’m running into some problem on my Macbook Pro (2015, 13”, OS Sierra 10.12.4). It doesn’t seem to work at all; in fact, Time Machine been backing up for 10 minutes and it still says “11KB of 74.54GB.” Any idea how that happened?
By the way, there isn’t a problem with my backup disk. I used to use it on another Macbook Pro of the exact same model and OS, and it worked perfectly fine, backs up <10GB every time and gets done in 1-2 hours max.
Many Thanks!
— miku · May 22, 05:20 AM · #
Yes! This has been driving me crazy! This works exactly as described. Thank you!
— Phil · May 25, 06:29 PM · #
For those wanting to control when Time Machine runs, there is TimeMachineScheduler. If you like it, donate. It is here:
http://www.klieme.com/TimeMachineScheduler.html
Been using it for years to limit Time Machine to running after midnight.
— fredonline · Jan 8, 06:31 AM · #
Thank you for this, works for me and helped me a lot.
— MaSlo · Jul 8, 12:39 PM · #
I did the throttle fix and it is no faster.
Any suggestions?
— Stacey · Aug 5, 07:24 AM · #
just tried this and Terminal will not let me enter my password — or anything — either manually from keyboard or cut and paste from clipboard. there’s a key icon following the word Password in Terminal.
on OSX 10.13.6
Hi Kier,
You said “Alas, this command is forgotten when you reboot. If you want it to stick around when you reboot, you’ll need to add a launch-time script, …”
But there is another easy way.
(Keir, you probably know this already, but this is for your other readers.)
The Terminal application remembers the history of commands that you execute. They are logged to a file, and the operating system remembers them (as per Unix and Linux standards).
If you enter any commands and then hit the UP arrow, the last commands you entered will re-appear at the command prompt, so you can use the UP and DOWN arrows to scroll back through them and just hit Enter to re-execute any of the commands as they appear at the Command Prompt.
So the next time you boot your Mac, you just need to open Terminal, and hit the Up arrow once or twice until the sysctl command re-appears, then hit Enter to execute it again.
(And any command in the list can be edited prior to executing them again. So you could change the 0 to a 1, then hit Enter to turn the throttling back on again).
For some users this will be simple, but power-users might prefer to write a script to do this.
Of course, if you issue lots of commands from the Terminal, you will have to scroll up through many commands to find the sysctl command again so this solution is not for everybody.
MSDOS remembers commands too (it has done for decades) but the list of commands is lost each time one re-boots.
— Michael Walsh · Dec 21, 03:44 AM · #
Referring to my previous comment about using bash history to re-enter the command to disable throttling.
As with all things Mac/Apple, I spoke too soon.
On my wife’s Mac running El Capitan the bash history is remembered from session to session, and even when I shut down and reboot.
But on my Mac, which is an identical model, and also running El Capitan, the bash history is NOT remembered. And I can’t find any clear explanation as to how to set it to remember the bash history.
There are plenty of internet posts about this subject but everybody says “this worked for me…” which leads me to believe that they are not absolutely certain whether the procedures they are recommending will work or not.
And please excuse my uncertainty too.
— Michael Walsh · Dec 22, 12:07 PM · #
It’s going literally a hundred times faster thank you so much
— Josh · Jan 18, 04:57 PM · #
It’s working well on my Sierra system. Backup time for 17Gb was estimated at 18 hours, which grew to 22 (both are really bad for 17Gb to a USB C drive). Then I sysctl’d as here and it’s clipping along – enough to reduce ETA to 4hrs. Looks like when computer sleeps so does backup – but that’s not very smart.
— Michael C. · Feb 12, 09:18 PM · #
Omg thank you! What a difference.
— Geoff · Jul 9, 07:50 PM · #
I have tried to enter all variations of this command into terminal, but it just says: second level name lowpri_throttle_enabled in debug.lowpri_throttle_enabled is invalid.
I have tried the following:
sudo nano /Library/LaunchDaemons/nothrottle.plist AND sudo sysctl -w debug.lowpri_throttle_enabled=0 AND sudo sysctl-w debug.lowpri_throttle_enabled=0
I’m not sure if this is due to the fact that it’s OS X 10.7.5 or because it’s an iMac (mid 2011) or if I’m just missing something… any info or tips would be extremely helpful because I can’t take these day long time machine backups
— Dani · Aug 13, 09:33 AM · #
Wow! To say that there’s a night and day difference between how long it takes now and how long it used to take doesn’t remotely do it justice. Thank you so much!!
— Gail · Sep 16, 12:08 PM · #
Does anyone have this working or knows how to do this on the new macOS Catalina?
— anstan · Oct 17, 11:05 AM · #
This works MUCH better:
sudo renice -n 100 $(pgrep ^backupd$)
— pdorofiejczyk · Oct 30, 05:14 AM · #
re: Michael Walsh · Dec 22, 12:07 PM · wrote:
“But on my Mac, which is an identical model, and also running El Capitan, the bash history is NOT remembered.”
Michael, maybe the shell variable “savehist” isn’t set.
To find out, in terminal type:
@ | grep savehist
If set, it will show something like
savehist 100
- the number shown is the # of commands saved.
If not set, type (without sudo):
set savehist=100
To always have this shell variable set, put this command in your .bashrc (or .cshrc or .login) file in your home directory.
More info is available from cshell manual; type:
man csh
… and search for “savehist”. Get out with “q”.
Hope this works for you, too!
— erikl · Nov 30, 01:16 PM · #

◀︎ Update Flash plugin now – vulnerability being exploited in the wild
Make the Mac app switcher smaller (or bigger) ▶︎