kernel come memória, mas nunca libera

1

Eu sei, esta é a 1000ª pergunta sobre o mesmo tópico. Passei dias lendo tantos tópicos, mas ainda não consegui encontrar uma resposta para minha estranha situação.

Quando eu tinha 16GB de RAM na minha máquina, tudo estava bem. Eu atualizei para 32GB, e o kernel começou a comer toda a RAM que podia (~ 25GB), não dando espaço para os aplicativos. free e atop informam esse uso de memória como buffer / cache .
Limpar o cache me dá alguns GB de volta, mas apenas por alguns minutos. Eu tentei fechar todos os aplicativos, exceto 2 sessões SSH. Mesmo resultado. Com menos de 10 aplicativos em execução, ainda tenho cerca de 20 GB de buffer / cache comidos pelo kernel. A única maneira de se livrar disso é reinicializar.

Estou rodando um Linux Mint 18 com o kernel 4.4.0-79-generic. E para informações, meu sistema começa com menos de 2 GB de RAM usada (nenhum aplicativo com fome é executado em segundo plano).

Alguém tem uma ideia de como identificar o vazamento?

[RESOLVIDO] - a causa foi identificada, foi por causa do bootchart (meu comentário sobre isso está na minha própria resposta abaixo)

    
por Jean-Christophe Heger 10.06.2017 / 16:08

3 respostas

5

Isso não é um problema - o Linux está funcionando como projetado para melhorar o desempenho, sem afetar nenhum aplicativo que precise de RAM.

Veja Ajuda! Linux comeu minha memória RAM! .

    
por 10.06.2017 / 16:18
2

Eu reinstalei o Mint 18.1 e o problema desapareceu. O uso da memória permanece < 3 GB, e não 25 ~ 30 GB como antes.

Meu entendimento do que aconteceu, se isso puder ajudar qualquer outra pessoa, é um vazamento de memória no kernel. Eu duvido que o próprio kernel esteja vazando, mas um driver pode ser a causa.

Encontrei um documento interessante sobre vazamento de memória do kernel: link . Não tenho certeza de quais versões do kernel podem ativá-lo, mas o kernel 4.10 do estoque no Ubuntu não deve (recompilar um kernel com a opção ativada).

Seguindo essa ideia, finalmente encontrei a causa . Algumas semanas atrás eu instalei o bootchart . Não aparece como uma aplicação do sistema. Eu o reinstalei e o resultado é bem direto. O uso da memória continua crescendo lentamente enquanto o número de processos é iniciado.

O mesmo problema é descrito aqui: link

    
por 11.06.2017 / 11:49
0

Cleaning the cache gives me few GB back, but only for few minutes. I did try to close all applications, except 2 SSH sessions. Same result.

Conforme você descreve, parece que há algo para identificar aqui, por exemplo, atividade de fundo. No segundo caso, é surpreendente que você não consiga limpar o cache e voltar a cerca de "menos de 2 GB de RAM usada" para uma sessão de desktop.

Lembre-se de que você não pode descartar páginas sujas do cache, isso causaria perda de dados. (Eles devem ser "limpos" por write-back, iniciados após vm.dirty_writeback_centisecs, padrão 3 segundos). Para completar, use sync antes de descartar o cache.

Geralmente, o cache de páginas deve ser preenchido por leituras e gravações de aplicativos. Se você é um mestre em atop (eu não sou), talvez isso te ilumine. Caso contrário, iotop mostrará a largura de banda por processo. Faça sua melhor dança de limpeza de cache, aguarde a recuperação da área de trabalho e veja o que mostra na iotop.

iotop -b fornece um modo em lote, para que você não perca a saída depois.

Por exemplo, você pode ver essas estatísticas se tiver um backup configurado para ser executado no momento. (Algumas ferramentas de backup deliberadamente tentam evitar o uso do cache de páginas, com medo de preenchê-lo e despejar, por exemplo, aplicativos GUI).

    
por 10.06.2017 / 16:50