¿Cómo investigar el alto uso de memoria de tareas del kernel?

Estaba usando mi MacBook Pro (con 16 GB de RAM) como de costumbre y, de repente, apareció esta ventana emergente que:

Su sistema se ha quedado sin memoria de aplicación.

Para evitar problemas con su computadora, cierre cualquier aplicación que no esté usando.

Force Quit Applications: su sistema se ha quedado sin memoria de aplicación: captura de pantalla

Obviamente he cerrado algunos que pude, pero no ayudó.

Después de verificar la memoria, parece que la tarea del kernel consumió 7 GB y se usaron 22.36 GB de memoria de intercambio de un total de 23 GB (que obviamente fue el caso). Sin embargo, todavía tengo 20 GB de espacio libre en mi SDD.

Memoria - Menús iStat - captura de pantalla

El Monitor de actividad no ayudó mucho mientras mi OS X se dirigía a la destrucción.

Explorador de procesos

kernel_task - Pestaña Memoria - captura de pantalla kernel_task - Pestaña Estadísticas - captura de pantalla

Mis topestadísticas antes de que mi kernel se congele:

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

Al final, mi OS X se congeló y tuve que hacer un restablecimiento completo, reparar mi SDD en modo de recuperación y arreglarlo después (recuperar el trabajo perdido, solucionar conflictos de aplicaciones, verificar mi carpeta perdida y encontrada, pestañas de Chrome/Terminal desaparecidas, dolor de cabeza, etc. ).

Mi pregunta es, ¿cómo verifico el alto uso de memoria de la tarea del kernel o cómo lidiar adecuadamente con ese tipo de situación? Intenté tomar Sample con Activity Monitor, pero está atenuado.


Detalles de mi MacBook Pro: Intel Core i7 de 2,3 GHz (finales de 2013) con 16 GB de RAM. OS X: 10.9.5

¿Es reproducible el comportamiento de su sistema? Agregue también la versión de su sistema:
@klanomath Por lo general, tengo muchas congelaciones, especialmente con un tiempo de actividad prolongado, y estas son solo congelaciones del kernel por razones desconocidas (mi MBR es bastante nuevo). Pero esta es la primera vez que veo esa ventana emergente que me dice que no tengo memoria (con 16 GB de RAM y 50 GB de espacio libre). Sin embargo, mi pregunta principal es cómo investigar el uso de memoria de la tarea del kernel, por lo que si es reproducible no debería ser relevante.
Utilice zprint -t(Lion) o sudo zprint -t(Mountain Lion y posteriores).
Tiene razón con la irrelevancia de la reproducibilidad con respecto a su pregunta en el título, pero podría ser relevante para resolver su (s) problema (s).
@klanomath Gracias, temía que los problemas no reproducibles estuvieran fuera de tema. Este tipo de congelación fue la primera vez. zprint -tme muestra la mesa. ¿Hay alguna forma de reducir/actualizar el uso del kernel? ¿O podría ser algún tipo de fuga de mala suerte?
¿Le importaría agregar el resultado a su pregunta (o guardarlo en sus documentos)? Solo para referencia futura/para poder compararlo con un zprint hecho en un estado de sistema más crítico. En mi humilde opinión, es una fuga de mala suerte. Si lo publicas tal vez te pueda decir más.
@klanomath Ok, lo haré. Con mi suerte seguro que volverá a pasar. O alguien más entrará en una situación similar.
Tengo el mismo problema de repente. Estoy bastante seguro de que está relacionado con docker para mac o hyperkit. Tan pronto como detengo la ventana acoplable para mac, kernal_task comienza a consumir más de 10 GB de memoria
En mi caso, fue la aplicación Dashlane la que causó el problema. Acabo de borrarlo y funciona bien.

Respuestas (2)

Hay muchas cosas que salen mal con el alto uso de tareas del kernel. Por lo general, esto está relacionado con un proceso defectuoso o pesado que utiliza en exceso los recursos del sistema (como la indexación del almacenamiento, la ejecución de máquinas virtuales, demasiadas pestañas en el navegador web o algunos otros procesos en segundo plano).

Aquí hay algunos métodos que ayudan a investigar problemas de uso del kernel de OS X:

Métodos básicos

  • Ejecute Console.appy verifique en ' Todos los mensajes ' para ver si ocurre algo inusual actualmente.
  • Utilice el Monitor de actividad para leer la memoria del sistema y determinar la cantidad de CPU, RAM y disco que se está utilizando.

    Alternativamente, ejecute topen Terminal y mantenga presionado Spacepara actualizar; es más fácil encontrar la causa del problema ( ¿swapsins / swaps / discos ?).

  • Ejecutarsudo fs_usage en Terminal para informar llamadas al sistema y fallas de página relacionadas con la actividad del sistema de archivos en tiempo real (creo que esta es la mejor opción de todas las demás). Luego presione Control- Cpara detenerlo.

    Acción: considere eliminar las aplicaciones que aparecen con frecuencia en la lista, pero no las está utilizando.

    Obtenga más información en: ¿Cómo depuro un proceso "kernel_task" fuera de control?

  • Ejecutesudo syscallbypid.d (o syscallbyproc.d), espere un poco, presione Control- C. Ahora verifique qué proceso generó la mayor cantidad de llamadas al sistema en ese tiempo determinado (última columna) y, si lo reconoce, considere eliminarlo. Si no, búscalo en Google y obtén más información al respecto.

