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

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


Resumo / Introdução / Providências Iniciais



A. Resumo do Artigo

Para facilitar a leitura e compreensão, resolvi começar pelo resumo deste artigo.

Através da instalação do pacote ZRAM e seu suporte, é possível ter acesso ao recurso Zramswap ou Zswap, através do qual pode-se alocar espaço de troca, SWAP, não em uma partição ou arquivo, mas na própria memória RAM do computador.

Naturalmente que isso é, de uma certa forma, o "contrário" da SWAP usual. Na SWAP clássica, você supre a falta de memória com o uso do disco ou do arquivo de troca.

Aqui, não. Aqui você tem muita RAM Física no micro, nos pentes de memória, e aloca parte dela como SWAP.

Pode ser útil para computadores com muita Memória RAM para aumentar a performance, porque o uso direto dessa RAM é mais rápido do que a leitura de um arquivo, dispositivo ou partição.

O artigo também reporta alguns programas, ou procedimentos, para testar o uso da RAM e da SWAP.

B. Introdução

Aproveitando a ótima dica do amigo Luis Cavalheiro:
Resolví publicar outro método, que consiste em fazer "SWAP" (arquivo de troca) diretamente na RAM.

- Porque usei "SWAP" entre aspas?
Vejam: usando partição ou arquivo de troca físico (que é o caso usual), quando você tem pouca RAM no micro e a complementa, usando o disco, arquivo de troca ou um pendrive como RAM adicional.

Aqui, não! Em teoria, você teria muita RAM real, nos pentes de memória (8, 12, 16 ou 32 Mega) e usaria uma parte dela como "SWAP".

Portanto, não é um verdadeiro "Arquivo ou Partição de Troca", mas uma Alocação de "Troca" em memória RAM, uma RAMDRIVE de troca.

Por isso, de certa forma, você não tem SWAP para um micro com pouca RAM, mas você tem um micro com muita RAM e usa um pouco dela como SWAP.

Vamos imaginar uma situação, você tem um Gnu/Linux sem partição de SWAP, também não fez nenhuma SWAP em Arquivo. Em resumo, você não tem nenhum arquivo ou partição de troca.

Agora, suponha que você tem muita memória RAM no seu micro. Claro que Você pode fazer partição SWAP, pode fazer SWAP em arquivo, pode fazer SWAP no Pendrive (como ensinou o Luís).

Mas, se tiver muita RAM, pode usar a RAM para "SWAP". É o caso de Experimento, objetivo deste Artigo.

C. Pré-Requisitos

Usando os procedimentos padrão de sua Distro, instale e configure o pacote ZRAM.

ZRAM é um Compressor de RAM, que internamente, tem recursos para usar um módulo de Kernel (Zswap ou Zramswap, o nome depende da Distro ou do pacote), que permite fazer a SWAP funcionar na própria RAM do micro.

Eu instalei e testei em Sabayon:
Mas, pode ser feito em várias Distros, tanto com o clássico Sysvinit + OpenRC, como com o moderno Systemd:
    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

Alternativas ao Google - Sites de busca e motores de procura

Sabayon Linux 5.3, versões futuras e seu potencial + remasterização

Ultimate Boot CD - Um Fantástico "Canivete Suíço" para recuperar seu Linux

Introdução aos ambientes gráficos e gerenciadores de janelas menos conhecidos

Sabayon 5.0 - Transformando Sabayon 4.0r1 em Sabayon 5.0 "Full" (parte 2)

Leitura recomendada

Configurando webcam com o driver Spca5xx

Utilização de termômetro de ambiente com conexão USB no Debian

Cabos de rede e conectorização

Instalando placa wireless no OpenSUSE 11.0 (método genérico para qualquer placa)

Melhorando a performance das aplicações em redes de longa distância

  
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