Administrando Memória SWAP no GNU/Linux

px

Viso descrever a memória SWAP como alternativa à falta da memória RAM por tratar-se de um bem finito, cuja ausência interfere diretamente no sistema, podendo até mesmo travá-lo ou causar negação de serviços, dependendo da demanda de memória. E também, descrevo a configuração da tendência de uso da mesma.

[ Hits: 36.125 ]

Por: Pedro em 11/07/2013


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.
Linux: Administrando Memória SWAP no GNU/Linux

Fontes:
Página anterior    

Páginas do artigo
   1. Introdução / Conceito / Memória RAM
   2. Controlando o uso da SWAP
Outros artigos deste autor

MAC Flood! E agora?

Leitura recomendada

Pós-instalação do Fedora 19 (GNOME Shell)

Instalando Slackware "na marra"

Instalando placa wireless Intel 3945ABG no Debian

Instalar placa de rede wireless do notebook HP dv6636 no Ubuntu

Montar MP3 e pendrives USB automaticamente com Hotplug

  
Comentários
[1] Comentário enviado por MarceloTheodoro em 11/07/2013 - 08:29h

Muito bom :)
Se alguém tiver com problemas com isso, esses dias o pessoal explicou em um tópico ali no fórum como criar e usar um arquivo SWAP pra não ter a necessidade de se preocupar com re-particionamento numa máquina que já está configurada.






___________________________
Att, Marcelo Theodoro.

[2] Comentário enviado por removido em 11/07/2013 - 12:19h

Artigo muito bom, alem de ensinar como proceder com relação a SWAP, ainda tem uma introdução ao funcionamento da mesma, tudo em uma linguagem clara e objetiva... Meus parabéns!

[3] Comentário enviado por Fabio_Farias em 11/07/2013 - 16:31h

Ótimo artigo!
Parabéns!

[4] Comentário enviado por removido em 11/07/2013 - 16:33h

Meu comentário é no sentido de contribuir e não criticar o autor. O artigo apresenta SWAP como memória, um erro comum. SWAP não é memória, apenas a RAM é memória (neste contexto). Dados em SWAP estão latentes em estado de arquivo. SWAP é uma área de troca de dados entre a RAM e o DISCO que otimiza a RAM de modo que mais processos sejam executados enquanto outros estão latentes. Assim, onde se diz "SWAP como alternativa à falta da memória RAM por tratar-se de um bem finito" está o erro do artigo, pois a alternativa à falta de memória RAM é o UPGRADE de memória. SWAP é igual seguro de vida, é bom ter mas é melhor não utilizá-la. Enquanto a RAM típica funciona na casa dos nanosegundos o DISCO típico funciona na casa dos milisegundos. Entre essas grandezas há 3 dígitos ou sejam 1000 vezes de diferença na eficiência. Além disso, como disse SWAP é área para processos latentes não é possível tornar isso ganho de produtividade. No sentido das boas práticas SWAP é SEMPRE obrigatória em qualquer sistema, pois é um recurso de SEGURANÇA contra panes do sistema. No mais parabéns pelo artigo. KYETOY

[5] Comentário enviado por albfneto em 11/07/2013 - 21:59h

muito bom isso, favoritado.

Swap é arquivo de troca, é RAM disk.

ainda tem um outro jeito, que vc não citou,

a swap geralmente está na partição swap,

mas também pode ser feita na Raiz do micro,ou seja, um micro sem partição swap pode usar swap,

assim como o Cavalheiro indicou para uma usuária que não tinha espaço para fazer partição swap:

http://www.vivaolinux.com.br/topico/Linux-Basico/Como-eu-configuro-o-swap-no-terminal


[6] Comentário enviado por c4rl em 11/07/2013 - 23:57h

Gostei do artigo, é suscinto e direto ao ponto.

Gostaria de tomar a liberdade e acrescentar dois itens que a maioria desconhece:

1) Para instalar uma distribuição qualquer você NÃO precisa de swap.
2) A partir do kernel 2.6 swap em arquivo tem praticamente o mesmo desempenho que swap numa partição.


[7] Comentário enviado por removido em 12/07/2013 - 00:40h


[6] Comentário enviado por c4rl em 11/07/2013 - 23:57h:

Gostei do artigo, é suscinto e direto ao ponto.

