J'aimerais juste savoir ce dont kernel_task est responsable. En outre, quelle est l'utilisation maximale acceptable de la RAM et du CPU pour cette tâche ?
Réponses
Trop de publicités?La tâche du noyau est particulière puisqu'il s'agit d'une système d'exploitation complet / micro-noyau basé sur Mach 3.0 . Il abstrait 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 le moniteur d'activité, c'est que kernel_task
accumule tout le temps CPU pour les retards de traitement et les calculs d'entrée/sortie (i/o) ainsi que les frais d'ordonnancement des processus et des threads. De même - elle accumule toutes les allocations de mémoire qui ne sont pas dans l'espace utilisateur. Sur les Macs 2014 et plus récents, cette tâche existe pour réguler le CPU - lorsque les températures dans le processeur sont trop élevées, la tâche du noyau est affectée à "aucun travail" et affiche une occupation élevée du CPU pour laisser le processeur tourner au ralenti et ne pas surchauffer l'ordinateur. Ce phénomène est particulièrement visible sur les ordinateurs portables, notamment les MacBook qui ne disposent d'aucune sorte de ventilateur ou de soufflerie pour refroidir le processeur. Apple avertit les programmeurs de noyau potentiels de ce problème dans le document suivant "Pourquoi vous devriez rester à l'écart de la programmation dans le Kernel" que la désactivation du refroidissement causera des dommages matériels permanents et irréparables.
Pour résumer, la programmation de noyaux est une immense responsabilité. Vous devez faire preuve d'une prudence exceptionnelle pour vous assurer que votre code ne fait pas planter le système, qu'il ne permet pas à un utilisateur non autorisé d'accéder aux fichiers ou à la mémoire de quelqu'un d'autre, qu'il n'introduit pas d'exploits Root locaux ou distants et qu'il 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 démarre avec des besoins minimaux en RAM et en CPU et qu'il ne se développe que lorsque d'autres programmes s'exécutent et ont besoin des services du système.
Pour le réduire, fermez les ports inutiles (WiFi, bluetooth, etc.) ainsi que les programmes inactifs ou inutilisés. Si les choses ne se calment pas, pensez à redémarrer pour vous assurer qu'aucune tâche n'est bloquée ou ne perd de la mémoire. Si vous avez des programmes qui effectuent un travail réel, ils amèneront le noyau à utiliser à la fois de la mémoire et du temps processeur - regardez simplement lorsque vous démarrez des choses pour voir quels autres programmes sont à l'origine de ce comportement. Il s'agit rarement d'un problème avec le noyau - même avec les programmes les moins performants - qui ne peut être résolu en se déconnectant et en se reconnectant. Le kernel_task nettoie bien et prend généralement soin de n'utiliser que les ressources nécessaires à la charge de travail.
Mac OS X Internals : Une approche systémique - Amit Singh - Google Livres :
le noyau utilise les abstractions de tâches et de threads pour diviser sa fonctionnalité en différents flux d'exécution. Le noyau utilise une seule tâche - la tâche du noyau -avec de multiples threads qui effectuent des opérations du noyau telles que l'ordonnancement, le thread reaping, la gestion des appels, 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'entrée/sortie, qui s'exécutent tous en tant que groupes de threads dans une seule tâche et 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 tâche réelle. Elle représente le noyau, qui est le cœur du système d'exploitation. La majeure partie de ce qu'il fait se produit à la demande directe d'une application. Chaque fois que vous allouez un grand bloc de mémoire, que vous ouvrez ou fermez un fichier, que vous lisez ou écrivez un fichier, que vous tirez des données sur le réseau, que vous créez un neveu, etc. données sur le réseau, créez un nouveau processus ou thread, etc. votre application effectue un appel système. Ces appels font en sorte que le noyau effectue un travail pour votre application. Une grande partie de ce travail est facturée à la tâche du noyau, mais il mais il est réellement effectué par votre application, bien qu'indirectement.
Une raison pratique pour laquelle le noyau peut être surchargé est que votre système est à court de mémoire et qu'il s'emballe. Vérifiez le graphique de la pression mémoire sous l'onglet Mémoire onglet de Moniteur d'activité pour voir si elle 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 de Google Chrome Helper)