Quem não tem RAM caça com SWAP

Hoje em dia é raro ver alguém se queixar de pouca memória no computador para fazer suas atividades diárias, mas quem costuma fazer testes com programas novos, principalmente com multimídia e virtualização eventualmente precisa um pouco mais de memória só para fazer aquele “testezinho rápido” e para isso não compensa desembolsar grana para memória extra.

Imagine que o seu sistema já está instalado e “funcionando redondo” e derrepente surge aquela necessidade de mais memória! Se não há grana para mais memória real o jeito é apelar para o SWAP, mas como eu já disse o seu sistema está funcionando bem e redimensionar a partição do swap pode não ser tão fácil quanto se imagina devido a forma como os sistemas de arquivos são projetados no Linux.

Apesar do “Gparted” (ferramenta gráfica para particionamento) dizer que pode redimensionar partições na boa, eu já perdi dados com versões mais antigas deste software e, por não ter mais tempo de testar para ver se melhorou, acabei deixando de acreditar nele para esta atividade. Partições Windows são bem mais simples e podem ser redimensionadas com segurança mas para Linux não espere a mesma garantia.

Partições baseadas em LVM (Gerenciador de Volumes Lógicos) costumam ser um pouco (só um pouco) mais fáceis de redimensionar mas o conceito por trás dele é meio chato e complicado ao ponto de se estar trocando seis por meia dúzia e duvido que você tenha usado isso na instalação do seu sistema – ninguém usa, a não ser em servidores ou em casos muitos específicos -. Particularmente eu faria um backup dos dados antes de tentar qualquer coisa e como minha fé é muito baixa neste tipo de ação eu partiria para uma nova instalação – isso é mais rápido e mais prático.

Se você acha que as aplicações estão lentas por falta de memória, não se iluda achando que com um SWAP maior as coisas vão melhorar… coloque mais RAM, isso sim melhorará a performance (um pouco). Se sua aplicação precisa de mais memória para alguns testes e não dá pra desembolsar a grana (mesmo com o 13º na conta!) e também não pode reinstalar o sistema agora então é possível criar mais SWAP “emergencial” sem particionar o disco novamente com o procedimento que será mostrado a seguir, mas antes de vê-lo é importante considerar a questão do tamanho do SWAP.

Tamanho do SWAP

Existem várias filosofias e teorias a respeito de tamanho ideal deste espaço, até algum tempo atrás dizia-se que era para ser no máximo 128MB, mas havia quem afirmava a necessidade de estar entre o RAM e 2xRAM, ou seja, se o computador tem 512MB de RAM então o SWAP deveria ter entre 512MB e 1024MB, entre outras. Estas afirmações foram “verdades” em suas épocas quando os PCs com 128MB de RAM eram algo raro e o Kernel Linux estava engatinhando, mas hoje em dia ninguém usa tanto esse conceito devido ao barateamento das memórias e também devido a inutilidade deste espaço em vários casos.

Por exemplo vou dar dois casos práticos que convivo todos os dias:

Caso 1 – Desktop

Meu desktop em casa tem 2GB de RAM… por que eu usaria 2GB de SWAP (ou mesmo 4GB) se no meu dia-a-dia ele não passa de 100MB de uso? Claro que não colocaria um SWAP de apenas 100MB pois estaria correndo o risco de ver minhas aplicações não rodarem em determinado momento por falta de memória, mas 2GB seria um exagero e até um desperdício no meu humilde “disquinho” de 120GB.

Caso 2 – Servidor

Em um outro exemplo, um dos servidores lá do órgão que trabalho… tem 8GB de RAM, imagine reservar um swap de 8GB (ou 16GB)?! Pra que isso tudo se ele quando muito usa apenas 300MB do SWAP? Se o servidor precisar de mais memória pode ter certeza que não será o SWAP vai atrapalhar mais do que colaborar.

A prática leva a perfeição

Vê-se nestes dois exemplos que nem a regra do 128MB fixos, e nem mesmo a de usar 2xRAM não se enquadram bem. Então que valor usar?

Não forma melhor do que instalar o sistema de testes e verificar na prática. Use o seu sistema por por algumas horas abrindo e fechando as suas aplicações, inclusive abrindo várias vezes e simultaneamente suas aplicações principais e depois veja o quanto de SWAP foi usado (use o comando “free” para isso). Jogue esse valor um pouco para cima e pronto… esse é o valor “ideal” para o seu SWAP.

