O que exatamente o kernel_task faz?


30

Eu gostaria de saber pelo que o kernel_task é responsável. Além disso, qual é o uso máximo aceitável de RAM e CPU para isso?


É melhor medir o uso da RAM e da CPU após uma inicialização segura para obter uma medida do funcionamento do sistema quando ocioso.
bmike

11
Segundo Tyler, é uma "representação do próprio microkernel". Se você deseja uma resposta mais específica, ele continua dizendo que "parece ser o gerenciador de memória (virtual /) básico do Mac OS X, além do Mach". Você terá dificuldade em encontrar uma resposta definitiva, a menos que fale com um engenheiro de alto nível da Apple. O público apenas reuniu esse processo. Fonte: bleepsoft.com/tyler/index.php?itemid=43

Respostas:


28

A tarefa do kernel é especial, pois é um sistema operacional inteiro / micro kernel baseado no Mach 3.0 . Ele abstrai a maior parte do hardware principal, tempo, passagem de mensagens e manipulação de memória.

O que a maioria das pessoas percebe no Activity Monitor é que kernel_taskacumula todo o tempo da CPU para atrasos e cálculos no processamento de entrada / saída (E / S), além de agendar sobrecarga de processos e encadeamentos. Da mesma forma - ele acumula todas as alocações de memória que não estão no espaço do usuário. Nos Macs de 2014 e versões mais recentes, essa tarefa existe para acelerar a CPU - quando as temperaturas no processador estão muito quentes, a tarefa do kernel é atribuída como "sem trabalho" e mostra a CPU alta ocupada para deixar o processador ocioso e não superaquecer o computador. Isso é mais notável na linha portátil - especialmente no MacBook sem nenhum tipo de ventilador ou ventilador para resfriar o processador. A Apple alerta sobre isso para possíveis programadores do kernel em "Por que você deve ficar longe da programação no Kernel" que desativar a refrigeração causará danos permanentes e irreparáveis ​​ao hardware.

Resumindo, a programação do kernel é uma imensa responsabilidade. Você deve ter um cuidado excepcional para garantir que seu código não cause falhas no sistema, não forneça acesso de usuário não autorizado aos arquivos ou à memória de outras pessoas, não introduza explorações de raiz remotas ou locais e não cause perda ou corrupção inadvertida de dados .

Se você assisti-lo após uma reinicialização, verá que ele começa com o mínimo de necessidades de RAM e CPU e cresce apenas quando outros programas são executados e precisam dos serviços do sistema.

Para reduzi-lo, desligue as portas desnecessárias (WiFi, bluetooth, etc ...), bem como os programas ociosos / não utilizados. Se as coisas não se acalmarem, considere a reinicialização para garantir que nenhuma tarefa esteja presa ou com perda de memória. Se você tem programas realizando trabalho, eles farão com que o kernel use tempo de memória e processador - observe como você inicia as coisas para ver quais outros programas estão causando esse comportamento. Raramente é um problema com o kernel - mesmo com programas com desempenho ruim - que não pode ser resolvido fazendo o logout e o logon novamente. O kernel_task limpa bem e geralmente cuida de usar apenas os recursos necessários para a carga de trabalho.


Obrigado! Você diria que 700-750 MB de RAM são aceitáveis? Eu tenho muito de graça, mas gostaria de saber se há algo que eu deva fazer de qualquer maneira.
Timothy Mueller-Harder

Não necessariamente. No meu MacBook Pro principal, ele pode aumentar para 2 GB quando estou executando muitos programas envolvidos. Mesmo assim, nem sempre preciso reiniciar, mas uma vez por mês. (2,66 Core 2 Duo / 8 GB RAM)
bmike

14

Informações internas do Mac OS X: uma abordagem de sistemas - Amit Singh - Google Livros :

o kernel usa as abstrações de tarefas e encadeamentos para dividir sua funcionalidade em vários fluxos de execução. O kernel usa uma única tarefa - a tarefa do kernel - com vários threads que executam operações do kernel, como agendamento, colheita de threads, gerenciamento de chamadas, paginação e manipulação de exceções do Unix. Portanto, xnu é um kernel monolítico contendo componentes marcadamente diferentes, como Mach, BSD e o Kit de E / S, todos executando como grupos de encadeamentos em uma única tarefa no mesmo espaço de endereço.

http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :

A tarefa do kernel não é uma tarefa real. Ele representa o kernel, que é o núcleo do sistema operacional. A maior parte do que ocorre ocorre a pedido direto de um aplicativo. Sempre que você alocar um grande bloco de memória, abrir ou fechar um arquivo, ler ou gravar um arquivo, extrair dados pela rede, criar um novo processo ou thread, etc., seu aplicativo executará uma chamada de sistema. Essas chamadas fazem com que o kernel funcione para seu aplicativo. Muito desse trabalho é cobrado na tarefa do kernel, mas realmente está sendo feito pelo seu aplicativo, embora indiretamente.


1

Uma razão prática pela qual o kernel pode estar sobrecarregado é que seu sistema está sem memória e está se debatendo. Verifique o gráfico de pressão da memória na guia Memória do Activity Monitor para ver se é amarelo ou vermelho.

Nesse caso, você pode classificar os processos por memória e finalizar alguns que consomem muito, para reduzir a pressão. (por exemplo, elimine alguns processos do Google Chrome Helper)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.