Swap (Português)
Essa página fornece uma introdução a espaço swap e paginação no GNU/Linux. Ele cobre a criação e ativação de partições swap e arquivos swap.
Do All about Linux swap space:
- O Linux divide sua RAM física (memória de acesso aleatório) em pedaços de memória chamados páginas. Swapping, ou troca, é o processo pelo qual uma página de memória é copiada para o espaço pré-configurado no disco rígido, chamado espaço swap ou espaço de troca ou swap space, para liberar essa página de memória. Os tamanhos combinados da memória física e do espaço swap são a quantidade de memória virtual disponível.
Suporte para swap é fornecido pelo kernel Linux e utilitários de espaço de usuário do pacote util-linux.
Espaço swap
O espaço swap pode assumir a forma de uma partição de disco ou de um arquivo. Os usuários podem criar um espaço swap durante a instalação ou em qualquer momento posterior, conforme desejado. O espaço swap pode ser usado para duas finalidades, estender a memória virtual além da memória física instalada (RAM), também conhecido como "ativar swap", e também para suporte de suspensão para disco.
Se for benéfico ativar o swap, depende da quantidade de memória física instalada e da quantidade de memória necessária para executar todos os programas desejados. Se a quantidade de memória física for menor que a quantidade necessária, é benéfico ativar a troca. Isso evita condições de falta de memória, onde o mecanismo matador de OOM do kernel do Linux tentará automaticamente liberar memória matando processos. Para aumentar a quantidade de memória virtual para o valor necessário, adicione a diferença necessária como espaço swap. Por exemplo, se os seus programas precisarem de 7,5 GB de memória para serem executados e houver 4 GB de memória física instalada, adicione a diferença de 3,5 GB no espaço swap. Adicione mais espaço swap para atender aos requisitos futuros. É uma questão de preferência pessoal se você preferir que os programas sejam eliminados ao ativar swap. A maior desvantagem de ativar o swap é seu desempenho inferior, consulte a seção #Desempenho.
Para verificar o estado do swap, use:
$ swapon --show
Ou
$ free -h
free também indica se a memória está em falta, o que pode ser remediado habilitando swap ou aumentando swap.
Partição swap
Uma partição swap pode ser criada com a maioria das ferramentas de particionamento do GNU/Linux. Partições swap são tipicamente designadas como tipo . Mesmo que seja possível usar qualquer tipo de partição como swap, é recomendado usar o tipo na maioria dos casos, já que o systemd detectará e montará automaticamente (veja abaixo).
Para configurar uma partição como área swap do Linux, o comando é usado. Por exemplo:
# mkswap /dev/sdxy
Para habilitar o dispositivo para paginação:
# swapon /dev/sdxy
Para habilitar essa partição swap na inicialização, adicione uma entrada ao /etc/fstab
:
UUID=UUID_dispositivo none swap defaults 0 0
sendo que UUID_dispositivo
é o UUID do espaço swap.
Veja: fstab para a sintaxe do arquivo
Ativação por systemd
O systemd ativa partições swap com base em dois mecanismos diferentes. Ambos são executáveis em . Os geradores são executados na inicialização e criam unidades systemd nativas para montagens. O primeiro, , lê o fstab para gerar unidades, incluindo uma unidade para swap. O segundo, inspeciona o disco raiz para gerar unidades. Ele opera somente nos discos GPT e pode identificar as partições swap pelo tipo GUID, consulte systemd (Português)#Montagem automática de partição GPT para obter mais informações.
Desabilitando swap
Para desabilitar um espaço swap específico:
# swapoff /dev/sdxy
Alternativamente, use a opção para desabilitar todos os espaços swap.
Como o swap é gerenciado pelo systemd, ele será ativado novamente na próxima inicialização do sistema. Para desabilitar a ativação automática do espaço de swap detectado permanentemente, execute para encontrar a unit responsável .swap e aplique mask.
Arquivo swap
Como uma alternativa para criar uma partição inteira, um arquivo swap oferece a capacidade de variar seu tamanho em execução, e é mais facilmente removido completamente. Isto pode ser especialmente desejável se o espaço em disco for precioso (por exemplo, um SSD de tamanho modesto).
Criação de arquivo swap
Para sistemas de arquivos "copy-on-write", como o Btrfs, primeiro crie um arquivo de tamanho zero, defina o atributo nele com chattr e certifique-se que a compressão está desabilitada:
# truncate -s 0 /swapfile # chattr +C /swapfile # btrfs property set /swapfile compression none
Veja Btrfs#Arquivo swap para mais informações.
Use fallocate
para criar um arquivo swap com o tamanho de sua escolha (M = Mebibytes, G = Gibibytes). Por exemplo, para criar um arquivo swap de 512 MiB:
# fallocate -l 512M /swapfile
Defina as permissões certas (um arquivo swap legível por todos é uma imensa vulnerabilidade local):
# chmod 600 /swapfile
Após criar o arquivo no tamanho correto, formate-o para swap:
# mkswap /swapfile
Ative o arquivo swap:
# swapon /swapfile
Finalmente, edite a configuração do fstab para adicionar uma entrada para o arquivo swap:
Para informações adicionais, veja fstab#Uso.
Remover arquivo swap
Para remover um arquivo swap, ele deve primeiro ser desligado:
# swapoff /swapfile # rm -f /swapfile
Por fim, remova a entrada relevante do /etc/fstab
.
systemd-swap
systemd-swap é um script para criar um espaço de swap híbrido a partir de swaps de zram, arquivos swap e partições swap. Não é um afiliado com o projeto systemd.
Instale o pacote . Defina NA seção Swap File Chunked do . Inicie/habilite o serviço .
Visite a página do autor no GitHub para mais informações e instalação da configuração recomendada.
Criptografia swap
Desempenho
As operações de swap geralmente são significativamente mais lentas do que acessar diretamente os dados na RAM. A desativação total da swap para melhorar o desempenho pode levar a uma degradação, pois diminui a memória disponível para caches VFS, causando E/S de disco mais frequente e dispendiosa.
Os valores de swap podem ser ajustados para ajudar no desempenho:
Swappiness
O parâmetro de sysctl para swappiness (isto é, a capacidade de realizar swap) representa a preferência (ou evitação) do kernel a cerca do espaço de swap. Swappiness pode ter um valor entre 0 e 100, o valor padrão é 60. Um valor baixo faz com que o kernel evite swap, um valor mais alto faz com que o kernel tente usar o espaço de swap. Sabe-se que usar um valor baixo em memória suficiente melhora a capacidade de resposta em muitos sistemas.
Para verificar o valor atual de swappiness:
$ sysctl vm.swappiness
Alternativamente, os arquivos /sys/fs/cgroup/memory/memory.swappiness
ou podem ser lido para obter o valor inteiro não tratado.
Para definir temporariamente o valor do swappiness:
# sysctl -w vm.swappiness=10
Para definir permanentemente o valor de swappiness, crie um arquivo de configuração sysctl.d(5). Por exemplo:
Para testar e mais sobre por que isso pode funcionar, dê uma olhada neste artigo.
Pressão de cache VFS
Outro parâmetro sysctl que afeta o desempenho da swap é , que controla a tendência do kernel para recuperar a memória que é usada para armazenamento em cache de caches VFS, versus cache de páginas e swap. Aumentar esse valor aumenta a taxa na qual os caches VFS são recuperados . Para mais informações, consulte a documentação do kernel Linux.
Prioridade
Se você tiver mais de um arquivo de swap ou partição de swap, considere atribuir um valor de prioridade (0 a 32767) para cada área de swap. O sistema usará áreas de swap de prioridade mais alta antes de usar áreas de swap de menor prioridade. Por exemplo, se você tiver um disco mais rápido () e um disco mais lento (), atribua uma prioridade mais alta à área de troca localizada no mais rápido dispositivo. Prioridades podem ser atribuídas em fstab através do parâmetro :
/dev/sda1 none swap defaults,pri=100 0 0 /dev/sdb2 none swap defaults,pri=10 0 0
Ou por meio do parâmetro de swapon:
# swapon --priority 100 /dev/sda1
Se duas ou mais áreas tiverem a mesma prioridade e for a prioridade mais alta disponível, as páginas serão alocadas em uma base round-robin entre elas.
Usando zswap ou zram
O zswap é um recurso de kernel do Linux que fornece um cache de write-back compactado para páginas do swap. Isso aumenta o desempenho e diminui o operações de E/S. ZRAM cria um arquivo swap compactado virtual na memória como alternativa a um arquivo swap no disco.
Distribuição
Não há necessidade de usar RAID por motivos de desempenho de swap. O kernel em si pode distribuir a troca em vários dispositivos, se você apenas der a mesma prioridade no arquivo /etc/fstab
. Consulte o The Software-RAID HOWTO para obter detalhes.