Experimento: SWAP diretamente na memória RAM - Testes para RAM e SWAP

Este Artigo descreve e detalha o uso da própria memória RAM do Computador com GNU/Linux, como SWAP. Essa memória RAM física é alocada, reservada para troca, como adição e/ou substituição da partição de troca (SWAP) ou arquivo, ou pendrive de troca. Em adição, a RAM e a SWAP são testadas.

[ Hits: 18.769 ]

Por: Alberto Federman Neto. em 10/09/2014 | Blog: https://ciencialivre.blog/


Métodos / Complementos e melhoramentos / Verificação



Dois Métodos podem ser usados para ativar a ZRAM e/ou ZSWAP.

D. Método no Boot Direto

Use Kernel 3.13 ou superior, porque em Kernels mais antigos poderá ser necessário inserir o módulo e recompilar.

Para ativar a ZSWAP no Boot, edite o arquivo /boot/grub/grub.cfg, diretamente ou não.

Detalhes sobre como Editar:
Adicione a seguinte linha (Cheat-Code):

zswap.enabled=1

Se você tiver um arquivo de troca ou partição SWAP, pode desativá-la se quiser, mas não é obrigatório.

Reinicie o computador.

E. Método nos Serviços de Boot

Adicione e ative o serviço de ZSWAP (zramswap) no Boot.

Exemplos, em Slackware e para o antigo aistema Syvsinit+OpenRC, use o comando:

# /etc/rc.d/rc.zram start

Em Debian, Ubuntu:

# update-rc.d zramswap default

Em Sabayon:

# rc-update add zramswap default

Se o seu sistema já usar Systemd, para qualquer Distro, use estes comandos:

# systemctl enable zramswap.service
# systemctl start zramswap.service

F. Complementos e Melhoramentos

Se quiser melhorar a perfomance, etc, não é obrígatório, mas você ainda poderá fazer mais algumas coisas. Exemplo, colocar os diretórios temporários (de seu GNU/Linux) na RAM.

Para isso, edite seu arquivo /etc/fstab, colocando as linhas seguintes. Procedimentos foram reportados por EDPS e Hiltongil:

tmpfs /tmp tmpfs nodev,nosuid,noexec,size=1024M,mode=1777 0 0
tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/lock tmpfs nodev,nosuid,size=100M,noatime,mode=1777 0 0
# Linha só para RC. Se usar Systemd, Comente:
# tmpfs /var/run tmpfs nodev,nosuid,size=512M,noatime,mode=1777 0 0

Outra coisa que pode testar, seria instalar os seguintes pacotes e carregar:
Nunca tive problemas com Preload e Verynice, mas não aconselho colocar o Prelink direto como serviço de Boot, o tempo todo ativo, porque ele não funciona bem com certos programas.

Mas, sem estar ativado o tempo todo, você pode testar. Para isso, instale o pacote Prelink e inicie o Programa com o comando:

# prelink -a -m -v

Qualquer problema, você tem duas opções, anular a "prelincagem":

# prelink -a -u -v

Ou, "matar" o processo do Prelink:

# killall prelink

G. Verificando Funcionamento

Para verificar se está funcionando (ZSWAP, ZRAM ou ambas) , use estes comandos:

# dmesg | grep -i zwap
# dmesg | grep -i zram
# swapoff -a
# swapon -a
# swapon -s

Verá se estão instalados e funcionando.
Se não aparecer nada, é porque não estão instalados, ou não estão funcionando.

Página anterior     Próxima página

Páginas do artigo
   1. Resumo / Introdução / Providências Iniciais
   2. Métodos / Complementos e melhoramentos / Verificação
   3. Testes e conclusão
Outros artigos deste autor

Instalando, gerenciando e mantendo pacotes no Gentoo Linux e derivados

Conhecendo e testando vários navegadores de Internet

Como criar pacotes para o Gentoo ou Sabayon Linux

Sabayon 5.0 - Uma nova distro multimídia (parte 1)

Como traduzir Software Livre - Um método fácil

Leitura recomendada

