Comment déboguer un processus «kernel_task» hors de contrôle?


42

Récemment, j’ai remarqué que ma durée de vie de la batterie avait fortement chuté et que le processus "kernel_task" utilisait pas mal de ressources processeur (une constante de 1 à 6% sur mon processeur dual-core i7 de 2010, MBP de 2,8 GHz). Évidemment, je pense que l'utilisation du processeur par kernel_task contribue à la perte de batterie et je dois trouver pourquoi.

Kernel_task est la version OS X du "svchost.exe" de Windows - le processus notoire do-everything que vous ne pouvez jamais vraiment déboguer, vous devez simplement basculer manuellement les commutateurs jusqu'à ce que l'un d'eux fonctionne.

Y a-t-il un moyen que je puisse plus facilement aller au fond de l'activité kernel_task hors de contrôle? Je n'ai pas essayé de redémarrer, car si cela le "résout", cela ne résout pas vraiment le problème sous-jacent.

Moniteur d'activité indique l'utilisation du processeur. Lorsque j'appuie sur Inspect, il affiche 77 threads, 2 ports, des heures et des heures de temps processeur, les commutateurs de contexte augmentent d'environ 400 par seconde et les messages Mach In et Out augmentent tous les deux à environ 6 000 par seconde.

Comment puis-je en quelque sorte inspecter ou surveiller ce kernel_taskprocessus et déterminer ce qui utilise réellement tout ce pouvoir?