É claro que com o passar do tempo e o costume você terá alguns valores preferidos para o tamanho do seu SWAP o que dispensará fazer instalações de teste, mas isso virá com o tempo.

O Mal necessário

O uso exagerado do SWAP não deve ser algo rotineiro pois degrada bastante o sistema. Pelo contrário seu uso deveria, em alguns casos, ser considerado um aviso de que você precisa comprar mais RAM. Claro que em eventos raros ele deve ser usado (é para isso que ele existe). Por exemplo eu disse que em média meu SWAP tem 100MB de uso, mas quando eu faço testes com várias máquinas virtuais, ou com edição de vídeo, eu preciso de mais do que apenas os 2GB de RAM então preciso usar mais memória (ai sim vem a necessidade do swap), mas se este uso começar a ser rotineiro o melhor a fazer vai ser gastar alguns reais em memória de verdade.

Na prática o meu SWAP tem 1GB, mas certa vez precisei de um pouco mais de memória e não tinha mais disponível e também não dava para reinstalar o sistema só para uma tarefa eventual. Solução? Criar um SWAP adicional.

Criando um arquivo para swap adicional de 512MB

root@INFO1015:/mnt/sda4# dd bs=512M count=1 if=/dev/zero of=novoswap
1+0 registros entrando
1+0 registros saindo
536870912 bytes (537 MB) copiados, 12,4389 segundo, 43,2 MB/s

Formatando o arquivo como um dispositivo de bloco apropriado para SWAP

root@INFO1015:/mnt/sda4# mkswap novoswap
Configurando área de troca versão 1, tamanho = 536866 kB
sem rótulo, UUID=77d05100-d224-4ed2-a317-75fb4160bbcc

Ativando o Swap

root@INFO1015:/mnt/sda4# swapon novoswap

Verificando o tamanho da memória

root@INFO1015:/mnt/sda4# $ free -m
total used free shared buffers cached
Mem: 1011 995 15 0 26 242
-/+ buffers/cache: 725 285
Swap: 1539 56 1483
wbraga@INFO1015:/mnt/sda4$

Verificando se está tudo em ordem

Só a título de curiosidade antes de executar o “swapon” eu executei o comando “free” para ver como estava o meu uso de SWAP (última linha) e ele se apresentou assim:
Swap: 1027 56 971
Depois do swapon ficou assim:
Swap: 1539 56 1483
Note que houve um aumento 512MB (conforme esperado).

Veja ainda que todo o procedimento é feito com usuário root (note a # no prompt de comandos). Você pode abrir um terminal com o seu usuário padrão e depois usar o comando “sudo bash” para poder executar comandos como root no Ubuntu.

Ativando o novo SWAP no boot

E também: Após o reboot este swap será desativado. Para ativá-lo novamente basta executar o “swapon”, já que o arquivo já esta criado e formatado. Se quiser que ele eja ativado automaticamente durante o boot então você deverá editar o arquivo /etc/fstab (como root) e acrescentar a seguinte linha no seu final:
/mnt/sda4/novoswap none swap sw

Note que é necessário indicar o caminho completo onde o arquivo foi criado, para que o sistema possa encontrar e monta-lo corretamente. A partir do seu próximo reboot o novo swap será sempre ativado.

3 comentários em “Quem não tem RAM caça com SWAP”

  1. Parabéns pelo ensaio e pelo pragmatismo sem ser utilitarista. Uma pergunta: quando colocamos mais memória num sistema que antes possuia 512, é mais saudável reinstalar o sistema ou basta deixar coo está? Passei de 512 para 2 giga (DDR1) no Ubuntu 9.04 Mas não notei grande diferença.

    Grato

    Arturo

  2. @Arturo Fatturi ,

    Não é preciso reinstalar o sistema. Memória é um dispositivo plug’n play. Realmente não haverá diferença de performance se suas aplicações não costumam usar muita memória (e, consequentemente, swap), ou mesmo se os programas que você usar requerer o acesso a inúmeras bibliotecas e arquivos em disco o que o fará esperar por I/O de disco da mesma forma.

    Obrigado pela visita.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.