David Schlachter

Désactiver l'étranglement par kernel_task sur OS X

Mise à jour du 25 août, 2020 : ajout de quelques détails supplémentaires. La procédure que je décris sera plus compliquée à partir de macOS Catalina en raison de la partition système en lecture seule. Vous devez comprendre pourquoi kernel_task ralentit votre Mac avant d'envisager la désactivation de cette fonctionnalité!

Après une rencontre avec une bouteille d'eau, notre MacBook Air allait très lentement, avec le ventilateur à vitesse maximale (6500 tr / min). Un démontage, le nettoyage de tout dans de l'alcool et le séchage, même le remplacement du panneau IO, tout n'a eu aucun effet.

La lenteur était due à un étranglement (anglais: "throttling") qui relantit les processus utilisateur, dans le but de garder la machine froide en ne pas stresser le processeur. Le système se comportait comme s'il était à haute température, mais ce n'était clairement pas le cas (tous les capteurs de température indiquaient 30 à 45 ºC). Cela suggérait un problème matériel lié au SMC. À moins de remplacer la carte mère, la solution souhaitée serait de désactiver l'étranglement thermique (en gardant le ventilateur à 100% pour s'assurer que le système soit réellement froid, si le contrôle réel du ventilateur n'était pas possible).

Cette limitation était facile à voir dans le moniteur d'activité (kernel_task):

Moniteur d'activité avec très haute utilisation du processeur par kernel_task

L'étranglement est implémenté par une extension du noyau, que Rhys Oxenham suggère de désactiver en supprimant un fichier plist correspondant au modèle du Mac. Cependant, la liste des Mac identifiés par ces fichiers n'a pas été mise à jour depuis quelques années. Notre MacBook Air 2014 (MacbookAir6,2), nottament, est absent. Le X86PlatformPlugin.kext (également dans le dossier plugins du IOPlatformPluginFamily.kext) identifie d'autres Mac par leur carte mère (voir les commentaires sur cet article). Dans mon cas, j'ai essayé de désactiver les extensions ACPI_SMC_PlatformPlugin.kext et X86PlatformPlugin.kext, mais cela n'a eu aucun effet.

Ce qui a fonctionné pour moi, c'était de désactiver l'extension du noyau parent IOPlatformPluginFamily.kext. Jusqu'à présent, je n'ai noté aucun effet indésirable. Bien entendu, désactivativer la gestion thermique de votre Mac pourrait bien entraîner des importantes surchauffes nécessitant le remplacement de votre carte mère. Si possible, il mieux de résoudre le problème sous-jacent (par exemple, nettoyer les ventilateurs?). Étant donné que les dommages matériels de la carte mère semblent être eux-mêmes la cause de mon problème (le contrôle de la température étant inopérant à cause des dégâts d'eau), des dommages supplémentaires à la carte mère par surchauffe ne feraient qu'accélérer le remplacement dont j'avais probablement besoin.

Voici ma procédure:

Tout d'abord, j'ai dû désactiver SIP (puisque nous exécutons OS X El Capitan) en démarrant en mode de récupération (démarrage en maintenant Command-R), en ouvrant le terminal (sous le menu Utilitaires) et en exécutant la commande csrutil disable (plus de détails sur StackExchange).

À partir de là, j'ai redémarré en mode mono-utilisateur en maintenant Command-S lors du démarrage. Après avoir monté le système de fichiers (fsck -y; mount -uw /), j'ai fait une copie de sauvegarde de l'extension IOPlatformPluginFamily.kext en utilisant rsync:

rsync -av /System/Library/Extensions/IOPlatformPluginFamily.kext /Users/Shared/

(Pour restaurer l'extension à partir de la sauvegarde: rsync -av /Users/Shared/IOPlatformPluginFamily.kext /System/Library/Extensions/)

J'ai ensuite simplement supprimé l'extension et redémarré:

rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext; shutdown -r now

Après le démarrage, le ventilateur va toujours à pleine vitesse, mais l'étranglement a disparu:

Moniteur d'activité avec activité normale de kernel_task

Jusqu'à présent, je n'ai remarqué aucun problème. Je garderai cet article à jour. Je suis heureux que le MacBook soit à nouveau utilisable et aussi heureux d'éviter (pour l'instant) des frais de réparation de 700 $ pour remplacer la carte mère.

Mise à jour du 10 décembre, 2015 : après la mise à jour d'OS X El Capitan 10.11.1 vers 10.11.2, je devais répéter toutes ces étapes. J'imagine que ce sera le cas avec la plupart des mises à jour d'OS X.

Mise à jour du 11 décembre, 2015 : C'était peut-être le nouveaux panneau IO, mais le ventilateur a cessé de fonctionner à la vitesse maximale aujourd'hui! J'ai restauré l'extension de noyau à partir de la sauvegarde et le MacBook Air est revenu à la normale, avec une gestion thermique bien normale.