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.

Status de tradução: Esse artigo é uma tradução de Swap. Data da última tradução: 2020-04-09. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

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).

Atenção: Btrfs possui suporte a arquivo swap com limitações desde a versão 5.0 do kernel Linux. Veja Btrfs#Arquivo swap para mais informações.

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

Veja dm-crypt/Swap criptografada.

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.

gollark: Ah, they called them "visual compute accelerators" or something.
gollark: It's not "extra cores". It's basically a separate device.
gollark: I don't know why.
gollark: There actually *is* an independent computer on a PCIe card thing.
gollark: https://i.ytimg.com/vi/PrXwe21biJo/maxresdefault.jpg
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.