MacOS – Time Machine ridiculously slow after El Capitan upgrade

backuphard drivemacosperformancetime-machine

I recently updated to El Capitan, and told Time Machine to backup. It got stuck on Preparing Backup for hours, so I stopped it, deleted the InProgress file, rebooted and tried again. After ~30 mins, Time Machine was still preparing. I looked into activity monitor and backupd had only read ~140Mb, in 30mins… Looking into iStatMenus, I find that backupd tends to have a read speed between nothing, and 120Kb/s (If I'm lucky. It sometimes peaks up to to 500kb/s, and very rarely 1Mb/s). Spotlight is not indexing (As I heard sometimes Spotlight gets in the way of backupd), and the hard drive has gone to sleep in the time that I wrote this, rarely waking up for my Mac to briefly read something from it.

Here's what comes up in the console when searching for backupd:
Console log

I'd rather not have to reformat my hard drive, in case I ever want to downgrade back to Yosemite, however I am willing to if it solves the issue.

Also, it seems like whenever I reboot my Mac, the hard drive loses its Time Machine icon, and reverts back to an orange drive.

Screenshot of Activity Monitor, Disk mode at ~50 min mark:
Activity Monitor

EDIT: I've tried disabling and reenabling Spotlight for the disk, and I have also wiped the .Spotlight-V100 folder and rebooted. No change.

EDIT 2: What seems to be some errors has appeared in the console
Err

EDIT 3: After many, many hours, Time Machine has finished scanning and is now backing up! I'd still like to know why it took so long (I didn't expect updating to El Capitan to take so long. I excluded system files as well, although I guess I'm in for another long wait since I just removed them from the exceptions list)

Best Answer

Part of the issue is that low priority input/output-operations (I/O) now seems to get throttled heavily. You can check it via Terminal (can be found via Spotlight (usually bound to Space) and entering terminal) then entering at the bash prompt:

fs_usage backupd

and look for the THROTTLED entries. If you see them, the backup is throttled.

So if you have a ton of files, just the time it takes to do the I/O takes forever, even if the files are small (because it performs a bunch more I/O operations around xattrs etc. than it used to).

Go to a Terminal and enter:

sudo sysctl debug.lowpri_throttle_enabled=0

For me, this speed it up from 72 hours to ~4 hours on an filesystem with 2.5 million files.

It's also a good idea to re-enable the throttling after your backup finished successfully with the following command

sudo sysctl debug.lowpri_throttle_enabled=1