Proceso helpd ocupa CPU en Big Sur 11.1

En mi sistema con Big Sur 11.1 el proceso helpd arranca de forma automática a los pocos minutos de iniciar sesión y permanece arrancado ocupando el 12% de la CPU hasta el fin de la sesión o el apagado del equipo. Si cierro el proceso (killall helpd) la carga de la CPU en reposo baja a 0-1% pero al poco tiempo vuelve a activarse y a ocupar de nuevo el 12%.

Nota: este problema ha sido corregido en la versión 11.2 de Big Sur.

El Visor de la Ayuda, presente en macOS desde Mac OS X 10.5 Leopard cuando Apple separó la ventana de la ayuda de la ventana principal de la aplicación, depende del proceso helpd que se encarga de indexar los archivos de ayuda de las aplicaciones que están instaladas. En condiciones normales, helpd ha de arrancar periódicamente (instalación o cambio de alguna app que utiliza el sistema de ayuda) durante cortos períodos de tiempo.

Sin embargo he observado en mi sistema que helpd arranca siempre a los pocos minutos de iniciar sesión y, una vez arrancado, permanece activo sin interrupción ocupando el 12% de la CPU. Si apago el proceso (killall helpd desde Terminal) la carga de la CPU baja a niveles normales pero en poco tiempo helpd vuelve a activarse y a mostrar el mismo comportamiento.

He leído comentarios sobre este problema en varios foros de Internet. Aparentemente no sólo sucede en los Hackintosh sino también en los Mac reales. La causa no está clara aunque en el caso de Big Sur puede tratarse de un bug relacionado con la versión de idioma utilizada en macOS. Para evitar esto he encontrado 2 soluciones.

  1. Impedir que helpd arranque al iniciar sesión

macOS dispone de un servicio del sistema llamado launchctl cuya función principal es lanzar comandos y aplicaciones configurados en archivos plist existentes en varias carpetas (~/Library/LaunchAgents, /Library/LaunchDaemons, /Library/LaunchAgents, etc).
Estos archivos plist definen el comando o programa junto con algunas opciones relativas a su ejecución: al iniciar el sistema o no, activación periódica cada cierto intervalo de tiempo, etc. La estructura básica de estos archivos plist es esta:

<?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>nombre del archivo plist</string>
	<key>Program</key>
	<array>
		<string>nombre o ruta al comando o aplicación</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
    <key>StartInterval</key>
    <integer>intervalo de tiempo en segundos para su repetición periódica</integer>
</dict>
</plist>

El nombre del archivo plist ha de coincidir con el valor de la clave Label. La clave RunAtLoad, como su propio nombre indica, configura si se lanzará al arrancar sesión o no.

Por un lado creamos y copiamos a la carpeta ~/Library/LaunchAgents un archivo llamado com.user.nohelpd.plist con este contenido:

<?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>

Por otro lado creamos y copiamos a /usr/local/bin un archivo llamado nohelpd.sh con este contenido:

#!/bin/zsh
killall helpd

Con esto, al iniciar sesión se pone en marcha com.user.nohelpd.plist que ejecuta nohelpd.sh cada 120″. El proceso helpd prácticamente deja de aparecer y la carga de la CPU en reposo se mantiene en niveles normales de 0-1%.

¿Por qué no modificar directamente el archivo com.apple.helpd.plist que controla el comportamiento de helpd? Porque está en /System/Library/LaunchAgents, carpeta protegida contra escritura por Big Sur, y cuesta más trabajo poder escribir en ella y modificar este archivo que la tarea propuesta más arriba.

  1. Poner el sistema en inglés

Yo tengo macOS en español de España. En un foro en español de soporte de Apple Proceso helpd consume muchos recursos desde que instalé macOS Big Sur se lee que esto puede estar relacionado con el idioma del sistema. Parece ser que este problema con el proceso helpd solamente ocurre si el idioma es Español.

Yo he realizado la prueba de cambiar el idioma a Inglés, desactivando com.user.nohelpd.plist, y he comprobado que efectivamente el problema desaparece: helpd arranca periódicamente durante cortos períodos de tiempo y la carga de la CPU se mantiene en niveles bajos incluso cuando helpd está activo.

Deja un comentario