My Macbook Pro was recently suffering from 100% CPU pretty much all of the time and it took quite a while to solve them problem and breathe life back into my workhorse.
TL;DR Disable Little Snitch status in menu bar.
My Macbook Pro seems to be suffering from high WindowServer CPU use when my machine isn’t really doing anything.
NOTE: During my investigations it appears that WindowServer CPU typically rises when something on your toolbar updates often.
Here are the things I’ve tried, some of which come from other solutions posted around the web:
(in System Preferences > Accessibility under Display).
This is the most highly reported solution to the problem but this didn’t do anything for me.
(in System Preferences > Mission Control).
Switch Dashboard off. I don’t use Spaces so this didn’t do anything.
(https://discussions.apple.com/thread/6623697). Sadly, this did nothing but then again I do things like this as periodic maintenance.
(System Preferences > Energy Saver). This only applies to systems with a dual GPU such as the higher end Macbook Pro 15” upwards.
For me, Skype continues to be a constant drain on CPU performance and shutting it down did reduce CPU usage but this was it’s own CPU usage, not WindowServer CPU.
(System Preferences > Date & Time > Display the time with seconds) Reducing the amount of menu status bar update seems to general reduce load on WindowServer
Turning off the Little Snitch option Show status In menu bar massively reduced the WindowServer load for me!
Interestingly there’s a note in their Beta channel about something related. I guess this could be causing the high load on WindowServer too:
When using OS X Mavericks (10.9) or later, Little Snitch Agent, Network Monitor, and Configuration should not cause the discrete GPU (“High Performance GPU”) to be activated anymore, especially on Mid 2010 MacBook Pro.