Tame High WindowServer CPU Use on a Mac
The Mac received a great many changes with OS X Yosemite along with a notable visual redesign, but some of those changes and various transparent effects may be taking a toll on some users Mac performance with errant WindowServer behavior. This is typically demonstrated with the WindowServer process spiking into heavy CPU use for seemingly no reason, often with an accompanying inordinate usage of memory, leading to very sluggish and choppy behavior during general usage of Mac OS X and MacOS on some computers.
At the worst, something like opening Quick Look, opening a few new Finder windows, or scrolling through a busy Finder folders contents leads to a surge in WindowServer processor usage that is high enough to cause a computer to freeze up or even the appearance of the much maligned beachball cursor.
If WindowServer is frequently staying at spiking high CPU usage for seemingly no meaningful reason in some situations with macOS and Mac OS X this article is aimed at you. We’re going to attempt to tame the WindowServer process by reducing elements and features that may be spurring WindowServer behavior (or misbehavior), a challenging task given that WindowServer is necessary to draw almost everything seen in Mac OS X. Hopefully the WindowServer CPU usage issue is simply a bug or optimization issue that will be addressed, but for the time being this behavior continues well into the latest versions of Mac OS (Mac OS X 10.10.3 onward) even on the newest of Mac hardware. Fortunately, there are some solutions which help, so let’s get to it.
Turn Off Transparent Effects in Mac OS X
Simply turning off transparency effects singlehandedly speeds up every single Mac I’ve encountered running Mac OS X Yosemite or later, whether the hardware is new or old. Even if the computer doesn’t feel particularly slow, it will almost certainly feel faster turning off the transparency effects.
- Go to the Apple menu and choose “System Preferences”, then go to “Accessibility”
- Choose “Display” from the left menu
- Toggle the switch next to “Reduce transparency” to be ON (alternatively, you can enable Increase Contrast if you want the UI to be a bit easier to differentiate, that will also turn off the translucent elements throughout OS X)
The speed increase is immediately notable in most actions, and you can even measure the before and after results with the FPS frame rate monitor in Quartz Debug, which depending on the hardware can be a 10 FPS or greater boost in the refresh rate of screen animations.
This is still the case with Mac OS X 10.10.3 (granted it’s beta), so perhaps there is a stubborn bug or maybe a bit of performance optimization is still in order for OS X Yosemite.
Me personally, I like the transparent effects so I tend to keep this on with the newest Mac hardware, but even my 2015 model Retina MacBook Pro with 16GB of RAM gets a boost from turning off transparency. Meanwhile, barely older hardware like a MacBook Air from 2012 is frustratingly sluggish with transparent effects on, and I’ve heard similar complaints from users of the Retina iMac 27″, which is obviously quite new and powerful hardware. That new hardware with ample resources can still struggle displaying transparent effects in OS X suggests an eventual software solution is likely.
Close Unused App & Finder Windows
When OS X Yosemite has many windows of apps or Finder open, WindowServer starts to consume an inordinate amount of resources. While this can happen in all versions of OS X (or any OS for that matter), there is something unique about Yosemite which causes this to be a particularly draining event.
The solution is more user behavior oriented than anything else; get in the habit of closing unused windows or apps so they are no longer requiring resources.
Remembering the Close All Windows keystroke can be useful for managing this.
Stop Mission Control Spaces Rearranging Itself
If you use Spaces, which is basically the virtual desktop environment on the Mac, stopping the spaces from rearranging themselves based on usage seems to make a small difference in WindowServer behavior.
- Open System Preferences from the Apple menu and go to “Mission Control”
- Disable the setting for “Automatically rearrange Spaces based on most recent use”
Many users don’t notice this feature anyway, so even if the improvement is nearly nil it’s usually not missed.
Multiple Displays? Turn Off Spaces for Each
If you have a multi-display setup, another setting to disable is Spaces for each individual display.
- Open System Preferences and go to “Mission Control”
- Toggle the setting for “Displays have separate spaces” to be OFF
- Log out, or better yet, reboot the Mac
Of course, if you’re not one to use multiple screens with your Mac, that change will have no effect so your focus should be elsewhere.
If you’re one of those Mac users who never shuts down or reboots their Mac, but you’re experiencing WindowServer high CPU issues, you may want to adjust and restart the Mac a bit more often. Simply restarting the Mac offers a temporary solution to the WindowServer process misbehavior. I know this sounds like the lamest of advice, but multiple commenters have reported temporary success with this, and I’ve observed an improvement myself. Certainly less than ideal, but until the root cause is addressed, this can help.
If you’ve done all of the above and you continue to find WindowServer misbehaving or the Mac running inordinately slow, it’s worth reviewing these tips to speed up OS X Yosemite, or even general tips for understanding why a Mac can run slow, which can help further.
Have you experienced WindowServer issues? Do you have any tips to reduce WindowServer resource usage in OS X Yosemite? Be sure to share your experience and tricks in our comments.