Configurando os escâneres HP 2300C/2400C no Linux

Instalando uma placa wireless

Configurando o HP CD-Writer 9100 series

Gerenciando módulos no Linux

Linux em Computadores Antigos

  
Comentários
[1] Comentário enviado por levi linux em 10/09/2014 - 08:10h

Muito bom! Vou testar aqui. Parabéns pelo excelente trabalho!

[2] Comentário enviado por xerxeslins em 10/09/2014 - 08:42h

Muito bom, só não vou testar porque tenho pouca RAM.



[3] Comentário enviado por cruzeirense em 10/09/2014 - 09:24h

Interessante o artigo e bem completo. Só fiquei com uma dúvida, seria melhor não utilizar swap do que colocar ela na RAM?

[4] Comentário enviado por albfneto em 10/09/2014 - 09:34h

@ Cruzeirense..
Eu tenho um micro com 8 giga de RAM e o outro, 16. Mas já tive antigos com 1, 2 e 4 Giga.
pelo que observei, no uso do micro...

até 2 giga, precisa de RAM em partição ou arquivo,melhor ter.
entre 2 e 4, não precisaria RAM, faça se quiser. Não testei ZSwap neles, mas capaz de funcionar razoávelmente.
Muita RAM, fazendo ZSwap, a performance e a rapidez do micro sobem visivelmente
Ou seja tendo muita RAM, me parece melhor usar ZSwap, do que não ter Swap alguma.

[5] Comentário enviado por galactus em 10/09/2014 - 15:18h

Olá albfneto, deixa ver se entendi bem, com seu micro com 8GB de RAM, você usa o ZRAM e + ZSwap? Ou só o Zswap?

E quanto ao Verynice? Usa isso junto também? Realmente deixei de usar o Prelink por dar uns paus federais em algumas aplicações!

[6] Comentário enviado por albfneto em 10/09/2014 - 18:16h

Testei de vários jeitos.
nos testes do artigo, nos micros de 8 giga e 16 Giga de RAM,
testei vários jeitos.
no momento uso zswap no micro de 8 giga de RAM, com verynice e preload.
e ZRAM e Zswap no micro de 16 giga de RAM, com ou sem preload e verynice.

[7] Comentário enviado por jotagera em 11/09/2014 - 12:32h

Prezado colega

Por favor me ajude a entender...

Quando o Linux tem pouca memória e precisa colocar mais programas que cabem na mesma, ele usa a área de swap.

Quando o Linux tem muita memória, ele (em teoria) não precisa de arquivo de troca. O Linux até usa a memória para fazer cache de leitura de arquivos. Se configurar, pode até fazer cache de escrita.

Assim sendo, qual seria a vantagem teórica de diminuir a quantidade total de memória disponível para o kernel, criando uma área especifica para swap?

Obrigado antecipadamente.

[8] Comentário enviado por albfneto em 11/09/2014 - 12:44h

suponha que vc vai usar toda a sua RAM, e vai usar a swap...
quando ele precisar da swap, vai achá-la na RAM, e não no disco...
a leitura é muito mais rápida na RAM...
por exemplo, 8 giga de RAM e swap clássica, é menos rápido que 6 giga de RAM e 2 de swap RAM.
teste, veja por sí, a performance sobe e sobe muito.
no meu caso, também puz meus diretórios temporários na RAM, fica mais rápido ainda.

[9] Comentário enviado por mapintar em 11/09/2014 - 12:55h

Corrijam-se se eu estiver errado, mas creio que o autor confunde dois métodos diferentes (zswap e zramswap) como se fosse um só. Vejam:

https://wiki.archlinux.org/index.php/Zswap
https://wiki.archlinux.org/index.php/Maximizing_performance (na parte que fala em Compcache/Zram)

