Essa pergunta é motivada pelo meu choque quando descobri que o kernel do Mac OS X usa 750 MB de RAM .
Uso o Linux há 20 anos e sempre "sabia" que o uso da RAM do kernel é diminuído pelo X (é verdade? Alguma vez foi verdade?).
Então, depois de pesquisar um pouco, tentei o slabtop
que me dizia:
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
Isso significa que meu kernel está usando ~ 72MB de RAM agora?
(Considerando que o RSS dos top
relatórios Xorg
é de 17 milhões, o kernel agora supera o X, e não o contrário).
Qual é o uso "normal" de RAM do kernel (faixa) de um laptop?
Por que o MacOS usa uma ordem de magnitude mais RAM que o Linux?
PS. Nenhuma resposta aqui abordou a última pergunta; portanto, consulte as perguntas relacionadas:
echo 3 > /proc/sys/vm/drop_caches
, só tenho 80 MB usados.Respostas:
Kernel é um pouco impróprio. O kernel do Linux é composto por vários processos / threads + os módulos (
lsmod
), para obter uma imagem completa, você precisa olhar a bola toda e não apenas um componente.Aliás, meus shows
slabtop
:A página do manual
slabtop
também tinha o seguinte a dizer:Eliminando caches
Descartar meus caches como @derobert sugerido nos comentários da sua pergunta faz o seguinte:
O envio de um 3 faz o seguinte: pagecache gratuito, dentries e inodes. Discuto isso mais nesta seção de perguntas e respostas da U&L intitulada: Existem maneiras ou ferramentas para despejar o cache e o buffer de memória? ". Portanto, 110 MB do meu espaço estavam sendo usados apenas mantendo as informações sobre pagecache, dentries e inodes.
informação adicional
slabtop
mais detalhadamente. É intitulado: Comando Linux do dia: slabtop .Então, quanta RAM meu Kernel está usando?
Essa foto é um pouco mais nebulosa para mim, mas aqui estão as coisas que eu "acho" que sabemos.
Laje
Podemos obter um instantâneo do uso do Slab usando esta técnica. Basicamente, podemos extrair essas informações
/proc/meminfo
.Módulos
Também podemos obter um valor de tamanho para os módulos do Kernel (não está claro se é o tamanho deles no disco ou na RAM) puxando esses valores de
/proc/modules
:Slabinfo
Muitos dos detalhes sobre o SLAB estão acessíveis nesta estrutura de proc
/proc/slabinfo
:Dmesg
Quando o sistema é inicializado, há uma linha que relata o uso de memória do kernel Linux logo após o carregamento.
Referências
fonte
grep Slab /proc/meminfo
./proc/slabinfo
que parece ser a fonteslabtop
, para que se possa calcular os valores daqui para uma contagem total mais precisa./proc/modules
é provável que a coluna 2 de seja carregada com o tamanho do módulo na memória, pois os módulos em disco são normalmente compactados (por exemplo, no Fedora 27 é xz), verifiquei otg3
driver da NIC, o tamanho do disco (tamanho do arquivo compactado ou original) não corresponde ao tamanho do byte exibido em/proc/modules
.Que tal agora:
Isso ocorre em uma máquina muito pequena, recém-inicializada, rodando sem cabeça com um kernel normal. Portanto, não requer muito.
Como dicas derobert, o kernel utilizará a memória disponível para armazenamento em cache e isso é muito do que você vê
slabtop
. Além do cache do arquivo, isso tem a ver com a memória compartilhável dos processos do espaço do usuário que não está mais em uso. O kernel o deixa lá até que o mesmo material seja necessário novamente, ou então algo precisa ativamente de RAM, caso em que é esquecido. Uma analogia seria retirar um livro de uma prateleira e deixá-lo aberto para leitura em uma mesa: quando terminar de ler, você poderá deixar o livro aberto sobre a mesa, caso precise examiná-lo novamente.fonte
Neste servidor de 512 GB de RAM executando o Solaris, o kernel usa 25 GB:
O menor tem mais da metade de sua RAM usada pelo kernel:
Nada para se preocupar, a RAM não utilizada é uma RAM desperdiçada de qualquer maneira.
fonte
echo ::memstat | mdb -k
em alguns servidores de produção Solaris 10 anteriores à atualização 10/09.