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: 30.374 ]

Por: Pedro em 11/07/2013


Introdução / Conceito / Memória RAM



Introdução

Olá a todos do Viva o Linux.

Venho hoje contribuir com o meu primeiro artigo, visando explicar este fascinante recurso da administração de memória e seu uso por muitas pessoas, que nem se dão conta do processo por trás do avanço nesta área.

E claro, o artigo visa introduzir o leitor iniciante e instigá-lo a continuar estudando sobre o mesmo, o gerenciamento de memória RAM no mundo GNU/Linux e a utilização da SWAP como alternativa à falta da mesma.

Incluí, também, um pouco sobre o processo de armazenagem do próprio HD, visando aumentar ainda mais o desempenho da SWAP.

Bom, sem mais delongas, espero que aproveitem. E boa leitura!

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

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


    Próxima página

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

Servidor Fedora 11 de maneira fácil e funcional

Acessando remotamente máquina Windows dentro de uma VPN através do Ubuntu

Configuração Linux (Debian) com mínimo de recursos e interface gráfica super leve

Restaurando o LILO com o Slackware 9.1 (HOWTO)

CUPS + Jasmine (gerenciador de impressões e relatórios de impressão)

  
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 izaias 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