Executando verificação de segurança...
1

RTFM & Aleatoriedades - Swap file

Um arquivo de swap é um arquivo no sistema de arquivos que funciona como uma extensão da memória virtual do sistema operacional. Ele é usado para armazenar temporariamente dados da memória RAM quando esta está quase cheia. Em outras palavras, ele permite que o sistema continue funcionando, movendo dados menos usados da RAM para o disco, liberando espaço na memória principal para processos mais ativos.

Características de um Arquivo de Swap

  1. Memória Virtual:

    • Swap é parte do mecanismo de memória virtual do sistema operacional.
    • Quando a RAM está cheia, o sistema utiliza o espaço de swap para armazenar dados que não precisam estar imediatamente disponíveis.
  2. Formato:

    • É apenas um arquivo comum no sistema de arquivos, mas configurado para ser usado como swap.
    • Funciona de maneira semelhante a uma partição de swap, mas tem mais flexibilidade porque não precisa de uma partição dedicada.
  3. Usado Principalmente em Sistemas Unix/Linux:

    • Em sistemas Linux, você pode configurar um arquivo de swap além da partição de swap padrão.
    • Ele é útil em situações onde não foi planejada uma partição de swap durante a instalação, ou quando você precisa de mais espaço de swap sem reorganizar partições.

Vantagens de um Arquivo de Swap

  1. Flexibilidade:

    • É fácil ajustar o tamanho do arquivo de swap, criando um novo ou redimensionando o existente.
  2. Não Requer Reparticionamento:

    • Diferente de uma partição de swap, um arquivo de swap pode ser criado no sistema de arquivos sem precisar modificar as partições do disco.
  3. Fácil de Configurar e Remover:

    • Pode ser ativado ou desativado facilmente usando ferramentas do sistema, como swapon e swapoff no Linux.

Desvantagens de um Arquivo de Swap

  1. Desempenho:

    • Como está localizado em um sistema de arquivos, ele pode ser um pouco mais lento do que uma partição de swap dedicada.
    • Isso ocorre porque operações de leitura/gravação no arquivo de swap passam pelo sistema de arquivos.
  2. Fragmentação:

    • Se o disco estiver fragmentado, o desempenho do swap pode ser afetado.
  3. Verificando se há algum swap

sudo swapon --show
  1. Criando arquivo de swap de 2GiB
sudo dd if=/dev/zero of=/swapfile count=2192 bs=1MiB
  1. Alterando permissão do arquivo
sudo chmod 600 /swapfile
  1. Marcando o arquivo como um espaço de swap
sudo mkswap /swapfile
  1. Verificando se está tudo ok
sudo swapon /swapfile --show
  1. Adicionando a linha no etc/fstab para montagem automática
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  1. Ajustando a configuração de Swap

O parâmetro /proc/sys/vmwappiness configura a frequência com que o sistema transfere dados da RAM para o espaço de swap. Sendo um  valor entre 0 e 100 que representa uma porcentagem!

  • Com valores próximos de zero, o kernel não irá transferir dados para o  disco a menos que seja absolutamente necessário.
  • Lembre-se, as  interações com o arquivo de swap são “dispendiosas”! Pois são mais lentas que as interações com a RAM.
  • Valores que estão mais próximos de 100 irão tentar colocar mais dados  no swap em um esforço para manter mais espaço da RAM livre.
    • Dependendo  do perfil de memória de seus aplicativos ou do motivo pelo qual você  está usando o seu servidor, isso pode ser melhor em alguns casos.

Para um desktop, um valor de swappiness de 60 não é um valor ruim e normalmente é o valor dfault em uma distro Linux. Mas para um servidor, podemos deixá-lo mais próximo de 0, para fazer uso somente quando realmente necessário

Como exemplo podemos setar para  '10' para que o swap seja utilizado após 90% de RAM ocupada

sudo sysctl vm.swappiness=10

Para garantir que esse valor irá se manter após um boot

echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
  1. Ajustando a confiuração do vfs_cache_pressure

Esta opção controla a tendência do kernel de recuperar a memória que é usada para cache de diretórios e objetos inode.

  • No valor padrão de vfs_cache_pressure=100, o kernel tentará recuperar dentries e inodes a uma taxa "justa" em relação ao pagecache e à recuperação do swapcache.
  • Diminuir vfs_cache_pressure faz com que o kernel prefira manter os caches dentry e inode.
  • Quando vfs_cache_pressure=0, o kernel nunca recuperará dentries e inodes devido à pressão de memória e isso pode levar facilmente a condições de falta de memória.
  • Aumentar vfs_cache_pressure além de 100 faz com que o kernel prefira recuperar dentries e inodes.

Podemos definir isso em um valor mais conservador como 50

sudo sysctl vm.vfs_cache_pressure=50

Vamos garantir que após um boot o valor permaneça

echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
Carregando publicação patrocinada...