¿Qué hace exactamente kernel_task?

30

Solo me gustaría saber de qué es responsable kernel_task. Además, ¿cuál es el uso máximo aceptable de RAM y CPU para él?

Timothy Mueller-Harder
fuente
Lo mejor es medir el uso de RAM y CPU después de un arranque seguro para obtener una medida de cómo funciona su sistema cuando está inactivo.
bmike
1
Según Tyler, es una "representación del propio microkernel". Si desea una respuesta más específica, continúa diciendo que "parece ser el administrador de memoria básico (virtual /) para Mac OS X además de Mach". Será difícil encontrar una respuesta definitiva a menos que hable con un ingeniero de Apple de alto nivel. El público solo ha reconstruido este proceso. Fuente: bleepsoft.com/tyler/index.php?itemid=43

Respuestas:

28

La tarea del núcleo es especial ya que es un sistema operativo completo / micro núcleo basado en Mach 3.0 . Resume la mayor parte del hardware central, el tiempo, el paso de mensajes y el manejo de la memoria.

Lo que la mayoría de las personas notan en el Monitor de actividad es que kernel_taskacumula todo el tiempo de CPU para retrasos y cálculos de procesamiento de entrada / salida (I / O), así como la programación de sobrecarga de procesos y subprocesos. Del mismo modo, acumula todas las asignaciones de memoria que no están en el espacio del usuario. En las Macs 2014 y posteriores, esta tarea existe para acelerar la CPU: cuando las temperaturas en el procesador son demasiado altas, la tarea del kernel se asigna "sin trabajo" y muestra una CPU alta ocupada para dejar el procesador inactivo y no sobrecalentar la computadora. Esto es más notable en la línea portátil, especialmente en el MacBook sin ningún tipo de ventilador o ventilador para enfriar el procesador. Apple advierte de esto a los posibles programadores del kernel en "Por qué debería mantenerse alejado de la programación en el Kernel" que deshabilitar el enfriamiento causará daños irreparables permanentes en el hardware.

Para resumir, la programación del kernel es una responsabilidad inmensa. Debe tener un cuidado excepcional para asegurarse de que su código no haga que el sistema se bloquee, no proporcione ningún acceso de usuario no autorizado a los archivos o la memoria de otra persona, no introduzca explotaciones de raíz remotas o locales, y no cause pérdida o corrupción accidental de datos .

Si lo ve después de un reinicio, verá que comienza con las necesidades mínimas de RAM y CPU y, en cambio, solo crece cuando otros programas se ejecutan y necesitan los servicios del sistema.

Para adelgazar, apague los puertos innecesarios (WiFi, bluetooth, etc.), así como los programas inactivos / no utilizados. Si las cosas no se calman, considere reiniciar para asegurarse de que ninguna tarea esté atascada o pierda memoria. Si tiene programas que hacen un trabajo real, harán que el núcleo use tanto la memoria como el tiempo del procesador, solo observe mientras inicia las cosas para ver qué otros programas están causando este comportamiento. Rara vez es un problema con el kernel, incluso con programas de bajo rendimiento, que no se puede resolver al cerrar sesión y volver a iniciarla. Kernel_task se limpia bien y generalmente se encarga de usar solo los recursos necesarios para la carga de trabajo.

bmike
fuente
¡Gracias! ¿Diría que 700-750 MB de RAM son aceptables? Tengo bastante libre, pero me gustaría saber si hay algo que debería hacer de todos modos.
Timothy Mueller-Harder
No necesariamente. En mi MacBook Pro principal, puede aumentar a 2 GB en ocasiones cuando realmente estoy ejecutando muchos programas involucrados. Incluso entonces, a menudo no tengo que reiniciar, sino una vez al mes más o menos. (2.66 Core 2 Duo / 8 GB de RAM)
bmike
14

Componentes internos de Mac OS X: un enfoque de sistemas - Amit Singh - Google Books :

el núcleo utiliza la tarea y las abstracciones de hilos para dividir su funcionalidad en varios flujos de ejecución. El núcleo utiliza una sola tarea, la tarea del núcleo, con múltiples hilos que realizan operaciones del núcleo, como la programación, la cosecha de hilos, la gestión de llamadas, la paginación y el manejo de excepciones de Unix. Por lo tanto, xnu es un núcleo monolítico que contiene componentes marcadamente diferentes, como Mach, BSD y el Kit de E / S, que se ejecutan como grupos de subprocesos en una sola tarea en el mismo espacio de direcciones.

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

La tarea del núcleo no es una tarea real. Representa el núcleo, que es el núcleo del sistema operativo. La mayor parte de lo que hace ocurre a pedido directo de una aplicación. Cada vez que asigna un gran bloque de memoria, abre o cierra un archivo, lee o escribe un archivo, extrae datos a través de la red, crea un nuevo proceso o hilo, etc., su aplicación realiza una llamada al sistema. Estas llamadas hacen que el kernel trabaje para su aplicación. Gran parte de ese trabajo se factura a la tarea del kernel, pero su aplicación realmente lo está haciendo, aunque sea indirectamente.

Lri
fuente
1

Una razón práctica por la que el kernel podría estar funcionando en exceso es que su sistema no tiene memoria y se está agitando. Verifique el gráfico de presión de memoria debajo de la pestaña Memoria del Monitor de actividad para ver si es amarillo o rojo.

En este caso, puede ordenar los procesos por Memoria y terminar algunos que consumen mucho para reducir la presión. (por ejemplo, eliminar algunos procesos de Google Chrome Helper)

Nicolas Kokkalis
fuente