SWAP
Conceito de SWAP
Acabou a RAM! E agora?
Bem, a memória SWAP surgiu, basicamente, para estender a capacidade de computadores com memórias RAM muitas vezes limitadas em micros antigos, sendo usada hoje em dia mais como válvula de escape, caso a memória principal acabe.
Como era de se esperar, sendo um recurso finito de hardware muito limitado e caro há décadas atrás para ser utilizado em demasia, então, teve-se a ideia de armazenar os dados da memória no HD, aumentando assim, a capacidade do computador em responder a processos, mesmo que ela acabe ou socorrendo o sistema nessas situações, evitando assim, uma negação de serviço pela escassez de recursos.
No GNU/Linux a memória SWAP é quase obrigatória, tendo em vista que este S.O. sustenta servidores com grandes fluxos diários de dados. Uma falha de memória ou ausência da mesma, poderia acarretar em custos para empresas ou consequências mais graves, se for uma máquina firewall ou proxy.
Sendo assim, essa importante peça tem sua partição separada das demais, assim como a /home e /root, temos a /swap.
Seu formato é próprio para uso do sistema e consiste em escrever e ler dados, sem que seja necessária intervenção do usuário para tal tarefa.
Memória RAM no GNU/Linux
O GNU/Linux possui um sistema de gerenciamento de memória RAM muito superior a diversos sistemas, isto porque ele aproveita a memória que não está sendo usada por processos ativos e a usa para cache, evitando assim, o uso do HD cujo tempo de leitura e escrita é bem inferior ao da memória RAM.
Este cache, nada mais é do que os arquivos dos processos que estavam ativos e ligados aos mesmos para sua execução, como bibliotecas e demais códigos.
Temos também, situações em que este tipo de estratégia visa aumentar o desempenho de navegadores, usando a pasta temporária na própria memória RAM, evitando novamente, a consulta das imagens no lento HD, ou mesmo, reduzindo o impacto da navegação da rede.
Há diversos proxys que agem da mesma forma, tanto para controlar redes como para evitar o uso da mesma, aumentado assim sua segurança.
Destaco também, que o sistema armazena a memória SWAP em blocos de processamento, cada processo fica em um bloco o mais próximo possível do outro, pertencente a este mesmo processo, tudo para diminuir e aperfeiçoar o tempo de resposta e uso da memória, sendo que, assim que este processo terminar, outro terá prioridade para ocupar este lugar sobre esta memória, sendo SWAP ou RAM.
Também há um tipo peculiar de memória chamado buffer que está relacionado aos dados de localização de uma informação em disco. E esse buffer fica alocado em memória, claro, numa situação de uso extremo do disco, isso acelera e muito o processo de cópia de dados do disco para a RAM e vice e versa.
Controlando o uso da SWAP
Finalmente, vamos por a mão na massa, partindo do ponto de que esteja numa distribuição com o kernel 2.6 ou superior, você pode configurar o comportamento do sistema em relação à memória SWAP através de um parâmetro do kernel, no arquivo "/proc/sys/vm/swappiness".
Este arquivo contém um número de 0 a 100, que determina a predisposição do sistema a usar SWAP. Um número baixo faz com que ele deixe para usar SWAP apenas em situações extremas (para micros com muita RAM), enquanto um número mais 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 ou mais, 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 há 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
Especificando valor permanente via sysctl.conf
Acesse o arquivo em "/etc/sysctl.conf" e modifique a linha correspondente a "vm.swappiness", com o valor da SWAP de 0 (uso em falta de memória) a 100 (uso forçado da SWAP):
# Tweak those values to alter disk syncing and swap behavior.
#vm.vfs_cache_pressure = 100
#vm.laptop_mode = 0
vm.swappiness = 10
Como podem ver, no meu caso deixei como 10, sendo que este micro possui 4 GB de memória RAM, poderia estar como 0, mas como lido com editores gráficos, e às vezes deixo muitas coisas juntas, mantenho este número para o sistema ter onde correr em caso de emergência e evitar perdas de dados.
Lembre-se que a RAM é utilizada para cache para aprimorar o desempenho e, muitas vezes, há tarefas longas para serem executadas dependentes de cache da RAM ou do próprio HD.
Pode ser usado o comando:
# sysctl vm.swappiness=10
Como alternativa, caso não goste de editar os arquivos manualmente, mas lembre-se de reiniciar o sistema para pôr em prática a configuração, ou caso queira, pode montar e desmontar sua SWAP com os comandos:
# swapoff -a
# swapon -a
Aconselho a fazer este procedimento, caso sua partição SWAP não esteja sem uso, pois caso sua memória SWAP esteja com arquivos importantes, podem haver perdas ou até travamento do sistema, pelo fato dos comandos desativarem e ativarem a SWAP, limpado-a no processo.
Observação: o uso de uma partição SWAP, mesmo que seja de 512 MB para uso em casos de falta de memória é recomendado, principalmente para as máquinas usadas em aplicações pesadas, como edição multimídia e servidores.
Claro que em situações de fartura, digamos a partir de 1 GB, a partição de SWAP pode ter uns 256 a 512MB reservados.
Nos casos de máquinas que possuam menos de 512 MB, recomendo o uso de SWAP com tamanho a partir de 2X o valor da memória RAM, para que o sistema tenha para onde correr no caso de falta de memória física, já que na falta de memória RAM para os aplicativos e a ausência de uma partição SWAP, o sistema não terá para onde recorrer e os programas começarão a serem fechados por falta de memória.
Na pior das hipóteses, o travamento do sistema nestas condições é inevitável.