Como investigar o alto uso de memória de tarefas do kernel?

131

Eu estava usando meu MBP (com 16 GB de RAM) como de costume e, fora do azul, tenho este pop-up que:

Seu sistema ficou sem memória do aplicativo.

Para evitar problemas com o seu computador, feche os aplicativos que você não está usando.

Forçar encerramento de aplicativos - O sistema ficou sem memória do aplicativo: captura de tela

Obviamente fechei alguns que pude, mas não ajudou.

Depois de checar a memória, parece que a tarefa do kernel consumiu 7 GB e 22,36 GB de memória swap foram usadas, totalizando 23 GB (o que obviamente era o caso). No entanto, eu ainda tenho 20 GB de espaço livre no meu SDD.

Memória - Menus iStat: captura de tela

O Activity Monitor não ajudou muito enquanto meu OS X estava indo para a destruição.

Process Explorer

kernel_task - Guia Memória - captura de tela kernel_task - Guia Estatísticas - captura de tela

Minhas topestatísticas antes do congelamento do meu 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.

No final, meu OS X congelou e tive que fazer uma reinicialização completa, reparar meu SDD no modo de recuperação e corrigi-lo posteriormente (recuperando trabalho perdido, corrigindo conflitos de aplicativos, verificando minha pasta perdida + encontrada, as guias do Chrome / Terminal desaparecidas, dor de cabeça etc.) )

Minha pergunta é: como verifico o alto uso de memória da tarefa do kernel ou como lidar adequadamente com esse tipo de situação? Tentei coletar amostras com o Activity Monitor, mas está acinzentado.


Detalhes do meu MBR: Intel Core i7 de 2,3 GHz (final de 2013) com 16 GB de RAM. OS X: 10.9.5

kenorb
fonte
1
@klanomath Normalmente, eu tenho muitos congelamentos, especialmente com muito tempo de atividade, e estes são apenas congelamentos de kernel por motivos desconhecidos (meu MBR é bastante novo). Mas esta é a primeira vez que eu vejo aquele pop-up que estou sem memória (com 16 GB de RAM e 50 GB de espaço livre). No entanto, minha pergunta principal é como investigar o uso de memória da tarefa do kernel, portanto, se é reproduzível, não deve ser relevante.
kenorb
5
Use zprint -t(Leão) ou sudo zprint -t(Leão da montanha e posterior).
klanomath
1
Você está certo com a irrelevância da reprodutibilidade referente à sua pergunta no título, mas pode ser relevante resolver seu (s) problema (s).
klanomath
1
Você se importaria de adicionar a saída à sua pergunta (ou salvá-la em seus documentos)? Apenas para referência futura / para poder compará-lo com um zprint feito em um estado mais crítico do sistema. IMHO é um vazamento de má sorte. Se você publicá-lo, talvez eu possa lhe dizer mais.
klanomath
1
Eu tenho o mesmo problema de repente. Tenho certeza de que está relacionado ao docker for mac ou hyperkit. Assim que eu parar de janela de encaixe para mac, kernal_task começa a comer 10GB + de memória
Charlie Martin

Respostas:

176

Há muitas coisas que dão errado com o alto uso de tarefas do kernel. Geralmente, isso está relacionado a um processo defeituoso ou pesado que utiliza demais os recursos do sistema (como indexação de armazenamento, execução de VMs, muitas guias no navegador da web ou outros processos em segundo plano).

Aqui estão alguns métodos que ajudam a investigar problemas de uso do kernel do OS X:

Métodos básicos

  • Execute Console.appe verifique ' Todas as mensagens ' para ver se algo incomum está acontecendo no momento.
  • Use o Monitor de atividades para ler a memória do sistema e determinar a quantidade de CPU, RAM e disco em uso.

    Alternativamente executar topno Terminal e segure Spacepara refrescar - mais fácil encontrar a causa do problema ( swapins / swapouts / discos ?).

  • Executarsudo fs_usage em Terminal para relatar chamadas do sistema e falhas de página relacionadas com sistema de arquivos atividade em tempo real (eu acho que essa é a melhor opção de todos os outros). Então aperte Control- Cpara pará-lo.

    Ação: considere matar aplicativos que aparecem com frequência na lista, mas você não os está usando.

    Saiba mais em: Como depuro um processo "kernel_task" fora de controle?

  • Corrasudo syscallbypid.d (ou syscallbyproc.d), espere um pouco, aperte Control- C. Agora verifique qual processo gerou o maior número de chamadas do sistema nesse período (última coluna) e se você o reconhecer, considere eliminá-lo. Caso contrário, pesquise no Google e saiba mais.

