Que fait exactement kernel_task?

30

Je voudrais juste savoir de quoi est responsable kernel_task. En outre, quelle est l'utilisation maximale de RAM et de processeur acceptable?

Timothy Mueller-Harder
la source
Il est préférable de mesurer votre RAM et votre utilisation du processeur après un démarrage sûr pour obtenir une mesure de ce à quoi votre système fonctionne lorsqu'il est inactif.
bmike
1
Selon Tyler, c'est une "représentation du micro-noyau lui-même". Si vous voulez une réponse plus précise, il poursuit en disant que "cela semble être le gestionnaire de mémoire de base (virtuel /) pour Mac OS X au-dessus de Mach." Vous aurez du mal à trouver une réponse définitive à moins que vous ne parliez à un ingénieur Apple de haut niveau. Le public n'a fait que reconstituer ce processus. Source: bleepsoft.com/tyler/index.php?itemid=43

Réponses:

28

La tâche du noyau est spéciale car il s'agit d'un système d'exploitation complet / micro-noyau basé sur Mach 3.0 . Il résume la plupart du matériel de base, la synchronisation, le passage des messages et la gestion de la mémoire.

Ce que la plupart des gens remarquent dans Activity Monitor, c'est qu'ils kernel_taskaccumulent tout le temps CPU pour les retards et les calculs de traitement d'entrée / sortie (E / S) ainsi que la planification des frais généraux des processus et des threads. De même - il accumule toutes les allocations de mémoire qui ne sont pas dans l'espace utilisateur. Sur les Mac 2014 et plus récents, cette tâche existe pour limiter le processeur - lorsque les températures dans le processeur sont trop chaudes, la tâche du noyau est affectée "pas de travail" et affiche un processeur élevé occupé pour laisser le processeur inactif et ne pas surchauffer l'ordinateur. Cela est plus visible sur la ligne portable - en particulier le MacBook sans aucune sorte de ventilateur ou de ventilateur pour refroidir le processeur. Apple en avertit les programmeurs potentiels du noyau dans "Pourquoi vous devriez vous éloigner de la programmation dans le noyau" que la désactivation du refroidissement entraînera des dommages matériels irréparables permanents.

Pour résumer, la programmation du noyau est une immense responsabilité. Vous devez être extrêmement prudent pour vous assurer que votre code ne provoque pas le plantage du système, ne fournit aucun accès utilisateur non autorisé aux fichiers ou à la mémoire de quelqu'un d'autre, n'introduit pas d'exploits racine distants ou locaux, et ne provoque pas de perte ou de corruption de données par inadvertance .

Si vous le regardez après un redémarrage, vous verrez qu'il commence avec un minimum de RAM et de CPU et ne se développe qu'à la place lorsque d'autres programmes s'exécutent et ont besoin des services du système.

Pour l'amincir, fermez les ports inutiles (WiFi, bluetooth, etc ...) ainsi que les programmes inactifs / inutilisés. Si les choses ne se stabilisent pas, envisagez de redémarrer pour vous assurer qu'aucune tâche n'est bloquée ou que la mémoire ne fuit. Si vous avez des programmes qui font un vrai travail, ils amèneront le noyau à utiliser à la fois la mémoire et le temps du processeur - regardez simplement lorsque vous démarrez les choses pour voir quels autres programmes sont à l'origine de ce comportement. C'est rarement un problème avec le noyau - même avec des programmes peu performants - qui ne peut pas être résolu en se déconnectant puis en se reconnectant. La tâche kernel_task se nettoie bien et prend généralement soin de n'utiliser que les ressources nécessaires à la charge de travail.

bmike
la source
Merci! Diriez-vous que 700 à 750 Mo de RAM sont acceptables? J'en ai beaucoup gratuitement, mais j'aimerais savoir si je dois faire quoi que ce soit de toute façon.
Timothy Mueller-Harder
Pas nécessairement. Sur mon MacBook Pro principal, il peut parfois atteindre 2 Go lorsque j'exécute beaucoup de programmes impliqués. Même alors, je n'ai pas souvent à redémarrer, mais une fois par mois environ. (2,66 Core 2 Duo / 8 Go de RAM)
bmike
14

Composants internes de Mac OS X: une approche systémique - Amit Singh - Google Books :

le noyau utilise les abstractions de tâches et de threads pour diviser ses fonctionnalités en différents flux d'exécution. Le noyau utilise une seule tâche - la tâche du noyau - avec plusieurs threads qui effectuent des opérations du noyau telles que la planification, la récupération de threads, la gestion des légendes, la pagination et la gestion des exceptions Unix. Ainsi, xnu est un noyau monolithique contenant des composants très différents tels que Mach, BSD et le kit d'E / S, tous fonctionnant en tant que groupes de threads dans une seule tâche dans le même espace d'adressage.

http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :

La tâche du noyau n'est pas une vraie tâche. Il représente le noyau, qui est le cœur du système d'exploitation. L'essentiel de ce qu'il fait se produit à la demande directe d'une demande. Chaque fois que vous allouez un grand bloc de mémoire, ouvrez ou fermez un fichier, lisez ou écrivez un fichier, récupérez des données sur le réseau, créez un nouveau processus ou thread, etc., votre application effectue un appel système. Ces appels font fonctionner le noyau pour votre application. Une grande partie de ce travail est facturée à la tâche du noyau, mais elle est réellement effectuée par votre application, bien qu'indirectement.

Lri
la source
1

Une raison pratique pour laquelle le noyau peut être sur-fonctionnant est que votre système est à court de mémoire et qu'il est débordant. Vérifiez le graphique de la pression de la mémoire sous l' onglet Mémoire du moniteur d'activité pour voir s'il est jaune ou rouge.

Dans ce cas, vous pouvez trier les processus par mémoire et en terminer certains qui en consomment beaucoup, pour réduire la pression. (par exemple, tuer certains processus Google Chrome Helper)

Nicolas Kokkalis
la source