0 votes

Kernel_task arrête le réseau lorsque le processeur ne surchauffe pas

[MacBook Pro (13 pouces, 2020, quatre ports Thunderbolt 3), Intel Core i7 Quad-Core 2,3 GHz, 16 Go de RAM, fonctionnant sous Monterey 12.6.4]

kernel_task consomme périodiquement une quantité excessive de CPU - environ 100+% selon l'utilitaire en ligne de commande top. En même temps, toutes les applications utilisant le réseau perdent leur connexion - par exemple, Zoom se déconnecte et toute autre donnée en streaming pendant 30 secondes à plusieurs minutes. Dès que kernel_task cesse d'être le processus CPU le plus gourmand, le réseau reprend. Le Wi-Fi ne tombe jamais, juste le trafic réseau s'arrête. C'est très perturbant.

On m'a dit que kernel_task faisait cela pour refroidir le CPU car il surchauffe. J'ai déplacé le connecteur d'alimentation vers l'un des ports latéraux droit pour qu'il fonctionne plus frais (comme suggéré). Cela n'a rien changé. Réinitialiser le SMC semble réduire le nombre d'incidents, mais cela se reproduit finalement une semaine ou deux plus tard.

J'ai écrit quelques scripts pour enregistrer la température du CPU, la vitesse du ventilateur, la charge du système et quand kernel_task prend le relais. J'obtiens la température du CPU et la vitesse du ventilateur en exécutant "powermetrics --samplers smc" en tant que root.

J'ai découvert plusieurs éléments intéressants:

  1. kernel_task ne prend presque jamais le relais (c'est-à-dire utilise plus de 100% du CPU) lorsque la température du CPU est élevée.
  2. kernel_task prend le relais à des températures de fonctionnement normales.
  3. La vitesse du ventilateur ne change pas différemment lorsque kernel_task prend le relais comme si kernel_task n'influençait pas la vitesse du ventilateur.
  4. powermetrics a montré une augmentation de 69°C à 89°C en l'espace de 5 secondes tandis que la vitesse du ventilateur augmentait de moins de 1%. Avoir un dissipateur thermique sur un CPU rendrait cela improbable.
  5. L'ordinateur portable a 2 ans mais le problème avec kernel_task n'a pas été reconnu avant la deuxième année. Je ne me souviens pas d'un gel du réseau du tout pendant la première année.

D'après ce qui précède, je pense:

  1. Nous avons été induits en erreur sur la véritable fonction de kernel_task car le comportement (consommation de plus de 100% du CPU) ne semble pas directement corrélé à la température du CPU.
  2. kernel_task n'adresse pas directement la surchauffe.
  3. powermetrics pourrait mentir sur les températures, les vitesses des ventilateurs et quand elles surviennent.
  4. SMC est un désordre peu fiable.
  5. kernel_task bride/inhibe inutilement l'activité réseau.

Je me moque des problèmes de température. Je veux juste que kernel_task cesse de bloquer ma connexion réseau à des moments aléatoires. Y a-t-il une solution à tout cela en dehors de remplacer le matériel ?

2voto

Jose Chavez Points 645

De la question et de vos commentaires, vous semblez très concentré sur quelqu'un (Apple?) "mentant" sur ce que kernel_task fait. Rien ne pourrait être plus éloigné de la vérité. En fait, le code source est librement disponible.

Le principal problème avec vos arguments semble être que vous avez mal compris que kernel_task a pour unique objectif de réguler la température. Ce n'est simplement pas vrai.

Il est exact que kernel_task joue un rôle dans la régulation du système en cas de refroidissement insuffisant. Cependant, cela ne représente qu'une petite partie de ses opérations.

En réalité, kernel_task n'est pas un programme ordinaire en cours d'exécution. Il est donc différent de tous les autres processus que vous trouvez en cours d'exécution sur votre système. kernel_task est plutôt un espace réservé pour les opérations effectuées par le noyau du système d'exploitation.

Le noyau du système d'exploitation effectue certaines opérations de manière autonome, comme jouer un rôle dans la régulation de la température, mais la majorité des opérations du noyau sont en réalité des programmes dans l'espace utilisateur (vos applications!) qui lui demandent d'effectuer une opération.

Et c'est là que réside la principale raison pour laquelle vous êtes bloqué dans la résolution du problème principal. Vous semblez avoir l'idée que la causalité est que kernel_task fait quelque chose de lui-même, consomme 100 % du temps CPU, et que cela fait ensuite tomber votre réseau - donc vous devez arrêter kernel_task de "faire cette chose".

Il est probablement plutôt l'inverse. C'est-à-dire que vos programmes dans l'espace utilisateur font "quelque chose" ou que vos circonstances matérielles sont telles que le traitement du réseau ne peut pas continuer, et par conséquent, le noyau se retrouve "bloqué" dans une boucle occupée pendant de plus longues périodes de temps.

Mon conseil pour vous serait de temporairement abandonner la théorie selon laquelle kernel_task est le coupable et que "la température" est la cause - et d'examiner d'autres possibilités :

La cause pourrait être dans votre matériel. Essayez de déconnecter tous les périphériques et voyez si cela résout le problème. Si vous avez accès à un ordinateur similaire, essayez de dupliquer votre logiciel actuel sur ce Mac et vérifiez si cela échoue également.

La cause pourrait être dans votre configuration et/ou vos données. Essayez de créer un nouveau compte utilisateur et connectez-vous uniquement avec celui-ci pour voir si le problème disparaît.

La cause pourrait être dans votre logiciel (des bogues). Essayez de démarrer en mode de récupération pour démarrer une version différente de tout, et voyez si le problème disparaît. Vous pouvez essayer de passer à 12.6.8 ou même Ventura pour voir si c'est une solution.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X