Eu tenho um problema muito estranho, que estou tendo dificuldade em diagnosticar quanto à causa raiz.
Eu tenho um Mac Pro (2008, 8 núcleos, 2,8 GHz, 8800GT) com 14 GB de RAM (atualizado recentemente devido a esse problema!).
Quando eu inicializo meu sistema e efetuo login, vm_stat / top / Activity Monitor mostrará que kernel_task possui cerca de 150 MB alocados e a máquina possui cerca de 800 MB de memória com fio sendo alocada.
Mesmo inicialmente, 800 MB parecem uma quantidade enorme de memória com fio a ser alocada sem aplicativos em execução - mas piora. (NB: Wired está bloqueado, memória não trocável )
Depois de um tempo muito curto, às vezes acionado por algo tão simples quanto o lançamento de um terminal, o kernel_task aumentará para 8-900 MB de Real Mem (RSIZE) e a Memória com fio será acelerada para 1,6 GB (implicando que todas as solicitações de memória extra sejam necessárias). RAM com fio no kernel).
Se eu sair de tudo (IE: sem aplicativos em execução, barrar um monitor de atividade ou um terminal para visualizar o topo), não haverá redução significativa no uso do kernel_task RSIZE ou da memória com fio. Seguir o caminho oposto e carregar tarefas do sistema também mostra que a memória com fio não é reduzida - e que, o que é mais importante, não é reduzida, de preferência à troca pesada.
Se eu sair e entrar novamente, isso reduzirá um pouco (450 MB kernel_task, 1,28 GB com fio), mas não voltará ao início.
Não estou executando nenhum kext esquisito - além disso, o kextstat não mostra grandes alocações de memória; o maior sendo com.apple.nvidia.nv50hal com cerca de 4 MB de memória.
No geral, a máquina fica mais lenta quando isso acontece - sem surpresa, porque uma quantidade tão grande de RAM foi marcada como não paginável.
Então, eu tenho algumas perguntas:
1) Existe uma boa maneira de diagnosticar o que alocou toda essa memória com fio? Geralmente é duas vezes maior que o tamanho do kernel_task, sem executar aplicativos. O total da memória real parece não aumentar - parece que há um monte de RAM que não está sendo contabilizada em nenhum lugar.
2) O que está acontecendo para fazer com que o kernel subitamente exija 6 vezes mais memória?
Respostas:
Para investigar por que o kernel usa mais memória que o normal, você pode usar ferramentas diferentes.
kernel_task
tarefa, não qualquer outra, que usa mais memória do que o habitual (considere matá-lo).vm_stat 1
para ver as estatísticas da memória em tempo real e se a sua memória está realmente aumentando a cada segundo.fs_usage
ferramenta (como raiz) para monitorar chamadas do sistema e falhas de página em tempo real.Para verificar a soma das alocações sujas / anônimas de vários processos executados no Terminal:
Reúne informações de memória, como quanto foi trocado (por usuário ou memória do kernel).
Além disso, se você acha que o kernel está usando mais memória, tente a
zprint
ferramenta:Ele mostrará as informações sobre zonas do kernel
Se você deseja forçar a remoção do cache do disco (para liberar memória), tente:
Consulte também: Como investigar o alto uso de memória de tarefas do kernel? no AD SE
fonte
As extensões do kernel são apenas um dos muitos, muitos fragmentos de código que podem ser executados pelo sistema operacional sem o seu conhecimento. Eu tenho um pequeno utilitário baseado em Python chamado Consultant's Canary que o ajudará a encontrar alguns deles:
Se isso não resultar em possíveis culpados, eu diria que inicialize a partir de uma instalação limpa e veja se você pode reproduzir o problema lá.
fonte