terça-feira, 20 de setembro de 2011

Partição swap? Não, obrigado.

Tem algo da história dos 5 macacos o uso de uma partição exclusiva para swap em desktops. Ainda mais em desktops minimamente atuais, com quantidade de RAM na casa dos gigabytes.

O que não é muito difundido entre os usuários Linux é que o kernel, bem como as ferramentas de apoio (particularmente os programas da suíte util-linux), suporta o uso de um (ou mais) arquivo de swap. Parte deste desconhecimento tem ligação com o fato de nenhuma distribuição oferecer como opção durante a instalação o uso do arquivo de swap ao invés da partição.

A partição swap só traz complexidade desnecessária aos instaladores e não é facilmente redimensionável. Com o arquivo, você tem uma partição a menos (KISS, não?) e pode redimensionar o arquivo com facilidade.

Pelo aspecto teórico, dirão que a partição é mais rápida. A minha resposta é: que seja. Não faz diferença num desktop. Pode fazer num grande servidor, mas não num desktop.

Para usar o arquivo, instale seu Linux sem partição swap. Depois:

# dd if=/dev/zero of=/swapfile bs=1M count=512
# chmod 600 /swapfile
# mkswap /swapfile

("count=" define o tamanho em MiB)

Edite o fstab

# nano /etc/fstab

e adicione no final:

/swapfile    none    swap    sw    0    0

Reinicie ou execute swapon -a como root para ativar na hora o arquivo.

E considere a possibilidade de não usar swap nenhuma se tiver bastante memória. Com 4GB ou mais, provavelmente você não precise. Ignore as caveiras e as mensagens aterrorizantes que algumas distribuições colocam em seus instaladores quando você não cria uma partição swap. Eles são muito escandalosos...

[Atualização - 18/07/2016] Infelizmente o kernel não usa o sistema de arquivos e acessa diretamente os blocos que compreendem arquivos de swap. Por isso não podemos usar a ferramenta fallocate para pré-alocar espaço, que seria mais eficiente e robusto. Está documentado na man page de swapon. É uma tremenda limitação. Torçamos para que algum dia seja resolvida.

3 comentários:

  1. Tem uma outra questão que quase ninguém aborda, se o cara tiver apenas um HD, e criar uma partição junto com a instalação do sistema, ao utilizar o SWAP, mesmo que seja minimo, vai ser mais dados que o disco terá que trabalhar/trafegar, se você for abrir um programa no mesmo momento em que o kernel está utilizando o swap por qualquer motivo, vai cair pela metade no mínimo o desempenho do disco, sem contar o espaço ocupado. Em alguns casos eu nao uso nada de Swap, e tento instalar o máximo de RAM que puder, assim o kernel gerencia toda a memoria ram e larga o meu disco em paz.

    ResponderExcluir
  2. O Blog do Diolinux orienta a usar o zram, que é só instalar:
    sudo apt-get install zram-config

    Já li comentários na Internet que o ubuntu 17.04 irá utilizar arquivos de swap ao invés de partição swap.

    ResponderExcluir
    Respostas
    1. Vi a notícia. Parabéns para o time do Ubuntu! Sinceramente, no entanto, não estou nem aí para swap. Se for o caso, instalo mais memória e durmo tranquilo.

      zram é um dispositivo de bloco virtual que fica na RAM, tipo um tmpfs. Existe uma ferramenta na suíte util-linux só para lidar com ele: zramctl (esse pacote zram-config provavelmente deve ser uma maquinaria em shell, python, etc, que usa-o). O segredo, para fazer sentido seu uso para swap, é ser comprimido. São suportados dois algoritmos leves, LZO e LZ4.

      Então temos isto: em situação de pressão de memória, estaremos escrevendo mais dados na memória, porém de forma comprimida.

      No final de tudo, um grande meeehhh. Eu queria que a limitação que cito no post fosse resolvida: que arquivos de swap fossem acessados passando pelo driver do sistema de arquivos, como acontece no Windows. Isso sim seria bastante útil.

      Excluir