703 votos

¿Cómo encontrar la causa del alto uso de CPU de kernel_task?

De vez en cuando, mi máquina tendrá una instancia de kernel_task que utiliza al máximo la CPU:

alto uso de CPU por kernel_task

Esto puede durar desde minutos a veces horas. La máquina es efectivamente inutilizable en este estado. Reiniciar no ayuda; un nuevo kernel_task aparece de nuevo hasta que termine lo que está haciendo.

¿Cómo puedo averiguar qué está haciendo este proceso?

0 votos

Woah, esto se acaba de volver mucho más interesante. ¿Hay alguna posibilidad de que podamos actualizar ambas instantáneas una segunda vez - misma CPU procesada por todo el proceso y la medida detallada de la energía?

8 votos

@bmike Logré tanto reproducir el problema como solucionarlo a voluntad. Los gráficos de iStatMenus confirman que, en mi caso, la causa es la alta temperatura del chasis debido a la carga y los periféricos conectados a los puertos TB izquierdos.

3 votos

Sí - ese sensor de temperatura sí tiene la capacidad de causar esto precisamente. Gracias por la edición - eso ayuda aclarar en gran medida la situación para el registro.

958voto

Adam Puntos 154

TLDR; Si tu MacBook Pro se calienta o muestra un alto % de CPU para la tarea del kernel, intenta cargar en el lado derecho y no en el izquierdo.


El alto uso de CPU de kernel_task se debe a una alta temperatura del chasis causada por la carga. En particular el uso del puerto izquierdo de Thunderbolt.

Las soluciones incluyen:

  • Mover la carga del lado izquierdo al derecho. Si tienes un segundo cargador, conéctalo en el lado derecho. Evita enchufar todo en el lado derecho (ver último párrafo abajo).
  • Desconectar algo del lado izquierdo. Ya sea el cargador o algún otro accesorio hasta que la batería esté llena.
  • Forzar los ventiladores al máximo antes de enchufar. iStatMenus tiene un menú fácil Sensores -> Ventiladores para hacerlo. Esto solo ayuda en condiciones marginales.
  • Mudarse a una habitación más fresca.
  • Si estás usando tanto la pantalla del portátil como una pantalla externa intenta cambiar a solo una de ellas (yo cambié a solo externa, con la tapa del portátil cerrada). Algunos MBP (por ejemplo, modelos touchbar de 15" Intel) tienen una peculiaridad de diseño donde esta configuración puede hacer que se caliente más de lo que debería.

Prueba:

La temperatura real de la CPU o el uso de CPU de la aplicación no están correlacionados con kernel_task. Una CPU caliente es limitada reduciendo su velocidad de reloj, no programando una carga falsa.

Los gráficos a continuación son de iStatMenus. La máquina había estado en uso con la batería y luego enchufada.

Estado A tiene un hub USB-C (un ratón y teclado, más energía) y un adaptador HDMI 2.0 USB-C, ambos en el lado izquierdo. Se puede ver cómo el sensor de temperatura Proximidad Izquierda de Thunderbolt se eleva rápidamente. Alrededor de 3-4 minutos más tarde comienza el temido alto uso de CPU de kernel_task.

Estado B soluciona el problema de kernel_task al mover la energía de los puertos izquierdos a los derechos. La temperatura del lado izquierdo baja y kernel_task desaparece en unos 15 segundos.

Esto es causal. Al devolver la energía al lado izquierdo, restaurando el Estado A, rápidamente se restauran las temperaturas y kernel_task vuelve a aparecer después de 3-4 minutos. Nuevamente, moviendo la energía de vuelta al lado derecho, restaurando el Estado B, se resuelve el problema inmediatamente.

Estado C muestra que simplemente tener cosas enchufadas en los puertos de TB eleva significativamente su temperatura. Tanto el hub (solo ratón y teclado) como el adaptador HDMI individualmente elevan la temperatura unos 10 grados, y 15 grados juntos.

Gráficos de uso de CPU y temperatura

(todas las demás temperaturas eran bajas y estables. Por debajo de 55 grados).

Nota que la alta temperatura en el lado derecho parece ser ignorada por el sistema operativo. Enchufar todo en los dos puertos derechos en lugar de en los izquierdos elevó las temperaturas del lado derecho a más de 100 grados, sin que los ventiladores se encendieran. Tampoco aparece kernel_task, pero la máquina se vuelve inutilizable debido a que algo limita el rendimiento.

Por lo tanto, el alto uso de CPU por kernel_task es causado por una alta temperatura en la Proximidad Izquierda de Thunderbolt, que es causada por la carga y tener periféricos normales enchufados al mismo tiempo.

Macbook Pro 15" de 2017, MacOS 10.14.5


Para responder realmente la pregunta:

¿Cómo puedo averiguar qué está haciendo este proceso?

La única forma de preguntar realmente al kernel qué está haciendo es adjuntar un depurador de kernel. Eso significa obtener un kernel de depuración de Apple, reiniciar, y luego utilizar una segunda Mac para adjuntarse a la máquina depurada. Luego puedes examinar las trazas de pila y adivinar lo que significan.

De lo contrario, la suposición y la prueba son la única manera. Por supuesto, esto conduce a conclusiones falsas más a menudo que no.

26 votos

Este exacto problema me ha estado atormentando al borde de la locura durante meses, y he intentado de todo para detenerlo. Recientemente, regresar a HS desde Mojave lo "solucionó", pero volvió esta noche de repente una semana después, sin que parezca haber ningún evento que lo cause de nuevo. He realizado alrededor de 30 pasos diferentes que he encontrado en foros durante probablemente 40 horas desde que empecé a investigar. Un nuevo usuario en el mismo sistema parece empezar de cero, pero inevitablemente el problema regresa. También siento que tiene algo que ver con la energía/thunderbolt/calor.

0 votos

El problema es que una vez que Kernel_task y window server aparecen, NADA que haga logrará deshacerme de ellos o de la sobrecarga en el sistema. Usé el sistema (y lo exprimí) durante semanas e incluso con un uso intensivo, kerneltask y windowserver no aparecían en absoluto, hasta que lo hicieron, y se quedaron usando un 10-30% incluso después de dejar que el sistema se enfriara y con nada en ejecución. Etrecheck informa un alto uso de E/S cuando esos dos procesos están presentes, incluso en un sistema fresco e inactivo. ¿Tienes ALGUNA idea de cómo poner esos procesos de nuevo en orden una vez que comienzan a comportarse mal? ¡Estoy desesperado, esto es una verdadera pesadilla!

2 votos

Para mí no es lo que estás haciendo con la máquina, sino lo que está conectado a ella. Cargar aumenta la temperatura en unos 40 grados, periféricos en unos 15. Para mí kernel_task desaparece cuando la carga está completa. Del mismo modo, usar puertos en ambos lados de la máquina equilibra la carga y también resuelve el problema.

82voto

Xiang Ji Puntos 346

Si te encuentras con esto en una Macbook Pro 16" (2019), parece ser un problema conocido relacionado con el cuerpo de la computadora portátil que no puede manejar el calor tanto de la CPU como de la GPU cuando se conectan monitores externos. La solución definitiva parece ser usar una eGPU... lo que probablemente no sea práctico para la mayoría de las personas.

Un hilo de la Comunidad de AMD señaló además que el culpable es que la dGPU se pone a toda velocidad y consume ~20W de energía cada vez que la computadora portátil envía señales a múltiples monitores, aparentemente porque el controlador deja que la memoria de la dGPU funcione a toda velocidad "para evitar el desgarro". Esto rápidamente lleva al sobrecalentamiento del chasis. Enviar la señal solo a un monitor (el recuento incluye el monitor incorporado), sin escalado o escalado entero de la resolución, parece reducir el consumo de energía a ~9W y así resolver principalmente el problema.

Según los datos del sensor, parece que el desencadenante del estrangulamiento fueron probablemente las temperaturas de proximidad a Thunderbolt Izquierda/Derecha.

Actualización: Ahora sigo conectando mi MBP a varios monitores (la dGPU consume ~20W), pero seguí el consejo de un comentario y compré un ventilador de escritorio pequeño para apuntar al MBP... Ahora la temperatura parece estar principalmente bajo control y no tengo kernel_task activándose la mayor parte del tiempo. Podrías pensar que no necesitarías un truco de este tipo en la supuestamente mejor computadora portátil que puedes comprar, aunque supongo que no hay computadoras portátiles perfectas y por ahora todavía prefiero quedarme con Macbook.

Actualización 2: Finalmente configuré mi eGPU y como era de esperar, la MBP 16" no ha sufrido estrangulamientos desde entonces. Supongo que aún podrías considerar esto como una opción si todas las demás alternativas fallan. No necesitas una tarjeta gráfica elegante/cara. Estoy utilizando una pantalla 4K y 2 pantallas adicionales con un RX 580 sin ningún problema.

Actualización 3: Ahora veo a algunas personas recomendando limitar la frecuencia de la CPU con Turbo Boost Switcher. No lo probé mientras estaba usando mi MBP 16" ya que ya tenía la eGPU (por cierto, ahora estoy utilizando Macs con ARM donde este problema ha desaparecido por completo), pero podría valer la pena investigar.

0 votos

¿Cuál era tu configuración de eGPU?

0 votos

@arxpoetica egpu.io tiene guías bastante completas. Compré el Mantiz Saturn como la carcasa, aunque estoy seguro de que algo como Razer Core también estaría bien. Luego solo compré una RX 580 como tarjeta gráfica y funciona bastante bien (la tarjeta no necesita ser el modelo más nuevo)

3 votos

Es realmente una vergüenza que la Macbook Pro 16" (2019) se comporte de esta manera, estaba completamente devastado cuando leí que la solución sería comprar una GPU externa solo para hacer funcionar la computadora normalmente con un monitor externo. Sin embargo, luego encontré este video y después de instalar Turbo Boost Switcher Pro mi problema realmente desapareció. Ahora apago el Turbo Boost tan pronto como la computadora se calienta un poco. Antes de eso, había tratado de poner mi Mac en una base de enfriamiento, ¡pero eso no ayudó mucho...

82voto

CoyBit Puntos 409

Hoy tuve este problema.

Curiosamente, después de cambiar el puerto que había estado usando para cargar la computadora portátil y usar un puerto diferente de la computadora portátil, el uso de la CPU disminuyó:

introduce aquí la descripción de la imagen

12 votos

¿Cuál es la escala de tiempo de este gráfico? Supongo que toma algo de tiempo observar la caída si cambias de puerto.

31 votos

Inmediatamente. ¡Literalmente 2 seg!

0 votos

MacBook Pro Early 2015: Tuve este problema hace unos minutos. Estaba cargando un iPhone Xs y el Kernel se estaba volviendo loco (como suele hacer de vez en cuando). Luego recordé haber visto una discusión sobre esto en Hacker News hace unos días que vinculaba a esta página. Así que acabo de desenchufar el teléfono. ¡Oh sorpresa, la carga de la CPU ha bajado exactamente como en tu imagen aquí. ¡Increíble! ¿Quién lo hubiera pensado!?

24voto

Jose Chavez Puntos 645

Dado que persiste durante un período de tiempo muy largo y se mantiene incluso después de reiniciar, parece probable que tu problema sea causado por un problema de hardware, específicamente la falta de refrigeración. No describes qué tipo de computadora tienes, pero intenta verificar si el sistema de refrigeración está funcionando como debería. Podrías tener un ventilador roto, mucho polvo u algo similar.

El proceso virtual kernel_task, entre otras cosas, reduce el uso de la CPU para mantenerla por debajo de su temperatura de operación máxima. El propósito es evitar que la CPU se apague inesperadamente. kernel_task lo logra asegurándose de que la CPU esté inactiva durante largos períodos de tiempo, esencialmente garantizando que la CPU consuma la menor cantidad de energía posible, lo que significa que genere menos calor. Esto puede dar la impresión de que kernel_task está utilizando mucha CPU, pero en realidad no es así.

1 votos

Puede que tengas razón en que está relacionado con la temperatura, pero definitivamente no está relacionado con la temperatura de la CPU. Tu publicación me hizo habilitar el monitoreo del sensor de temperatura de iStat Menus, y cuando este problema sucedió nuevamente, la CPU estaba bastante fría. Ver captura de pantalla en la publicación editada.

0 votos

Si inicias en modo de recuperación, ¿sigues teniendo un alto "uso" de CPU de kernel_task?

0 votos

Me di cuenta anecdóticamente de que la tarea kernel_task desapareció cuando la temperatura del rayo izquierdo bajó por debajo de los 70 grados. También noté que al enchufar un cargador, la temperatura en el lado de carga sube alrededor de 20-30 grados. Esto significa que el efecto es comprobable, y confirmaré la próxima vez que ocurra este problema.

20voto

Pickledegg Puntos 305

Esto se debe más a menudo a la limitación térmica.

Un problema común es el sobrecalentamiento de los módulos reguladores de voltaje (VRM) que no tienen sensores de acceso público para ver.

Diagnóstico

Ejecuta: sudo watch -d -t -n1 thermal levels

Cuando la CPU > 100, estás siendo limitado térmicamente. Debes mantener un ojo en esto mientras intentas resolver tus problemas.

Ejecuta: sudo powermetrics --samplers smc |grep -i "CPU die temperature"

Esto muestra la temperatura de tu CPU. Si es < 100C, es tu VRM lo que lo está causando.

¿Cuál es la temperatura ambiente de tu habitación? >24C y comenzarás a tener problemas para enfriarlo adecuadamente usando cualquier método.

Puedes observar la limitación visualmente instalando el Intel Power Gadget.

Correcciones

No invasivas

  • Desactiva TurboBoost usando Turbo Boost Switcher
  • Compra un pequeño ventilador de escritorio y apúntalo hacia el portátil
  • Eleva el portátil en un soporte como el CoolerMaster U150R
  • Utiliza aire acondicionado para reducir la temperatura ambiente
  • Pon tu portátil en suspensión hasta que las temperaturas se reduzcan. Verifica thermal levels para confirmar.

Invasivas

Además, no coloques bloques de hielo debajo del portátil - esto puede causar condensación y dañar cosas.

0 votos

Hasta donde sé, el núcleo es solo un componente de software que se encuentra en /System/Library/kernels/kernel y es una interfaz entre el hardware y el software y realiza comunicación. - Pero ¿cómo puede un componente de software comunicarse más cuando un módulo de hardware suele estar caliente y ni siquiera tiene sensores? Lo único que me parecería lógico es si los ventiladores estuvieran girando más rápido. ¿Alguna idea? Gracias por la respuesta

0 votos

¡Gracias! Deshabilitar Turbo Boost lo solucionó para mí.

1 votos

@DarwinOSX Creo que lo que quiso decir el autor original es que los sensores no son accesibles públicamente, ¿pero están ahí y se pueden acceder a través de otros medios?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X