Métodos avanzados

  • Use sysdiagnoseel comando (se puede activar presionando Shift- Control- - - .(punto) para recopilar rápidamente información de diagnóstico de todo el sistema útil para investigar problemas de rendimiento/memoria del sistema (aparecerá en /var/tmp) ya sea por usted o por los chicos de Apple. Durante el análisis, trate de no hacer cualquier cosa, cuando haya terminado, considere descomprimir el archivo generado y analice los registros.

    Consulte: ¿Cómo se obtienen los archivos de diagnóstico del sistema de OS X?

  • Ejecute footprintpara recopilar información de memoria detallada en un nivel de tipo de región de máquina virtual y bytes intercambiados:

    sudo footprint -a
    

    Versión antigua:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Úselo spindumppara perfilar todo el sistema, generará /tmp/spindump.txtun archivo (incluido el kernel y sus extensiones).

  • Úselo vm_statpara mostrar las estadísticas de la memoria virtual. P.ej

    vm_stat 1 # to display every second.
    
  • Úselo zprintpara verificar información sobre el uso del kernel, es posible:

    sudo zprint -t -s | head -n20
    

    Mostrará las zonas del núcleo más desperdiciadas.

  • Úselo newproc.dpara espiar nuevos procesos a medida que se ejecutan, creatbyproc.dpara archivos:

    sudo newproc.d
    sudo creatbyproc.d
    

    Nota: en OS X más reciente (10.11 o superior), es posible que esto no funcione cuando la protección de integridad está habilitada (compruébelo con csrutil status).

  • Try sar- reportero de actividad del sistema que puede muestrear y reportar varios contadores de estadísticas acumulativas mantenidos por el sistema operativo.

Para obtener herramientas de depuración más útiles, consulte los scripts de dtrace ( grep dtrace /usr/bin/*). Si conoce el proceso defectuoso que causa el problema, puede usarlo dtrusspara depurarlo.


Comportamiento

Aquí hay algunas sugerencias que pueden ayudarlo con los problemas del sistema operativo.

  • Libera algo de memoria inactiva. Para hacer esto, primero debe vaciar el caché y forzar la purga del caché del disco:

    sync && sudo purge
    

    sync- forzar la finalización de escrituras en disco pendientes (vaciar caché)

    purge- forzar la purga del caché del disco (lavado y vaciado)

    Su función es básicamente terminar todas las operaciones pendientes de E/S que utilizan caché de disco y luego liberar todo el caché de disco ocupado, por lo que debería liberar espacio en disco para facilitar la paginación y el intercambio de memoria principal. Es seguro de usar, ya que no afecta la memoria anónima que se ha asignado a través de malloc, vm_allocate, etc.

  • Use algunas aplicaciones de terceros para limpiar la memoria usada en exceso, como iBoostUp , SystemPal , etc.

  • También puede desactivar Spotlight temporal:

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 
    

    Y considere otros servicios por:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Salga de su navegador web y verifique si eso ayuda. Por ejemplo, el uso de Chrome es muy ingenioso, especialmente cuando hay algún procesamiento front-end en segundo plano (por ejemplo, Javascript) o las animaciones similares a anuncios están constantemente representando el contenido.

Spotlight sigue apareciendo, pero no lo estoy usando, y cada vez que lo mato, vuelve a aparecer al segundo después... ¿Cómo/debo deshacerme de él?
@ling, le sugiero que haga otra pregunta entonces, ya que esto está relacionado con la memoria de tareas del núcleo alto, no es específico de Spotlight.
Suspiro , tengo 4 GB de RAM en mi Mac, y recientemente la tarea del kernel subió a 3.1 GB, básicamente congelando toda mi computadora. Cerré mi pestaña de Google Drive y bajó a 950 MB...
No es lo suficientemente específico como para resolver el kernel_taskproblema de uso elevado de memoria y CPU.
Lo que quiero saber es qué es lo que hace que las etiquetas de Safari o Firefox terminen agregando tanta sobrecarga a kernel_task. ¿Qué significa que la actividad del navegador termina en kernel_task?

Tuve un problema muy similar después de reemplazar mi pantalla LCD en un iMac de finales de 2012. El ventilador se ejecutaba a altas RPM y tenía un alto uso de CPU Kernel_task. Lo reduje a un sensor de temperatura que debe mover de la pantalla LCD antigua a la nueva pantalla de reemplazo. si olvida hacerlo, la velocidad de la CPU y Kernel_task se ven afectados y ralentizan su sistema.

Motivo de la votación negativa: esto no está relacionado con la pregunta OP sobre el uso de la memoria y no sobre el uso de la CPU (aunque tiene razón sobre el uso de la CPU de kernel_task para evitar que la aplicación use la CPU y, por lo tanto, enfríe la computadora portátil)
Estoy usando 2 monitores extendidos y tengo este problema. Este es el paso que hice y lo resolví. desarrollador.apple.com/forums/thread/17263