Gostaria de tomar a liberdade e acrescentar dois itens que a maioria desconhece:

1) Para instalar uma distribuição qualquer você NÃO precisa de swap.
2) A partir do kernel 2.6 swap em arquivo tem praticamente o mesmo desempenho que swap numa partição.



Mas você tem note/netbook?

Quem tem, garante que precisa.

[8] Comentário enviado por px em 12/07/2013 - 06:39h

MarceloTheodoro, darkstein e Fabio_Farias obrigado pela leitura e criticas, não só por serem boas mas pelo incentivo. Obrigado a todos os demais do mesmo jeito, pois sem apontar os erros ou equívocos ninguém nunca acertaria, só não esculachem muito meu primeiro artigo :)

kyetoy:

SWAP é uma área de troca de dados entre a RAM e o DISCO que otimiza a RAM de modo que mais processos sejam executados enquanto outros estão latentes. Assim, onde se diz "SWAP como alternativa à falta da memória RAM por tratar-se de um bem finito" está o erro do artigo, pois a alternativa à falta de memória RAM é o UPGRADE de memória


Vai lá trocar o pente de memória com pc ligado, fazendo algo que "estorou a memória" e não se pode perder os dados, que são de um trabalho de messes de um funcionário descuidado que nunca fez backup (vulgo idiota, louco, sem apreço pelo seu emprego kk')

ou vai lá nos finas de 80 e 90 vender um rim pra comprar 64mb(existia? ...) de memória RAM a mais ou algo parecido, rsrsrs

Nessa linha de pensamento seria ideal usar só o cache do processador que e muiito superior a RAM e muiito mais caro e difícil de ser implementado(pelos transistores necessários para tal, fora a arquitetura pra fazer a carroça andar), ai que o disco ia sofrer mesmo pra acompanhar, inclusive ocorreu isso no passado um dos motivos de criarem a RAM e trocarem a arquitetura computacional, a RAM passa a servir de ponte entre o processador e o disco sincronizando-os com "maior" ""eficiência"".

O problema nem sempre é a velocidade, ainda mais num pc caseiro que foi o referido neste trecho que citou, o problema é tudo funcionar em sincronia sem muitas perdas de ciclos de clock e literalmente ter para onde correr em diversos casos, e evitar perdas de dados.

Um dos maiores motivos para utilizarmos o linux, estabilidade (mesmo usando 2gb de Swap a carroça não pode parar, nem perder dados) privacidade, segurança não é? ... "falta de vírus" (digamos maior imunidade), "ideia Open source" (você vê o código, modifica, distribui ...) ótimas comunidades para compartilharmos tudo isso (puxa saco kk') ....

SWAP é uma área de troca de dados entre a RAM e o DISCO


A RAM é uma "ponte" entre o processador e o disco, a MEMÓRIA Swap é uma """extensão(cache,etc como queira)""" da RAM!? oO, ou seja naturalmente a RAM já é uma ponte para o disco, como a Swap que está no disco seria uma "área de troca de dados entre a RAM e o DISCO"

as pontes viraram um viaduto, com ruas principais e secundárias, só pode...

meio confuso, mas espero que tenha entendido meu ponto de vista, espero mais comentários sobre essa questão.

albfneto

obrigado também pela leitura, só não entendi muito bem sua frase "Swap é arquivo de troca, é RAM disk" é uma referencia positiva ou negativa ao tema? não só isso, acho que você esta afirmando que a Swap é uma memoria estou certo? só pra não ter duvidas pois a afirmação esta muito compacta :) ahh não estou falando que esta certo ou errado só quero entender seu ponto de vista melhor

e realmente tinha a intenção de adicionar a Swap via arquivo, tem até aqui nos meus rascunhos, mais achei meio "desnecessário" pois o artigo foca mais na gerência de Swap e caches fixos, mais realmente deveria ter acrescentado, pois numa emergência tudo que de tempo para correr atrás dos erros é valido

Desculpem qualquer coisa cheguei do meu curso as 10:30 fiquei conversando aq em casa até tarde tbm, e to morrendo de sono, apesar de ter de verificar se meu script de iptables que estou construindo ta funcionando, malditos logs necessários ^^

se alguém tiver uma treplica destes comentários ficarei feliz em ler e conversar a respeito, e novamente desculpe se pareci faltar com educação em algum momento, pois sou meio cabeça dura, ainda mais com minhas opiniões em alguns assuntos, mas sempre estou aberto a reconhecer algum erro claro, não sou estupido para afirmar o contrário, basta "provar" (fazer o cabeça dura entender,rsrs) seu ponto de vista, fico por aqui até logo.

[9] Comentário enviado por albfneto em 12/07/2013 - 11:24h

Nem negativa, nem positiva, apenas um comentário, é só nomeclatura, inclusive na época do DOS, a "Swap" no DOS, se chamava RAMDISK.
Não se preucupe, ninguém ficou ofendido!
sobre ser chamada ou não de "Memória", a Swap, é uma questão só de nomeclatura, semântica: De fato é uma RAM, "Random Acess Memory", mas não é um dispositivo hardware de RAM, uma memória física, é uma memória virtual.
de fato de acordo com especialistas como o Irlandês Mel Gorman ("Understanding the Virtual Memory") e o Americano Andrew Tannenbaum (do Kernel Minix), a Swap é mesmo uma Memória.

[10] Comentário enviado por nicolas.cb em 12/07/2013 - 13:58h

Boa!

http://logdopinguim.blogspot.com.br

[11] Comentário enviado por px em 12/07/2013 - 15:43h


[9] Comentário enviado por albfneto em 12/07/2013 - 11:24h:

Nem negativa, nem positiva, apenas um comentário, é só nomeclatura, inclusive na época do DOS, a "Swap" no DOS, se chamava RAMDISK.
Não se preucupe, ninguém ficou ofendido!
sobre ser chamada ou não de "Memória", a Swap, é uma questão só de nomeclatura, semântica: De fato é uma RAM, "Random Acess Memory", mas não é um dispositivo hardware de RAM, uma memória física, é uma memória virtual.
de fato de acordo com especialistas como o Irlandês Mel Gorman ("Understanding the Virtual Memory") e o Americano Andrew Tannenbaum (do Kernel Minix), a Swap é mesmo uma Memória.


Agora entendi, realmente pode-se considerar como um tipo especial de memória, mesmo não sendo Hardware tipico para tal, obg pelos esclarecimentos.



[10] Comentário enviado por nicolas.cb em 12/07/2013 - 13:58h:

Boa!

http://logdopinguim.blogspot.com.br


valeu nicolas.cb

[12] Comentário enviado por renato_pacheco em 15/07/2013 - 08:33h

O artigo é legal, mas essa parada d q é recomendável criar uma swap com tamanho 2x maior q a memória RAM é uma falácia. Cada caso é um caso, pois vai depender do q vai utilizar no sistema (se é proxy, firewall, banco d dados etc.) e do tanto d memória RAM disponível.

[13] Comentário enviado por m4iir1c10 em 16/07/2013 - 16:04h

Muito bom o seu artigo, nota 10!!!!

Agora se me permite, gostaria de dividir umas ideias com voces sobre esse assunto.

1- Swap 2x o tamanho da RAM. Como o Renato Pacheco falou o tamanho da swap depende do tipo de uso do computador, agora oque muitos nao sabem e que se voce usa laptop o dobro da RAM para a SWAP e primordial porque sem o dobro da RAM voce nao consegue ter um sistema de hibernacao perfeito. Ao fechar a tampa do laptop dependendo da distro e dar adeus ao que voce estava trabalhando, porque se a sua SWAP nao tem espaco suficiente para armazenar oque a RAM esta armazenado durante o uso normal o seu linux vai travar e quando voce abrir o laptop denovo voce esta sem o X11 e nao tem acesso ao terminal e aquela tela preta vai ficar ali na sua frente para sempre ate voce pertar o botao de desligar e segurar ele, forcando a maquina a desligar e comprometendo o seu HD. Por isso eu digo se voce usar laptop nem pense em menor doque o dobro de SWAP. Eu tenho um Sony Vaio de 8GB de RAM e 16GB de Swap que para muitos e um desperdicio, porem se eu usar menos que 16GB um abraco funcao de hibernacao.

2- Digamos que voce ja instalou o seu linux e voce esqueceu de fazer a particao para swap ou voce nao sabia oque era e pulou o processo. Agora que voce tem um sistema ja rodando voce esta com medo de particionar o disco de modo errado e perder seus preciosos arquivos. Entao s solucao e inves de uma particao swap voce pode criar um arquivo swap. siga a receita:

Loge como root:
[code]
sudo su
[/code]

Crie o arquivo:
[code]
dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
[/code]
Sendo que
if=/dev/zero e uma arquivo de caracteres nulo para criacao de dispositivos [ Nao entendeu? so copia e confia em mim entao :) ]
of=/swapfile1 e o arquivo que voce esta criando
bs=1024 e o tamanho de cada bloco desse "dispositivo"
count=524288 e o tamanho da swap sendo criada, nesse caso 524288 e o resultado de 1024 x 512 (512Mb), caso voce quer 1GB entao e 1024 x 1024 = 1048576 e assim por diante...