Pelo que eu entendi, o zswap usa parte da memória RAM como swap, mas compactando os dados (""Zswap is a Linux kernel feature providing a compressed write-back cache for swapped pages. Instead of moving memory pages to a swap device when they are to be swapped out, zswap performs their compression and then stores them into a memory pool dynamically allocated inside system's RAM." - Wikipedia"

Já o zramswap funciona de forma diferente, atribuindo uma quantidade de RAM específica para cada núcleo lógico do processador.

O primeiro exige alteração na linha de comando da inicialização do kernel, o segundo a instalação de um pacote adicional (que no Arch se chama zramswap, disponível no AUR).

[10] Comentário enviado por mfdzerohour em 11/09/2014 - 14:13h

Eu uso, montar a memoria ram para o diretorio /var/tmp para compilação de pacotes do gentoo, o resultado é ótimo, ele reduz 50% do tempo de compilação de pacotes grandes, podendo reduzir a 1/3 em alguns casos.

[11] Comentário enviado por ricardoolonca em 11/09/2014 - 16:08h

Na verdade, o maior benefício de usar zswap é a compactação dos dados em memória. Com isso você consegue jogar mais dados na memória Ram. E quem mais se beneficia disso são máquinas com pouca RAM, ao contrário do que o artigo diz.

Veja um exemplo: criei um live-cd que precisa de uma máquina com pelo menos 1.2Gb da Ram. Modifiquei o live-cd habilitando o zswap para utilizar 500Mb da Ram. Com isso eu consegui fazer o live-cd rodar em máquinas com menos de 1Gb.

Por padrão, quando uma máquina fica sem Ram, uma área de swap será utilizada. Vamos supor que você tenha 1Gb de Ram e separou 800 Gb para zswap. O swap em Ram tem prioridade ao swap em disco. Como o zswap compacta - estimamos 2/1 - você conseguirá colocar +- 1,8Gb em Ram (0,2Gb em Ram nativa + 1,6 Gb compactado em zswap). Somente após o encher os 1,8Gb é que o sistema vai passar a usar swap em disco.

[12] Comentário enviado por albfneto em 11/09/2014 - 16:33h

Os dois métodos são Swap na RAM...

Um deles (zswap) usa a swap comprimida, mas na RAM, é cache, mas não de disco, mas cache em RAM. no meu artigo é o método D..

o módulo já existe no kernel (pelos menos nos novos), mas verifiquei que ele não ativa se não tiver o pacote ZRAM instalado. Não basta só o módulo.

O outro que aloca a swap na ram dos núcleos, é zramswap, sim, é no meu artigo, método E.

ocorre que em algumas distros zramswap se chama "zswap" também, no pacote.

ambos os métodos são aplicáveis, mas ambos precisa instalar pacote ZRAM.

se tem pouca RAM, dá para usar zswap, e isso beneficia o micro com pouca RAM.

na prática, porém, fica difícil, se tem pouca RAM, alocar para 8 núcleos, zramswap.

Porisso que eu estou usando zswap no micro de casa e zramswap, neste que tem 16 giga de RAM.

mas em ambos, fica mais rápido, pq além da prioridade, é mais rápido ler a RAM do que ler um disco.

[13] Comentário enviado por mapintar em 11/09/2014 - 18:22h

A propósito, estou usando o método descrito aqui https://wiki.archlinux.org/index.php/Zswap com a compactação lz4 em um sistema com 8GB de RAM.

Como uso o freshplayerplugin, ainda em fase experimental, de vez em quando o firefox fica maluco e passa a usar toda a RAM disponível e ainda passando a "comer" toda swap que encontra pela frente, certamente devido a um bug, o que aconteceu hoje novamente (e parece ter resolvido depois que atualizei o chromium-pepper-flash).

O que eu percebi é que quando o kernel começa a usar a swap o sistema dá uma pisada no freio por uns 15 segundos, mas volta ao normal logo em seguida na medida em que a swap passa a ser usada. Porém, quando esgota a parcela que a zswap usa aí não tem jeito. Fica tudo muito lento, impossível até de fechar o programa "comedor" de memória.

Geralmente quando surge esse problema eu fecho o firefox e tudo volta ao normal, mas hoje estava ocupado com outra coisa e quando vi já tinha ido embora toda a RAM e toda a parcela da zswap. O sistema parecia congelado, mas na verdade estava muito lento devido ao acesso ao disco. Como tinha muita coisa aberta eu esperei, até que consegui matar o firefox e tudo foi voltando ao normal depois de uns 10 minutos. Não foi preciso reiniciar.

A conclusão que eu chego é que é viável usar o método se você for usar ocasionalmente até uns 2GB de swap (no caso com o sistema com 8GB de RAM), pois terá uma folga a mais quando o kernel passar a depender de swap, mas ficará "na mão" se o espaço compactado acabar e for necessário acesso ao disco.

[14] Comentário enviado por albfneto em 12/09/2014 - 10:54h

Isso é um Bug de algumas versões de Firefox, eu tb tive,mesmo antes de usar zswap.
e tinha uma versão antiga de Dropbox, que também fazia isso!

[15] Comentário enviado por Thihup em 14/09/2014 - 12:43h

Notei um pequeno erro no inicio da 3ª pagina , está escrito assim:

"Método no Boot Direto, Página 3, Ítem D. "

O correto nao seria

"Método no Boot Direto, Página 2, Ítem D. "

?

A dica é muito boa

T+

[16] Comentário enviado por m4iir1c10 em 14/09/2014 - 15:21h

Excelente artigo, eu so tenho um problema... nao com o artigo mais com a ideia de armazenar dados na RAM como Swap.

Esse metodo e plausivel para o uso em um desktop, porem como no meu caso eu uso mais o laptop, sem a swap ou com a swap direto na RAM eu perco a funcionalidade de colocar o computador para dormir.

Levei anos ate descrobrir isso... eu nunca vi em nenhuma comunidade esse assunto sendo discutido, sempre tive problemas que eu pensava que era a distro ou o Gnome ou o KDE que estava com BUG, porque ao fechar o laptop eu so via uma tela preta sem prompt e nada acontecia eu era forcado a segurar o power ate desligar.

Ate um dia que eu pesquisei a fundo sobre as funcoes da RAM e entendi que a razao pela qual devemos ter o dobro da capacidade da RAM como Swap e exatamente para o caso do laptop entrar em sleep mode.

Tudo oque esta rodando no computador e armazenado na SWAP e o computador desliga, ao reiniciar invez de carregar todos os programas do zero ele carrega todos eles da SWAP como se estivessem congelados.

So que ao carregar a SWAP na RAM isso nao vai acontecer porque tudo na RAM e apagado ao desligar.

[17] Comentário enviado por mapintar em 17/09/2014 - 13:21h

Há alguns anos eu montei um sistema com 16GB de RAM. Pensei, "swap nunca mais". Ledo engano. Sempre haverá mais cedo ou mais tarde um programa "comedor de memória". E sem swap, acabou a memória o kernel simplesmente entra em colapso. O sistema congela.

[18] Comentário enviado por xerxeslins em 17/09/2014 - 14:13h

Já usei sistema sem swap e ele congelou durante compilação. Mas o artigo deixa claro que esse artigo é um experimento, e ainda mais: só para quem tem MUITA memória RAM. Não adianta querer usar isso em computador com 4GB de RAM. O criador do Gentoo deu uma entrevista em 2012 e disse que o PC dele tinha 32GB de RAM rsrs.

[19] Comentário enviado por bleckout em 10/04/2015 - 11:07h


Eu havia pensado nisso em usar a RAM para SWAP, porém agora lembrei: Qual seria a vantagem? ]

Exemplo:

8GB RAM S/SWAP = 100% FULL
8GB RAM C/SWAP = 100% FULL

Ainda seriam os 8GB com o mesmo hardware.

-----

Creio que a melhor vantagem para quem tem RAM de sobra é para quem deseja separar uma parte dela como um HD, pois assim o boot do OS ficaria bem mais rápido.

[20] Comentário enviado por sun7zu em 11/08/2015 - 04:17h

Uma curiosidade qual file system você utilizou teve alguma otimização para o mesmo,além do que foi dito no artigo teve outras otimizações ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts