É a propriedade dinâmica vm.swappiness no linux

0

Uma das minhas máquinas tinha cerca de 120 GB de 250 GB de RAM consumidos. Nosso nível de swappiness foi de 60, o que significa que por volta de 100GB a troca ocorreria. Eu atualizei a configuração de swappiness por echo 1 > / proc / sys / vm / swappiness /. Mas ainda vejo espaço de troca sendo usado.

Preciso reiniciar minha máquina / processos para ter efeito?

    
por user135284 12.02.2018 / 21:03

1 resposta

2

O valor é aplicado dinamicamente, mas há algumas coisas que você deve considerar além desse valor, a saber:

  1. Embora o Linux troque dados oportunisticamente (isto é, ele começará a empurrar dados para swap antes que a RAM esteja cheia), ele apenas troca os dados sob demanda (portanto, apenas extrai o que realmente é necessário) .

  2. Mesmo depois que os dados são trocados novamente, uma cópia ainda é mantida no swap até que o programa termine. Isso teoricamente melhora o desempenho do sistema quando o subsistema de memória virtual está se debatendo (isto é, constantemente arrastando dados para dentro e para fora do swap porque tudo que está rodando não caberá inteiramente na memória) porque evita a necessidade de gravar os dados para trocar novamente se seria trocado.

  3. Mesmo que o 1 e o 2 não fossem o caso, o sistema não reagiria de forma visível à alteração imediatamente, simplesmente porque leva tempo para mover os dados de volta do swap.

Agora, tudo isso de lado, há outra coisa a considerar, a saber, que sua máquina estava trocando bem antes que a exaustão da memória fosse uma preocupação razoável. Isso significa uma das três coisas na maioria dos casos:

  • Você está usando grupos de controle de memória para limitar o uso de memória de certos programas, e alguns deles estão atingindo os limites nos grupos de controle.
  • Você tem uma quantidade insana de arquivos armazenados em cache que, por algum motivo, o sistema não está disposto a despejar do cache para liberar memória.
  • Algo que é muito ativo tem uma quantidade enorme de memória alocada (possivelmente usando páginas enormes) que não está realmente usando.

No primeiro caso, o ajuste /proc/sys/vm/swappiness não ajuda, você precisa verificar os limites de memória configurados nos grupos de controle e ajustá-los (ou veja os aplicativos que estão sendo executados e descubra qual deles está usando mais RAM do que você achou necessário).

No segundo caso, você provavelmente terá melhores resultados aumentando /proc/sys/vm/vfs_cache_pressure do que reduzindo /proc/sys/vm/swappiness O vfs_cache_pressure sysctl controla a agressividade com que o sistema recupera espaço do cache de páginas. É expresso como uma porcentagem, com o padrão sendo 100. Acho que aumentar para 200 normalmente convencerá o kernel de que você realmente se importa mais com o uso de memória. Definir isso muito alto, porém, terá um impacto negativo no desempenho geral (porque perderá tempo tentando diminuir o cache quando ele não puder ser diminuído).

O terceiro caso é um problema com o programa em questão, e você não pode fazer muito na maioria dos casos além de reclamar para os desenvolvedores.

    
por 12.02.2018 / 21:36

Tags