Faz dele uma swap:
[code]
mkswap /swapfile1
[/code]

Modifique a permissao por seguranca:
[code]
chown root:root /swapfile1
chmod 0600 /swapfile1
[/code]

Ative a swap para uso imediato:
[code]
swapon /swapfile1
[/code]

Faz o seu computador lembrar do arquivo swap na proxima inicializacao:
[code]
vi /etc/fstab
[/code]

Coloque na ultima linha:
[code]
/swapfile1 swap swap defaults 0 0
[/code]

Ao reiniciar cheque que esta tudo como voce queria:
[code]
free -m
[/code]

Desculpe tomar o espaco do seu artigo mais como eu estava pensando em escrever sobre isso e encontrei o seu artigo, resolvi poupar me do esforco :D

[14] Comentário enviado por px em 17/07/2013 - 13:38h

Sobre o tamanho da Swap eu me referia aos portáteis que se utilização da hibernação e outros recursos caso a bateria acabe, e aos micros mais antigos, só quem já usou sabe realmente do que se trata, e não aos servidores, estes só devem recorrem a Swap em último caso, já os micros mais novos geralmente não precisam de uma Swap maior que 1gb, salvo estas exceções acima.

Ahh só um exemplo, aqui tenho só 4gb de ram, outro dia fui usar o wireshark pra tentar chegar perto do t50, e este engoliu meus 4gb e se não pauso o processo teria lambido a Swap toda tbm kkk' o volume de pacotes e muito grande para o wireshark analisar, e se não tivesse Swap oq será que aconteceria?? no minimo teria um congelamento e perderia os logs todos do programa, ahh no final consegui visualizar uns 5 milhões de pacotes!!! pra quem quiser testar ai os resultados da falta de Swap fica a dica! poste a experiência aqui depois

