MacOS – WindowServer and kerneltask using a lot of CPU in Big Sur

big surkernelmacosperformance

I have seen these two questions

WindowServer high CPU usage, spikes when moving cursor on M1 MacBook Big Sur

MacBook Pro – High CPU Under Low Workload

and I have the same problem with WindowServer on both a Macbook Pro 16" and an Macbook Air 2020, but I also have problems with kernel_task.

According to the script here https://apple.stackexchange.com/a/393207/31395 my Air's total awake time since last restart is 1 day, 22:07:19.374478 (uptime returns 9 days, 13:59, 5 users, load averages: 5,04 5,11 4,79).

Looking in Activity Monitor, WindowServer has used 42h05m since last restart (since the awake time is 46 hours, that is over 90 % on average) while kernel_task 14h19m ≈ 31 % (I will update this question with corresponding number for my MBP later on).

I mostly use this machine for web browsing and office tasks. These numbers are completely unreasonable! The computer is updated and reasonably "clean". Since I have the same problem on my other machine I don't think it is anything specific to this setup.

The only slightly odd usage is that I use Firefox – a well known resource hog – and it is hard to test if Firefox is the culprit since I need to use it 80-90 % of the time. A different browser isn't really an option.

Any ideas what might be going on here?

Best Answer

I will copy my answer from WindowServer high CPU usage, spikes when moving cursor on M1 MacBook Big Sur, as the problem and probable cause appear to be the same:

Big Sur has many known issues related to UI performance. It’s almost certain that you’re experiencing one of these bugs, and so you’re unlikely to be able to do much about it yourself. We can try to confirm or refute this hypothesis if you’d like.

Does this occur if you’re running in Safe Mode? (Shift during boot) If so, do the following in Safe Mode. Otherwise, do it when the problem occurs.

  1. Run the following command to enable kernel symbolication: sudo nvram boot-args="keepsyms=1" (this may require you to disable SIP first).
  2. Reboot your machine and don’t open any apps except for Terminal.
  3. Do the minimum required in order to reproduce the problem.
  4. In Terminal, run the following, making sure you’re only running it during the window of time that you experience the system slowdown. (In particular, do NOT have Activity Monitor running when you do this.): sudo spindump -reveal -noProcessingWhileSampling
  5. After waiting for 10 seconds to collect a sample and another minute or two to symbolicate and format, you’ll get a file in /tmp/spindump.txt that contains a stackshot of every process.
  6. Upload the file to PasteBin or some equivalent place and we can take a look to see what’s causing the CPU usage spikes.