Monthly Archives: November 2019

MacBook Pro 高Kernel CPU占用解决办法 (含iOS Catalina)

MacBook Pro when suffering from water damage (spilled coffee, for example), usually displays two symptoms:

  1. High CPU consumption by system process “Kernel” – usually in the ball park of 200-300%
  2. Consistent top fan speed

The first, in particular, renders a MacBook unusable, as almost all computational power is consumed by the Kernel. The Kernel process was designed to prevent high resource consumption by individual applications – but the gut feeling shows that this is yet another built-in feature to force users to bring a nevertheless perfectly usable back to the so-called genius bar to be fixed for a price, or better yet, replaced with a new unit altogether.

While the conscientiousness of corporate Apple is open for discussion, there are in fact ways to informally prevent such behaviour and restore the machine to a use-able state. Many blog posts (e.g. the most concise one I’ve read can be found here) Here is how:

First, the machine needs to be rebooted into Recovery Mode, by restarting while holding down cmd + R before the loading screen (white apple) shows. In this view, launch the Terminal and run the following command to disable System Integrity Protection (SIP), which is a built in feature of the iOS to prevent undesirable modification of system files:

csrutil disable

Then the machine can be rebooted, either into full operating system or into the Single User mode (which is faster, and quieter) by holding down cmd + S.

Here is where the trick needs to be adapted to Catalina: in this latest version of the iOS, Apple has introduced yet another layer of protection for the system files – they are stored in a read-only section of the drive, which prevents the removal of the undesirable system file that causes the blown-out Kernel issue.

In the Single-User view (effectively terminal only view), or in the full OS view with a terminal launched, run the following command to enable read/write mode for system files:

 sudo mount -uw /

Followed by the following command which removes the package extension file IOPlatformFamilyPlugin.kext that causes high Kernel CPU usage

rm -rf /System/Library/Extension/IOPlatformFamilyPlugin.kext

This in turn followed by a restart, or if in Single User mode then

 shutdown -r now 

Do remember to boot into Recovery Mode using method mentioned above, and rearm the SIP protection by running the following in Terminal

csrutil disable

In the case of some users, the fan would go back to normal – but if not, as in my case, an app Macs Fan Control can be used to slow the fan down according to the actual machine. There are many websites that lists regular temperature of a working MacBook Pro for various models. These can be used as a reference for setting temperature dependent fan speed of the machine.