m4iir1c10 sem problemas, estava falando justamente sobre isto uns comentários acima, nos meus "rascunhos" havia um exemplo sobre o assunto da Swap assim (como arquivo, ou mesmo partição tardia), mais depois que vi já tava publicado :S, obg por acrescentar sua opinião e experiência vai servir para tirar dúvidas de várias pessoas e passar a ideia pra frente, vlw.

---
Atenciosamente, Pedro.

[15] Comentário enviado por andre227 em 19/07/2013 - 10:30h

Belo artigo, PARABÉNS! inclusive essa foi uma dúvida que me bateu recentemente. Eu usava linux à anos atras 2005 ~ 2009 e nessa época os recursos de hardware eram bastante limitados. Fui instalar o linux esses dias e depois de tanto tempo me bateu uma dúvida: "Nossa será que ainda hoje é necessário a criação de partições swap?", como a instalação do Ubuntu criou automatico eu deixei mas se eu fosse particionar o disco de forma manual eu não iria criar. Qual a sua opinião sobre isso rodando o linux em máquinas com mais de 4GB de RAM (Se tratando é claro para uso comum ou até mesmo para fins profissionais (programadores por exemplo), não para o caso de servidores ou firewalls)?

Abraços!

[16] Comentário enviado por albfneto em 20/07/2013 - 14:25h

Olha eu uso swap pequena, mas meus micros só usam a swap quando eu faço cálculos químicos ou boinc, computação distribuída.
e são micros com 8 e 16 Giga de RAM respectivamente.

[17] Comentário enviado por px em 21/07/2013 - 15:51h

Andre isso vai depender muito, por exemplo em notebooks ou portáteis é indispensável a criação pois sem ela a hibernação e outros recursos do gênero não funcionariam direito, agora para máquinas comuns de uso diário com 4GB RAM ou mais, a Swap pode ser pequena 512MB à 1GB basta.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts