Administrando a memória swap

Você pode acompanhar o uso de memória do sistema através do comando “free” que exibe um relatório de quanta memória (física e swap) está sendo usada e quanto ainda está disponível.

Um recurso que vem bem a calhar é que você pode criar, a qualquer momento, um arquivo de memória swap temporário, usando o espaço livre do HD. Isso vai ajudar bastante no dia em que você estiver trabalhando com uma partição swap pequena e precisar editar um vídeo ou uma animação em 3D pesada :).

Para isso, basta usar os comandos abaixo:

# dd if=/dev/zero of=/swap bs=1024 count=131070
# mkswap /swap
# swapon /swap

Substitua o número 131070 pela quantidade de memória swap desejada, em kbytes. 131070 são 128 MB, mas não é preciso usar um número exato, você pode usar “250000”, por exemplo. O arquivo temporário é desativado automaticamente ao reiniciar o micro, mas você pode fazê-lo a qualquer momento usando os comandos:

# swapoff /swap
# rmdir /swap

O Linux tem um comportamento particular ao lidar com falta de memória. Numa situação de fartura, ao ter, por exemplo, 512 MB de RAM onde apenas 100 MB estão ocupados, ele passa a utilizar a maior parte da memória disponível como cache de disco e arquivos. Isso melhora muito o desempenho do sistema, pois tanto arquivos recentemente acessados, quanto arquivos com uma grande chance de serem requisitados em seguida já estarão carregados na memória e não precisarão ser lidos no HD, que é centenas de vezes mais lento.

Conforme mais e mais memória física vai sendo ocupada, o sistema vai abrindo mão do cache de disco para liberar memória para os aplicativos. Com o passar o tempo, alguns dados relacionados a programas que estão ociosos a muito tempo começam a lentamente serem movidos para a memória swap, fazendo com que o sistema recupere parte do espaço e volte a fazer cache de disco. O desempenho volta a melhorar. Esta é uma tarefa que o Linux desempenha com muita competência, pelo menos enquanto houver memória swap disponível…

Se você continua abrindo programas e até mesmo a memória swap comece a acabar, o sistema vai abrir mão primeiro do cache de disco e depois começará a limitar a memória utilizada pelos aplicativos. Com isto o sistema começará a ficar cada vez mais lento, pois o objetivo passa ser “sobreviver”, ou seja, continuar abrindo os programas solicitados. Isto vai continuar até o limite extremo, quando finalmente você receberá uma mensagem de falta de memória e terá que começar a fechar programas.

Tudo isso pode ser acompanhado usando o “free“, que mostra com exatidão a memória física e swap ocupadas e quanto de memória está sendo destinada ao cache de disco.

No screenshot abaixo temos uma situação em que o sistema começa a ficar lento.

Temos aqui 256 MB de RAM e mais 256 MB de swap e um batalhão de programas abertos. Veja que a política de “selecionar os programas mais importantes” já ocupou toda a memória swap, deixando apenas 72 KB livres. Ainda temos quase 80 MB de memória física que estão sendo usados pelo cache de disco, e apenas mais 5 MB realmente livres. Ou seja, estamos próximos do ponto de saturação em que o sistema desiste de fazer cache de disco e começa a restringir o uso de memória dos programas; o Athlon XP está prestes a começar a virar uma carroça. Hora de criar uma memória swap temporária com os comandos acima.

Moral da história: para ter um bom desempenho você precisa ter de preferência muita memória RAM ou, pelo menos, uma quantidade suficiente de memória RAM combinada com uma partição swap de tamanho generoso. Se você tem um HD de boa capacidade, não faz mal reservar 1 ou 2 GB para a partição swap.

Prefira sempre ter uma partição swap maior do que usar o arquivo temporário, pois a partição swap é sempre mais rápida, por utilizar um sistema de arquivos próprio, otimizado para a tarefa.

Outra polêmica é com relação à real necessidade de usar uma partição ou arquivo de swap em micros com 512 MB de RAM, que são suficientes para a maioria das tarefas. Lembre-se de que, embora todos os manuais digam para criar uma partição swap durante a instalação do sistema, ela não é obrigatória.

Um dos defensores da idéia de que é sempre importante usar uma partição swap, independentemente da quantidade de memória RAM física que esteja disponível, é Andrew Morton, o próprio mantenedor do Kernel 2.6. Numa discussão em 2004 na lista de desenvolvimento do Kernel, ele concluiu uma mensagem com vários argumentos técnicos com a frase:

“Vou colocar os dedos nos ouvidos e cantar ‘la la la’ enquanto existir gente me dizendo ‘Desabilitei a memória swap e isso não deu o resultado que esperava’.”

A moral da história é que, por contraditório que possa parecer, o sistema passa a utilizar a memória virtual apenas em situações onde isso vai resultar em ganhos de desempenho. Mantendo mais memória RAM livre, novos programas carregam mais rápido e o sistema tem como fazer cache de disco.

No Kernel 2.6 estes algoritmos foram bastante refinados. Num micro com 512 MB de RAM, você notará que o sistema geralmente só começa a fazer swap depois que mais da metade da memória RAM está ocupada e, mesmo assim, movendo para ela apenas bibliotecas e componentes do sistema de uso muito esporádico. O uso do swap vai crescendo apenas conforme realmente existe necessidade.

Ainda assim (ao usar uma distribuição com o Kernel 2.6), você pode configurar o comportamento do sistema em relação à memória swap através de um parâmetro do Kernel, definido através do arquivo “/proc/sys/vm/swappiness”. Este arquivo contém um número de 0 a 100, que determina a predisposição do sistema para usar swap. Um número baixo faz com que ele deixe para usar swap apenas em situações extremas (configuração adequada a micros com muita RAM), enquanto um número alto faz com que ele use mais swap, o que mantém mais memória RAM livre para uso do cache de disco, melhorando o desempenho em micros com pouca memória.

Se você tem um micro com 1 GB de RAM e quer que o sistema quase nunca use swap, use:

# echo “20” > /proc/sys/vm/swappiness

Em micros com 256 MB ou menos, aumentar o uso de swap mantém mais memória disponível para abrir novos aplicativos e fazer cache de disco. O programa que está sendo usado no momento e novos programas abertos ficam mais rápidos mas, em troca, programas minimizados a muito tempo são movidos para a swap e demoram mais para responder quando reativados. Para aumentar o uso de swap, use:

# echo “80” > /proc/sys/vm/swappiness

Para tornar a alteração definitiva, adicione o comando em algum arquivo de inicialização do sistema, como o “/etc/rc.d/rc.local” ou “/etc/init.d/bootmisc.sh”.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X