Apple’s macOS High Sierra introduced enough performance enhancements that my dual-core, 2011 MacBook Air felt like it had new life breathed into it. Occasionally, though – and more and more frequently recently – events would cascade such that my CPU would run at full tilt for 5-10 minutes before finally settling in. When that was happening, Activity Monitor and/or iStat Menus would show two system processes chewing up CPU: tailspind and spindump. Time to figure out how to stop that!
Research led me to these two very loosely-defined scenarios where tailspind and spindump would decide to run1:
- An application asks tailspind and spindump to take a snapshot of the state of that application and write it out to disk, or;
- Some application or process would consume maximum CPU for some period of time (30 seconds seems to be the general consensus), and then tailspind and spindump would fire up to take a snapshot of what was going on for future debugging purposes.
It’s this second case that kept happening to me, and possibly to you. The problem is that it would create a cascading scenario of constrained CPU resources where one app would run, then spindump/tailspind would run, consuming CPU of its own, causing other apps to run for too long, causing spindump/tailspind to fire up again … and so on and so forth. This would go on until finally everything had finished. In the interim it would be tailspind and spindump consuming a majority of the CPU while the processes you actually want to run tried to squeak by.
I looked at the logfiles created by spindump/tailspind and they (basically) told me what I already knew: some process needed a significant amount of work done and my 6-year-old CPU took longer than some pre-set limit to do it.
I certainly don’t need extra CPU resources dedicated to telling me that something I’ve decided to run is using the CPU. I know that already. I run Activity Monitor and can see it. And, generally-speaking, the “why?” behind the extra CPU usage is already known, too.
Given this, I set about disabling spindump and tailspind, and my life has been blissful ever since. My MacBook Air wakes up quickly and is immediately responsive. Reboots are no longer something I dread, battery life is much better, and, quite frankly, my machine is fully usable again. It feels like I rewound 4 years in terms of general usability.
Disabling tailspind and spindump on macOS High Sierra
macOS High Sierra2 includes System Integrity Protection, which means that certain files are untouchable and uneditable. This has the benefit of helping keep your system files pure and malware-free, with the cost of flexibility.
To disable tailspind and spindump we need that flexibility, and that means temporarily disabling System Integrity Protection (SIP). To disable SIP:
- Boot your Mac into Recovery Mode by restarting with Command-R held down until the Apple logo appears.
- Once your Mac is in Recovery Mode, go to Utilities > Terminal.
- In the Recovery Mode Terminal, issue
csrutil disableand press return.
- Reboot your Mac.
Once SIP is disabled, the steps to disable tailspind and spindump are pretty straightforward3. Launch Terminal and type/paste the following four commands. The first two turn off and render spindump useless, and then the second two do the same for tailspind:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.spindump.plist
sudo mv /System/Library/LaunchDaemons/com.apple.spindump.plist /System/Library/LaunchDaemons/com.apple.spindump.plist.bak
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.tailspind.plist
sudo mv /System/Library/LaunchDaemons/com.apple.tailspind.plist /System/Library/LaunchDaemons/com.apple.tailspind.plist.bak
Make sure to re-enable SIP when you’re finished by performing the steps to disable SIP (in Recovery Mode again), and issuing
csrutil enable as step #3.
That’s it. From this point forward, tailspind and spindump will be disabled and will not run on your Mac4. It’s advisable to check these after macOS upgrades as it’s entirely possible that an upgrade could re-enable these processes without any warning.
- Apologies to those who are more technically-minded about the functions of tailspind and spindump–I’m playing fast and loose just to make a point.
- I’ve only tested this on macOS High Sierra, but macOS Sierra also contains these same processes.
- I borrowed the concept from pwnsdx’s disable.sh over on GitHub if you want to look at disabling more than just these two.
- Developers may want tailspind and spindump running, so be aware of the consequences.