Eu não me conformava que o swap sempre aparecia com 0 de uso, quando eu rodava
o 'free'. Então fiz esse script que segue abaixo, pra rodar de cinco em cinco
minutos no meu cron, gravando a saída do free, pra saber se realmente o swap
nunca é usado.
Acontece que nessas máquinas atuais, com muita memória, o swap fica à toa,
mesmo. Pelo menos em desktops e notebooks isso acontece. Eu não testei isso em
servidores, e nem aconselho. Mas meu notebook atual, com 2GB de memória, parece
que não usa swap pra nada. E as memórias caíram tanto de preço, veja aqui
http://www.boadica.com.br/query04.asp?ClasseProdutoX=3&CodCategoriaX=14&XT=9&XG=5.
No Rio se compra 1GB de ddr2 a partir de R$ 36,00.
Existem coisas que a gente faz por tabu, sem precisar de verdade. Isso
desperta a minha curiosidade. Quantas vezes eu já vi, até recentemente,
alguém em lista de discussão ou em fórum, aconselhando a particionar o
disco deixando um swap de tamanho igual à memória ram? Ou dizendo que o
particionamento mínimo pra um sistema GNU/Linux é um sistema de arquivos
raiz e um swap? Talvez já tenha sido assim. Mas hoje em dia?...
Então o script rodou durante um mês, gravando meu uso típico do notebook,
e agora tenho um arquivo texto de ~3300 monótonas linhas, todas mais ou
menos assim:
As medidas entre a data, no começo da linha e o Swap usado são só assessórias,
pra dar uma idéia do estado da máquina. O importante mesmo é o uso do Swap.
O uso de swap é sempre 0. Confesso que o resultado não me causou muita
surpresa. Mas confirmou a idéia. Próximo passo é um 'swapoff /dev/sda2',
e depois reformatar com reiserfs. Essa pesquisa toda nem foi tanto pelo
espaço em disco recuperado, mas mais pelo particionamento. Uma partição
primária livre é sempre legal. E pra deixarmos de fazer as coisas por tabu:
é melhor usar a cabeça.
Quem quiser cópia do arquivo completo é só pedir.
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Opinião dos Leitores
joao cosme
25 Jun 2008, 11:41
Resumindo tudo: SWAP é coisa de pobre!!!
Entrou na SWAP amigão, compre memória!
Eduardo Bacchi Kienetz
05 Jun 2008, 10:48
Em desktops até pode ser que o swap seja mais usado (mas não parece), entretanto dificilmente o swap terá mais de 256Mb em uso. Ou seja, 256mb de swap é suficiente. 2 x a memória RAM é loucura/desperdício.
Leandro Santiago
04 Jun 2008, 18:44
(ainda não li todos os comentários)
O problema é que uma máquina sem swap não "hiberna" (entra em suspend, no linux).
O que acontece quando hibernamos a máquina? Copiamos todo o conteúdo da memória principal para o disco. Que disco? A partição swap. Aí depois é só copiar da swap para a memória. E este processo é muito mais rápido que um boot completo.
Porque duas vezes a RAM?
Imagine uma máquina com X MB de RAM. Vamos supor que ela esteja utilizando toda a RAM mais um pouco da swap, correspondente a 1/2*X. Ao entrar em suspend, é copiado X+1/2XMB para a swap. Assim, o ideal é que a swap tenha o dobro do tamanho da memória principal.
Mas nada o impede de desligá-la. O inconveniente é que, quando acabar a memória, a máquina irá simplesmente travar ;-)
Pedro Henrique Matheus da Costa Ferreira
04 Jun 2008, 17:28
Opa vi a dica não pude deixar de comentar.
Tenho "algumas" (Cinco maquinas) com Linux, e em 3 delas o Swap é sempre utilizado,
nunca cheguei a utilizar o total de swap.
As maquinas tem entre 4 e 8 Gigabytes de Ram, a que mais utiliza Swap é uma que roda
o VmWare com duas maquinas virtuais, a segunda que utiliza mais swap é o servidor de
e-mail, que em carga total chega a utilizar 1Gb de swap, logo depois voltando ao
normal.
Tambem achei interessante o fato de você comentar sobre as partições, o Swap não
precisa estar em uma partição primaria, pode estar em uma partição extendida, ou
mesmo utilizando-se da mesma tática do Windows, criando um arquivo para Swap dentro
da arvore de diretórios, tendo a liberdade alterar o tamanho do arquivo de paginação
a qualquer momento.
Paulo Almeida
04 Jun 2008, 17:12
Puts, e eu que fazia backups no meu espaço de Swap =(
Alex
04 Jun 2008, 13:54
Tens uns camaradas aqui completamente loucos ?? Ou eu que to viajando, mas entendi que reclamaram do fato do Linux nao usar o Swap. E falando bem do BSD por usar o Swap mesmo sem necessidade ???
Quanto menos usar SWAP melhor... qual a vantagem minima que se tenha em usar Swap a nao ser quando for obrigatoriamente necessario ???
Tem que ter Swap, mas nunca configuro mais que 512Mb, afinal tenho 2GB de RAM e nao faco uso pesado de virtualizacao, multiplos usuarios simultaneos ou mesmo hibernacao...
Mas cada louco com sua loucura...
Antônio
03 Jun 2008, 23:42
Já que o pessoal comentou, vale pra referência estatística.
Depois que eu coloquei i giga de ram, nunca mais usei swap.
Mas já tentei fazer a máquina hibernar, e não consigo... nem suspender a máquina dá certo...
Uma dica bem explicadinha sobre isso vinha bem a calhar, né?
Marduk
03 Jun 2008, 11:15
Pra q usar o step do meu carro ? Tenho o carro há anos e nunca troquei o pneu ..
Vou jogar fora, já q pneu é barato :)
Jean Ferri
03 Jun 2008, 11:00
O swap é feito para não ser utilizado, pois ele degrada a performance do sistema por ser uma memória virtual feita em disco rígido, na verdade a memória virtual é a soma da memória RAM mais o swap.
Ele geralmente deve ser configurado, mas somente vai ser utilizado em alguns casos, onde em algum momento um processo exceda o limite de memória e use o swap, evitando erros de endereçamento e, consequentemente, o travamento do sistema.
Essa história de que o swap deve ter o dobro da memória RAM é lenda. Você deve configurá-lo para o tipo de uso do sistema (estação, servidor, etc.) e o tipo de aplicação que irá rodar. No geral, entre 512MB e 1GB é suficiente.
Helvécio
03 Jun 2008, 10:46
Bruno,
Parabéns por levantar essa dúvida. Estamos acostumados a obedecer o manual sem ponderar a aplicação.
Pelo seu texto e pelos comentários percebe-se que o formato ideal do swap varia conforme a utilidade do micro (servidor, desktop, notebook, etc). Não existe uma configuração correta, mas formatos diferentes conforme o objetivo do
micro.
Abraços
Carlos
03 Jun 2008, 09:19
- Pra quê swap?
1) Para hibernar e suspender
2) Para rodar máquinas virtuais
[ ]s
Benone Bitencourt
03 Jun 2008, 09:12
Caros,
Usar Linuxsem swap é como usar o Windows sem arquivo de paginação se acabar a memória a máquina começa a trancar, veja exemplo abaixo de servidor:
[root@dbpoa09 ~]# free -m
total used free shared buffers cached
Mem: 4054 4034 19 0 25 3141
-/+ buffers/cache: 867 3186
Swap: 1027 702 324
Esse server tem 4GB de ram e está usando 702MB de swap. Agora vocês vão dizer claro é um servidor, mas a realidade é como o colega Felipe falou depende do uso, mas independente é melhor manter pelo menos um arquivo mínimo de swap, não precisa ser partição e redimensionar como necessário em desktops e notebook, no meu caso sempre uso swap inclusive no meu notebook, pois utilizo muitas máquinas virtuais para fazer laboratório e não há memória que chegue para isso em resumo, não há necessidade da partição para uso doméstico, mas crie um arquivo como na dica do Scoob, caso comece a jogar algo muito pesado, virtualizar, ou seja mude seus hábitos de uso, basta utilizar um arquivo de swap maior.
O free deixa muito a desejar neste ponto de baseline, utilize o sa para gerar relatórios você pode personalizar com scritps, normalmente ele já está rodando, o sar serve para ler as informações do sa, veja os mans do sa e sar para melhor entendimento.
Para verificar se já está rodadndo efetue um sar -r ele vai trazer a utilização da memória e swap rm kb, detalhe tudo é personalizável no sa inclusive o intervalo de coleta e arquivo de saída, e etc. O sar tb coleta diversas outras informações do sistema como load average sar -q, ou até estatísticas das placas de rede (NICs) sar -n DEV, quer saber se tem erros nos NICs sar -n EDEV.
Bom em resumo é o nosso perfmon agora se grudem nos mans e boa leitura.
www.benone.com.br
Edilson Azevedo
03 Jun 2008, 08:43
Caros,
Linux infelizmente trabalha com swap apenas por necessidade, o que é pessimamente errado, já que hoje em dia memória ram está muito barata e qualquer máquina tem > 2G.
Sistemas BSD tem um uso mais racional do swap. Sempre a utilizam para processos que possuem prioridade mais baixa. Em servidores esse comportamento é muito mais evidente. O uso constante da swap permite que sempre haja ram disponível para acesso rápido e/ou para maior prioridade.
Felipe Gustavo
02 Jun 2008, 10:22
Bom até onde eu sei, o uso de swap no linux é configurado por parâmetros do kernel, você pode configurar o sistema para usar mais o swap ou usar menos. O swap no linux é também é utilizado quando a aplicação que está em memória está ociosa, ou partes dela. Então para acelerar o funcionamento das aplicações e do uso de memória, o linux coloca o que está ocioso em swap, e como eu disse anteriormente, isso é configurável, dependendo do como o kernel é configurado o linux praticamente nunca vai usar o swap mesmo, geralmente nas distros otimizadas para desktop o swap é configurado assim para ser pouquíssimo utilizado. Veja este exemplo, tenho um servidor rodando ORACLE 10g em ambiente de produção, a recomendação da oracle é de que acima de 2Gb de RAM você utilize a mesma quantidade da RAM para swap, meu servidor tem 2GB de RAM, já vi este servidor usando mais de 1.2Gb com swap, em média ele usa algo entre 400MB e 500MB. Portanto o swap tem importância sim, depende do uso, talvez nos nossos desktops que hoje em dia contam com muita memória e não rodam aplicações tão pesadas isso não faça praticamente nenhuma diferença, mas se pararmos para pensar que o linux nasceu sendo utilizado principalmente em ambientes de servidores, talvez entendamos porque sempre vemos nos tutorias, manuais e howtos da vida essas recomendações de configuração de swap que parecem ser demais para nossos simples desktops.
Scoob
02 Jun 2008, 07:40
Amigos, na minha opinião é relativamente simples decidir a quantidade de swap a utilizar. Porém, isto varia de pessoa pra pessoa e de máquina pra máquina...eu faço o seguinte:
Tenho 1GB de RAM. Instalo meu sistema Debian sem swap (ele reclama, faz manha mas no fim aceita). Depois, crio um arquivo no disco com 512 MB pra swap e vou abrindo todos os aplicativos que possa vir a usar simultaneamente no *meu caso*:
- Amarok, Kopete, GIMP, Inkscape, Quanta, Firefox, Kaffeine, D3lphin e Konqueror, compiz, etc.
Deixo a máquina bem "caregada" por assim dizer...
Depois executo o $free e vejo se está usando alguma swap. Se estiver, vejo quando está usando de swap e deixo o dobro, por exemplo: se está usando até 100 MB de swap, deixo 256 por margem de segurança...se está usando mais de 256 MB, deixo 512 por segurança..(mas isso é muito raro)...
Quanto a liberar a partição, acho interessante sim.
PS.> para criar o arquivo de swap (tá cheio de tutorial na net, mas aí vai pra simplificar a busca):
--alocar o espaço para swap, o nome pode ser qualquer um que você queira (e não deve criar um diretório com esse nome antes, como alguém poderia interpretar). Neste caso estou criando 512 MB (512 x 1024=512000)
# dd if=/dev/zero of=/swap bs=1024 count=512000
--agora vamos dar o formato
# mkswap /swap
--agora diga ao sistema para que use como swap
# swapon /swap
--agora ao /etc/fstab e insira a linha
/swap swap swap defaults 0 0
--veja se aceitou (vai listar as swaps ativas)
#cat /proc/swaps
--se quiser remover a partição
#swapoff /dev/particao_swap_atual
#cfdisk
Prontinho!! Seu micro agora tem um arquivo swap em vez de uma partição swap. Se você tem pouca memória não recomendo fazer isso, recomendo se possível, deixar a swap em outro HD, assim você utiliza duas cabeças de leitura ao mesmo tempo.
Abraços!!!
Carlos
02 Jun 2008, 00:43
Faça alguns testes rodando algo como o virtual box, rodando um outro linux, atribuindo a ele uma parte razoável de sua ram.
Lui
01 Jun 2008, 20:06
Olá a todos
Sempre utilizei o dobro da memória RAM para a SWAP, mas li que uma SWAP muito grande, no caso de o computador precisar usar, ficaria muito lento por utilizar um sistema mecânico (O HD), e que 128MB seria suficiente para resolver um problema de sobrecarregamento de RAM antes de reiniciar a maquina, talvez essa dica sirva mais para servidores, pois um servidor rodando capenga por horas deve ser pior que parado por 3 á 9 minutos, sendo que se ele for muito importante deverá ter outro que assuma seu lugar enquanto não retorna.
Sendo assim já uso 128MB a alguns anos e mesmo na época que tinha apenas 256MB de RAM, a SWAP não era utilizada, mesmo com muitos programas abertos ou sendo compilados.
Nunca consegui fazer meu sistema hibernar, Alexandre deve ter razão, da próxima vez que reinstalar meu sistema irei deixar o mesmo tamanho da RAM para testar, não costumo utilizar do recurso, mas as vezes é necessário, principalmente em Notebooks.
--
http://lui.upmind.info
Cesar
01 Jun 2008, 02:35
Eu praticamente nunca usei swap mesmo em máquinas de 1GB de RAM (e olha que eu abro de tudo, inclusive edição de video).
A maior utilidade mesmo é para hibernação (como já disse o Alexandre).
Beetlejuice
31 Mai 2008, 17:17
também já pensei nisso, mas como uso muito LivesCD o swap vem a calhar =D
Patrick
31 Mai 2008, 13:46
E também depende muito do tipo de utilização do computador, por exemplo, uma pessoa que usa pra edição de vídeo com certeza vai precisar do swap, pois certamente vai encher a memória física, mesmo tendo 2GB de RAM.
Alexandre
31 Mai 2008, 06:44
Acontece que o swap também é usado para guardar o arquivo de hibernação e, se alguém utiliza esse recurso, é melhor ter dois GB em swap que receber um erro quando a máquina for hibernar...