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

118

Estaba usando mi MBP (con 16 GB de RAM) como de costumbre y, de repente, tengo esta ventana emergente que:

  

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

     

Para evitar problemas con su computadora, cierre todas las aplicaciones que no esté usando.

Obviamente,hecerradoalgunosquepude,peronosirviódenada.

Despuésdeverificarlamemoria,parecequelatareadelkernelcomió7GByseusaron22.36GBdememoriadeintercambiodeuntotalde23GB(loqueobviamentefueelcaso).Sinembargo,todavíatengo20GBdeespaciolibreenmiSDD.

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

Mis top stats antes de mi congelación del kernel:

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 reparar después (recuperar el trabajo perdido, reparar los conflictos de la aplicación, revisar mi carpeta perdida + encontrada, pestañas de Chrome / Terminal desaparecidas, dolor de cabeza , etc.).

Mi pregunta es, ¿cómo verifico el uso elevado de memoria en la tarea del kernel o cómo manejar adecuadamente este tipo de situación? He intentado tomar una muestra con el Monitor de actividad, pero está atenuado.

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

    
pregunta kenorb 25.03.2015 - 21:37

2 respuestas

159

Hay muchas cosas que van mal con el uso alto de tareas del kernel. Por lo general, esto se relaciona con un proceso pesado o defectuoso que utiliza en exceso los recursos del sistema (como indexar el almacenamiento, ejecutar máquinas virtuales, demasiadas pestañas en el navegador web u otros procesos en segundo plano).

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

Métodos básicos

  • Ejecute Console.app y marque ' Todos los mensajes ' para ver si ocurre algo inusual actualmente.
  • Use Activity Monitor para leer la memoria del sistema y determinar la cantidad de CPU, RAM y el disco se está utilizando.

    También puede ejecutar top en Terminal y mantener Espacio para actualizar: es más fácil encontrar el problema de la causa ( swapins / swapouts / discos ?).

  • Ejecute sudo fs_usage en Terminal para informar las llamadas al sistema y los errores de página relacionados 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 - C para detenerlo.

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

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

  • Ejecutar sudo syscallbypid.d (o syscallbyproc.d ), espere un poco, presione Control - C . Ahora compruebe qué proceso generó la mayoría de las llamadas al sistema en ese tiempo dado (ú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 el comando sysdiagnose (puede activarse presionando Shift - Control - - - . (punto) para recopilar rápidamente información de diagnóstico de todo el sistema que sea útil para investigar problemas de rendimiento / memoria del sistema (aparecerá en /var/tmp ), ya sea por usted o por Apple. Durante el análisis, intente no hacer nada Cuando haya terminado, considere descomprimir el archivo generado y analizar los registros.

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

  • Ejecute footprint para recopilar información de memoria detallada en un nivel de tipo de VM por región y bytes intercambiados:

    sudo footprint -a
    

    Versión anterior:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Use spindump para perfilar todo el sistema, generará el archivo /tmp/spindump.txt (incluido el kernel y sus extensiones).

  • Use vm_stat para mostrar las estadísticas de la memoria virtual. Por ejemplo,

    vm_stat 1 # to display every second.
    
  • Utilice zprint para verificar la información sobre el uso del kernel, es posible mediante:

    sudo zprint -t -s | head -n20
    

    Mostrará las zonas de kernel más desperdiciadas.

  • Utilice newproc.d para detener nuevos procesos a medida que se ejecutan, creatbyproc.d para archivos:

    sudo newproc.d
    sudo creatbyproc.d
    

    Nota: en el nuevo OS X (10.11 o superior), esto puede no funcionar cuando se habilita protección de integridad ( comprobar por csrutil status ).

  • Pruebe sar : informador de actividad del sistema que puede muestrear e informar varios contadores estadísticos acumulativos mantenidos por el sistema operativo.

Para obtener herramientas de depuración más útiles, compruebe si hay scripts dtrace ( grep dtrace /usr/bin/* ). Si conoce el proceso defectuoso que causa el problema, puede usar dtruss para depurarlo.

Acciones

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

  • Libera algo de memoria inactiva. Para hacer esto, primero debes vaciar la memoria caché y forzar la eliminación de la memoria caché del disco:

    sync && sudo purge
    
      

    sync : forzar la finalización de las escrituras de disco pendientes (vaciar caché)

         

    purge : obliga a la caché del disco a purgarse (vaciarse y vaciarse)

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

  • Use algunas aplicaciones de terceros para borrar algo de 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 considera 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 un procesamiento de front-end en segundo plano (por ejemplo, Javascript) o animaciones de tipo publicitario que muestran constantemente el contenido.

respondido por el kenorb 26.03.2015 - 13:20
4

Tuve un problema muy similar después de reemplazar mi pantalla LCD en un iMac de finales de 2012. El ventilador funcionaba a un alto RPM y tenía un alto uso de Kernel_task de la CPU. Lo reduje a un sensor de temperatura que debe pasar de la pantalla LCD antigua a la pantalla de reemplazo nueva. Si olvida hacerlo, la velocidad de la CPU y el Kernel_task se verán afectados por la ralentización del sistema.

    
respondido por el fern10 02.07.2016 - 23:07

Lea otras preguntas en las etiquetas