Métodos avançados

  • Use o sysdiagnosecomando (pode ser acionado pressionando Shift- Control- - - .(ponto) para reunir rapidamente informações de diagnóstico em todo o sistema, úteis na investigação de problemas de memória / desempenho do sistema (aparecerão em /var/tmp) por você ou pelo pessoal da Apple. Durante a análise, tente não qualquer coisa, quando terminar - considere descompactar o arquivo gerado e analisar os logs.

    Consulte: Como você obtém arquivos de diagnóstico do sistema no OS X?

  • Execute footprintpara reunir informações detalhadas de memória em um nível de tipo por região da VM e bytes trocados:

    sudo footprint -a
    

    Versão antiga:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Use spindumppara criar um perfil do sistema inteiro, ele irá gerar /tmp/spindump.txtarquivos (incluindo o kernel e suas extensões).

  • Use vm_statpara mostrar estatísticas da memória virtual. Por exemplo

    vm_stat 1 # to display every second.
    
  • Use zprintpara verificar informações sobre o uso do kernel, é possível:

    sudo zprint -t -s | head -n20
    

    Ele mostrará as zonas de kernel mais desgastantes.

  • Use newproc.dpara bisbilhotar novos processos à medida que são executados, creatbyproc.dpara arquivos:

    sudo newproc.d
    sudo creatbyproc.d
    

    Nota: No OS X mais recente (10.11 ou superior), isso pode não funcionar quando a proteção de integridade está ativada (marque por csrutil status).

  • Try sar- repórter de atividade do sistema que pode amostrar e relatar vários contadores estatísticos cumulativos mantidos pelo sistema operacional.

Para ferramentas de depuração mais úteis, verifique os scripts dtrace ( grep dtrace /usr/bin/*). Se você conhece o processo defeituoso que está causando o problema, pode usá dtruss-lo para depurá-lo.


Ações

Aqui estão algumas sugestões que podem ajudá-lo com os problemas do sistema operacional.

  • Libere memória inativa. Para fazer isso, você deve liberar o cache primeiro e forçar a limpeza do cache de disco:

    sync && sudo purge
    

    sync - forçar a conclusão de gravações de disco pendentes (cache de liberação)

    purge - força o cache do disco a ser limpo (liberado e esvaziado)

    Sua função é basicamente encerrar todas as operações pendentes de E / S que estão usando cache de disco e, em seguida, liberar todo o cache ocupado, portanto, deve liberar espaço em disco para facilitar a paginação e a troca da memória principal. É seguro usar, pois não afeta a memória anônima que foi alocada por malloc, vm_allocate etc.

  • Use alguns aplicativos de terceiros para limpar a memória usada em excesso, como iBoostUp , SystemPal , etc.

  • Você também pode desativar o Spotlight temporário:

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

    E considere outros serviços:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Saia do seu navegador da web e verifique se isso ajuda. Por exemplo, o uso do Chrome é muito engenhoso, especialmente quando há algum processamento front-end em segundo plano (por exemplo, Javascript) ou animações semelhantes a anúncios estão constantemente processando o conteúdo.

kenorb
fonte
1
O Spotlight continua reaparecendo, mas não o estou usando, e toda vez que o mato reaparece no segundo depois ... Como devo me livrar dele?
ling
1
@ling Sugiro que você faça outra pergunta, pois isso está relacionado à alta memória de tarefas do kernel, não a um Spotlight específico.
kenorb
2
suspiro Eu tenho 4 GB de RAM no meu Mac e, recentemente, a tarefa do kernel estava subindo para 3,1 GB, basicamente congelando todo o meu computador. Fechei a guia Google Drive, e desceu para 950 MB ...
Zizouz212
3
Não é específico o suficiente para realmente resolver o kernel_taskproblema de uso de alta memória e CPU.
hyiltiz
6

Eu tive um problema muito semelhante depois de substituir minha tela LCD em um iMac de final de 2012. O ventilador estava rodando em alta RPM e tinha alto uso de Kernel_task da CPU. Limitei-o a um sensor de temperatura. Você deve passar da tela LCD antiga para a nova tela de substituição. se você esquecer de fazê-lo, a velocidade da CPU e o Kernel_task serão afetados, diminuindo a velocidade do seu sistema.

fern10
fonte