Contribute
Register

<< Solved >> helpd process consumes 12% of CPU continuously in Big Sur

Joined
Dec 10, 2010
Messages
738
Motherboard
Gigabyte Z390 Aorus Elite
CPU
i9-9900K
Graphics
RX 580
Mobile Phone
  1. iOS
On my system with Big Sur 11.1 the helpd process starts automatically a few minutes after logging in and remains active, consuming 12% of the CPU until logout or shutdown. If I close the process (killall helpd) idle CPU load drops to 0-1% but after a short time it is activated and consumes 12% again.

Help Viewer, present in macOS since Mac OS X 10.5 Leopard when Apple separated the help window from the main application window, depends on the helpd process that is responsible for indexing help files of the installed apps. Under normal conditions, helpd has to start periodically (installation or change of an app that uses the help system) for short periods of time.

However, I have observed that in my system helpd always starts within a few minutes of logging in and, once started, remains active without interruption consuming 12% of the CPU. If I turn off the process (killall helpd from Terminal) the CPU load drops to normal levels but in a short time helpd restarts and shows the same behavior.

I have read comments about this problem in some forums on the Internet. Apparently it happens not only on Hackintosh but also on real Macs. The cause is not clear, although in the case of Big Sur it may be a bug related to the language version used in macOS.

To avoid this I have found 2 solutions.

1. Prevent helpd from starting at login

macOS has a system service called launchctl whose main function is to launch commands and applications configured in plist files existing in various folders (~/Library/LaunchAgents, /Library/LaunchDaemons, /Library/LaunchAgents, etc).
These plist files define the command or program along with some options related to its execution: when the system starts or not, periodic activation every certain time interval, etc. The basic structure of these plist files is this:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>plist filename</string>
    <key>Program</key>
    <array>
        <string>path to command or app</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>time interval in seconds for periodic repetition</integer>
</dict>
</plist>
The name of the plist file must match the value of the Label key. The RunAtLoad key, as its name suggests, configures whether it will be launched at login or not.

On the one hand, we create and copy to ~/Library/LaunchAgents folder a file called com.user.nohelpd.plist with this content:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.user.nohelpd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/nohelpd.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>120</integer>
</dict>
</plist>
On the other hand we create and copy to /usr/local/bin a file called nohelpd.sh with this content:
Bash:
#!/bin/zsh
killall helpd
With this, when logging in, com.user.nohelpd.plist is launched and runs nohelpd.sh every 120". helpd process practically stops appearing and idle CPU load remains at normal levels of 0-1 %.

Why not directly modify the com.apple.helpd.plist file that controls the behavior of helpd? Because it is in /System/Library/LaunchAgents, Big Sur's write-protected folder, and it takes more work to write to it and modify this file than the task proposed above.

2. Put the system in a language other than Spanish

I have macOS in Spanish from Spain. In an Apple support forum in Spanish it is read that this problem can be related to the system language. It seems that this problem with the helpd process occurs if language is set to Spanish.

I have made the test of changing language to English, disabling com.user.nohelpd.plist, and I have verified that the problem disappears: helpd starts periodically for short periods of time and the CPU load remains at low levels even when helpd is active.

I have sent Apple a report about it.
 
Last edited:
Top