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.
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.
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.
[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.
[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?
[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.
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.
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.
[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.