(Remarque: mes suspects actuels sont la récente mise à jour 10.6.7, la mise à jour de Firefox de la 4 beta 10 à la RC, ou ScreenResX - ce sont toutes les choses que j'ai faites récemment et auxquelles je peux penser.)


Je ne décrirais pas kernel_taskcomme hors de contrôle. Le Moniteur d'activité n'est peut-être pas le meilleur utilitaire pour les diagnostics dans ce domaine. Dans la console, ajoutez des requêtes de journal système pour vous aider à identifier les différentes manières dont les tâches du noyau sont utilisées. puis affinez la question d’ouverture en une question à laquelle il sera plus facile de répondre.
Graham Perrin

1
Un processeur à 200% constant semble assez incontrôlable pour tous les processus.
twe4ked

Réponses:


12

J'avais une question similaire sur la façon d'identifier les fichiers et les programmes connectés à kernal_task à l'aide de la commande de terminal suivante:

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

Cela affichera divers kexts et la mémoire qui leur est associée. Par exemple, 6184960 com.apple.driver.AirPort.Brcm4360c'est un gros porc pour moi, mais je ne peux rien y faire si je veux utiliser le wifi.

Une des suggestions que j'ai reçues était de rechercher tous les kexts non-Apple utilisant de la mémoire en lançant la procédure ci-dessus grep -v com.apple. Il est possible que certains programmes non-Apple utilisent vos ressources. Vous devriez pouvoir les enlever sans rien casser.

La solution ancienne est bien sûr de redémarrer votre ordinateur. Parfois, il suffit de ramener les processus à leur niveau normal d’utilisation du processeur.


quel est le nombre dans la première colonne?
Anentropic

@Anentropic - essayez man kextstat, en regardant cela et la awksaisie de commande $4, cela ressemble à la taille de l'utilisation de la mémoire kext. Cela a du sens compte tenu de la question.
ReBusB

11

Voici une excellente explication de ce qu’est une tâche de noyau. Il peut s'agir de pilotes (kexts), d'activités réseau ou de disques. Vous ne pouvez pas simplement utiliser des instruments pour vous connecter au kernel_taskprocessus.

Recherchez d’autres signes, tels que les journaux (Console.app), l’activité du disque (par exemple:), l’activité du iotop fs_usageréseau (essayez de vous déconnecter du réseau local, désactivez les périphériques dans les préférences réseau), essayez de désinstaller / de supprimer les kextunloadpilotes de la mémoire ( ), qui proviennent de tiers - tablettes, modems usb 3g, etc. Vérifiez les applications qui installent des kexts

Assurez-vous également que votre système de fichiers n'est pas corrompu. Si vous avez eu un crash récemment, effectuez une vérification.


1
J'avais environ 200% d'utilisation du processeur (2 cœurs sur 4) presque constamment, commençant généralement après un démarrage lors du transfert de fichiers ou quelque chose de similaire, mais ne revenant pas à la normale par la suite. La raison en est que le volume de mon système devait être réparé. Une fois que cela a été fait, kernel_taskétait de retour à des niveaux sains d'activité.
Daniel Beck

1
Le lien dans la réponse est maintenant mort
Swader

1
@Santa Merci pour la suggestion de modification concernant le lien, mais inutile de supprimer le lien lorsqu'une version existe sur la Wayback Machine. Remplacer le lien par un lien vers la machine Wayback.
grg

8

Comme mentionné par @Christopher, la chaleur peut provoquer un pic du processeur kernel_task. La raison en est citée dans cet article «Correction» des problèmes de processeur kernel_task sous MacOS Lion 10.7 . Apparemment, lorsque le processeur chauffe, ACPI_SMC_PlatformPlugin.kext prendra des cycles de processeur pour tenter de réduire la charge réelle du processeur.

Une solution consiste donc à refroidir votre Mac (par exemple, un ventilateur) via un ventilateur externe ou quelque chose comme SMCFanControl .

L'article donne une autre solution qui consiste à supprimer le sous-kext qui déclenche ce comportement. Bien que je dois avouer que je ne suis personnellement pas sûr de la sécurité à laquelle on peut mettre un tel comportement.


2
Je vais risquer de deviner que c'est la raison pour laquelle kernel_task utilise beaucoup de ressources processeur de manière soutenue. Chaque fois que cela m’arrivait, j’utilisais beaucoup ma machine et elle commençait à prendre du retard, mais aucun des processus évidents que j’utilisais n’était à l’origine du pic, mais kernel_task. Arrêtez les processus lourds (vidéos ou jeux, généralement) et finit par disparaître. Pendant ce temps, mon MBP 2011 semble s’envoler! Il a ouvert la porte et l'a nettoyé correctement, a retiré les couvertures anti-poussière des dissipateurs de chaleur et j'étais de retour dans les affaires avec un ventilateur faible et aucune folie kernel_task.
Joey T

5

Il kernel_taskest généralement hors de contrôle lorsque d'autres processus utilisent trop d'appels système ou de ressources (événements de mémoire ou d'E / S de disque).

Lorsque cela se produit, vous pouvez utiliser l' fs_usageutilitaire de génération de rapports qui affiche en temps réel les appels système et les erreurs de page liées à l'activité du système de fichiers.

Alors exécutez cette commande dans Terminal:

sudo fs_usage

Ensuite, observez quels processus effectuent fréquemment des appels système et si vous ne les utilisez pas, envisagez de les fermer / de les supprimer.

Pour plus de précision, consultez la colonne TIME INTERVAL qui indique le temps écoulé dans l'appel système. Une Wapparition après le temps écoulé indique que le processus était une activité planifiée (dans ce cas, le temps écoulé comprend le temps d'attente).

Donc, afin de filtrer les processus qui utilisent le plus grand intervalle de temps dans les appels système, exécutez:

sudo fs_usage | grep -v 0.0000

qui vous montrera dans la dernière colonne les processus les plus gourmands (en terme de temps noyau). Vous pouvez ajuster le nombre de zéros pour plus de précision (moins de zéros affichés, plus de temps passé).

Pour plus d’idées, consultez également: Comment étudier l’utilisation élevée de la mémoire des tâches du noyau?


Voici les problèmes les plus courants:


2
Bon un flux de sortie raisonnable après avoir filtré iTerm2 et greplui - même:sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
Joel Purra

4

L’utilisation du processeur dans kernel_task a fortement augmenté, et il est apparu que mon ventilateur du processeur était partiellement débranché. kernel_task a quelque chose à voir avec la limitation du CPU quand il fait trop chaud. Dans votre cas, peut-être votre ventilateur est-il juste recouvert de poussière et d’ordures, et doit être nettoyé.


C'est fou! Avez-vous déjà vérifié vos journaux lors du débogage? Comment êtes-vous arrivé à cette solution?
Ricket

3

J'ai eu le même problème à Yosemite mais grâce à cette bonne âme basée sur celle-ci, un autre bon camarade, j'ai pu le résoudre. Je n'arrive toujours pas à comprendre ce qui s'est passé, mais après avoir perdu tout un week-end à essayer de régler le problème, j'ai tout simplement abandonné et suivi aveuglément ses instructions. Regardez mon désespoir dans le moniteur d'activité:

Tous vos cpu nous appartiennent

Soyez prudent, faites toujours d'abord une sauvegarde et lisez les liens fournis pour des explications. Je n'assume aucune responsabilité pour les dommages causés. Tu as été prévenu.

Trouver le modèle

$ system_profiler -detailLevel mini | grep "Identificateur de modèle:"

Identificateur de modèle: MacBookPro8,2

Déplacer et sauvegarder le fichier

$ mkdir -p ~ / backup

$ cd / System / Library / Extensions / IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist ~ / backup /


1
Cette solution a fonctionné pour moi. J'ai la même version MacBookPro. Malheureusement, il s’agit de désactiver des fonctionnalités conçues pour augmenter la longévité de la machine. J'ai vérifié la fonctionnalité de la température du processeur et du ventilateur et cela semble normal; je suppose donc qu'il y a un bogue dans cette fonctionnalité, mais je n'ai toujours pas été en mesure de comprendre pourquoi le refroidissement du processeur a été déclenché (parfois de avant de vous connecter, sans fin).
errant.info

@ errant.info pour une raison quelconque, El Captain l'a résolu. Mon mac était également avec une batterie défectueuse, et j'ai changé avec El Captain, alors je ne sais pas quelle action a été résolue. Bonne chance avec ton mac!
Quelqu'un t'utilise encore MS-DOS le

2

Je suis sur OSX Lion avec un nouveau macbook pro 2011 et j’ai récemment eu kernel_task exécutant environ 25-30% du processeur et mon ventilateur tournait à plein régime pendant des heures et des heures. J'ai essayé une chose à la fois et ce qui a été résolu ... la fermeture de 5 ou 6 fenêtres dans l'application Finder. Je ne peux pas dire que je comprends pourquoi, mais c'était clairement cela.


2
Avez-vous des extensions à Finder installées? Par exemple, les programmes qui ajoutent quelque chose à la barre d’outils ou au menu contextuel?
Ricket

1
En effet, dans la configuration "Affichage-> Afficher les options d'affichage", cochez la case "Afficher toutes les tailles" dans une ou plusieurs de vos fenêtres. Désactivez cette option, puis définissez la valeur par défaut pour tous les dossiers et elle s'arrêtera.
Brian Topping

2

Sur mon Mac, l'utilisation de kernel_task par le processeur est proportionnelle à la bande passante Internet que j'utilise, allant d'environ 0% à 50%. Cela est probablement dû aux pilotes de mon modem Huawei 3G (HuaweiDataCardDriver.kext).

Vous pouvez essayer de désactiver les extensions de noyau. Il n'est pas nécessaire d'utiliser kextunload: vous pouvez simplement déplacer les ensembles de kext de / System / Library / Extensions / vers un autre dossier, puis redémarrer. Vous pouvez utiliser Consultant Canary ou kextstat | grep -v com.applerépertorier les extensions de noyau qui ne sont pas fournies avec OS X.


1

Pour résoudre spécifiquement le problème de kernel_task hors de contrôle , voici quelques commandes utiles:

  • Définissez le système entier en vous concentrant sur le processus du noyau (PID: 0), exécutez:

    sudo spindump 0 -reveal
    

    Pour un processus spécifique (comme launchd), utilisezsample , par exemple, sudo sample launchdou par PID.

  • Pour collecter la consommation de mémoire par tâche du noyau, utilisez (trié par dirty):

    sudo footprint 0
    

    Remarque: Utilisez -apour cibler tous les processus.

  • Pour recueillir des informations de diagnostic système à l' échelle de plusieurs utils, exécutez: sudo sysdiagnose.

    Cela peut également être déclenché en appuyant sur Shift- Control- - -. (point).

    L'écran devrait clignoter au démarrage, puis attendez quelques minutes jusqu'à ce que le fichier soit révélé dans le Finder .

    Voir: Comment obtenir des fichiers de diagnostic système sous OS X?

    Ensuite , décompressez et vérifier les fichiers tels que footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txtet d' autres.

  • Vérifier vm.swapusageles états du noyau, par exemple sysctl -a | grep ^vm.swapusage.

    En gros, plus vous utilisez d’ échanges (vérifiez les fichiers d’échange dans /private/var/vmlesquels sont gérés dynamic_pager, voir :)man dynamic_pager , plus le noyau a de la difficulté à obtenir des performances en raison des opérations Swapins / Swapouts (voir man vm_statet man fs_usage). Pour tester, lancez:

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    Note: Hit Control- Cpour arrêter.


0

Pour moi, j'avais un processus (Netbeans dans ce cas, qui lisait un fichier comme 20 Go) et il utilisait comme 80% de CPU pour les netbeans, 20% de CPU pour kernel_task (très suspect). Cela a fait fonctionner tout mon système comme du goudron.

Aussi suspect est que "menumeters" rapporterait beaucoup de "sys" temps, par cpu. Vous pouvez aussi voir cela dans la commande "top", commeCPU usage: 21.40% user, 23.74% sys

Plus tard, il pourrait s’agir de 120% de processeurs netbeans, 65% de kernel_task, mais quoi qu’il en soit, ils étaient tous les deux "élevés en même temps"

sudo fs_usage a montré beaucoup de cela:

12:46:34.446367  PAGE_IN_FILE      A=0x093a5bb000       0.000001   java.453214

Ma théorie est que netbeans "lisait tellement" qu'il causait même les erreurs de page à exécuter son propre programme (c'est-à-dire l'envoi pour échanger son propre programme), créant ainsi une file d'attente derrière le système d'erreur de page. Et probablement en échangeant "d'autres programmes", ce qui a pour effet de rendre le système tout à fait fou.

En utilisant top, la colonne FAULT augmentait également de 70K / sec.


0

Mon Macbook Pro était presque inutilisable pendant plusieurs semaines à cause du taux de CPU élevé de kernel_task. Au même moment, la batterie se gonflait. J'ai donc finalement décidé de me rendre sur Apple Center à Rome pour le remplacer. clavier aussi) pour 0 € coût. Encore mieux ... le problème de kernel_task disparaît soudainement !!! donc je suis à peu près sûr que c'était à cause de la batterie, directement ou indirectement

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.