Esta parte é mais rápida, há um script desenvolvido por Andrei Gliga, disponível aqui, que faz todo o trabalho.
Basta criar o arquivo /etc/rc.d/rc.zram com o seguinte conteúdo:
#!/bin/bash
# Script to start zRam (Virtual Swap Compressed in RAM)
# https://github.com/otzy007/enable-zRam-in-Slackware
#
# Size of swap space in MB
# default 1GB
SIZE=1024
E adicione as linhas no arquivo /etc/rc.d/rc.local, para que o script inicie no boot:
#Iniciando zram
if [ -x /etc/rc.d/rc.zram ] ; then
/etc/rc.d/rc.zram start
fi
Observações:
Por padrão, ele irá disponibilizar 1 GB. Se quiser mudar, altere a linha "SIZE" como preferir.
Eu alterei o script, acrescentando o parâmetro -p 50 na linha que ativa a nova área SWAP (swapon). Este parâmetro atribui a prioridade 50 à nova área criada, fazendo com que o sistema dê prioridade a ela em detrimento à alguma outra SWAP que esteja habilitada. Assim, o sistema usará primeiro a área SWAP do zRAM, e quando esta estiver esgotada, ele irá buscar a área SWAP no disco (se houver).
Por fim, execute o comando:
# /etc/rc.d/rc.zram start
E pronto, zRAM ativado.
Um screenshot do sistema em uso:
4 GB de RAM (3.74 GB "usável");
zram utilizando 1 GB;
Swap no disco (/dev/sda3) de 3 GB;
Nível de swapiness em 70.
Programas abertos:
VirtualBox executando: Windows 7, Ubuntu 12.04 e o saudoso Conectiva 6.0;
Firefox com um vídeo do YouTube executando;
GIMP;
LibreOffice Writer;
E outros menores: lxterminal, Genymotion e Thunar.
Notas finais
Reparem no consumo de memória RAM (3344 de 3744 MB) e nas partições SWAP (zRAM com 671 MB e /dev/sda3 vazia).
O sistema só passará a utilizar a partição SWAP do disco (/dev/sda3), quando o dispositivo criado pelo zRAM estiver cheio devido à maior prioridade atribuída ao zRAM.
Manter uma partição SWAP no disco é útil para quem usa o recurso de hibernação (como o zRAM utiliza a memória RAM para criar a partição SWAP, a hibernação não funcionará).
[2] Comentário enviado por wellington_r em 18/06/2014 - 10:13h
Muito bom, obrigado pelo tutorial.
Agora, pode me tirar uma dúvida?
Por que exatamente o zram melhora o desempenho? Pelo que entendi ele cria um dispositivo de bloco na memória RAM, que é como se estivesse criando uma memória virtual dentro da própria memória RAM, mas a memória virtual serve justamente para ser utilizada quando não há espaço disponível na memória RAM, o que torna tudo muito esquisito, pois você cria dentro da memória RAM uma memória virtual que geralmente é usada em um HD para ser usada como reserva da memória RAM.
Então, qual é a vantagem de criar dispositivos de blocos dentro da memória RAM ao invés de se utilizar a memória RAM pura e simplesmente como um todo?
Veja bem, eu entendo que uma memória virtual na memória RAM seja mais rápida que a memória virtual no HD, o que não entendo é por que o fato de criar uma memória virtual na memória faz o desempenho ficar melhor do que quando não se tem essa memória virtual.
Pergunto isso pois aqui na empresa onde faço estágio temos alguns dinossauros vivos rodando Linux e qualquer melhora no desempenho seria bem-vinda, porém preciso saber se o zram de fato irá melhorar alguma coisa.
[4] Comentário enviado por leandro em 18/06/2014 - 15:30h
wellington_r:
Obrigado.
Sobre a dúvida, é exatamente isso: é criada uma memória virtual na RAM ao invés do HD. No entanto, a grande vantagem é que ela é compactada.
Um exemplo:
Sem zram:
- Quando a memória RAM estiver se esgotando, o sistema (kernel) vai alocando e utilizando espaço da memória swap, no HD. Como o HD é muito mais lento do que a RAM, durante este processo podem ocorrer vários travamentos e lentidões.
Com zram:
- Neste caso, quando a memória RAM estiver se esgotando, o sistema irá compactar os dados presentes nela e ir armazenando na memória virtual até o limite estipulado, o que libera mais espaço. Ou seja, pode-se armazenar mais dados na RAM, sem que se precise utilizar a swap do disco.
Notas:
- O zram utiliza o algoritmo de compactação LZO, que fornece pouca taxa de compactação, mas o processo de descompressão dos dados é bem rápido.
Nas novas versões do kernel, dá pra habilitar o algoritmo LZ4 (aparece a opção quando se habilita o módulo do zram na configuração do kernel) que parece ser melhor ainda do que o LZO.
- Lembrando que o zram só será realmente útil em sistemas com pouca memória RAM, pois ele evita o uso da swap no disco. Vejam que tive que forçar o sistema para poder esgotar o uso da memória RAM, e em condições normais, isso seria bem raro de acontecer.
[7] Comentário enviado por px em 18/06/2014 - 21:22h
Bacana, mas ainda acho q seria perfeito se melhora-se o alocamento de memória Ram no linux, pq nada adianta tu ter uns sl... 2G de memória se o Chromium chupa metade! kkkkk
Ou pelo menos nesses aplicativos chupa-cabra ser implementado uma Zram própria deles... ai sim seria uma [*****] vantagem! (desculpe o linguajar).
Isso visando aquelas máquinas fraquinhas de escritórios q objetivam uma economia de energia e manutenção claro... mas como um avanço a mais nunca é D+ seria implementado em diversos computadores mais "fortinhos" tbm.
Resumindo sinto falta de um gerenciamento melhor no sistema na parte da Ram... ñ sei se sou só eu ou se mais alguém concorda cmg... bom fica a dica ai.
[9] Comentário enviado por cytron em 21/06/2014 - 11:08h
Realmente zRAM é um recurso excelente!
Interessante esta questão sobre memória, relembrem os tempos antigos... tínhamos 128 MB de RAM, usávamos o office e várias outras coisas, incluindo navegadores e o próprio sistema operacional. Hoje temos 2 GB de RAM e mal dá pra usar o navegador! ISSO É ABSURDO!!!
Entendo que os sistemas evoluíram, aumentaram o código resultando em uma ocupação maior da memória, mas se dividirmos 2048 por 128 dá 16, ou seja, os softwares aumentaram 16 vezes o consumo (sei que tem a questão de gráficos e tudo mais), mas mesmo assim, observem o XP rodando em uma máquina Celeron 2.13 com 2 GB de RAM, "hoje", ..., é incrível como ele roda mais lento que o mesmo XP em um Pentium 3 com 512 de RAM antigamente. Além de existir esse "poder místico" no mundo da informática, onde as coisas vão ficando mais lentas e ocupando cada vez mais espaço, ainda "acredito" que existe um "desleixo" dos programadores (empresas) que simplesmente não se preocupam mais com a questão de espaço e desempenho. Parece que os desenvolvedores estão deixando o desempenho como responsabilidade dos fabricantes de hardware. Ou seja, fazem de qualquer maneira e falam: "o hardware está cada vez mais potente e com mais memória, então não precisamos nos preocupar em fazer programas enxutos e rápidos".
Antigamente tinha como uma das principais preocupações o sistema/programa ocupar pouco espaço e rodar rápido. Inclusive é a principal proposta da programação procedural e OOP, evitar repetição do código e aumentar o desempenho.
Antigamente, todo mundo conhecia o arj, e winzip, viviam compactando as coisas para não lotar o HD. Agora com esses terabytes, a maioria nem sabe compactar mais. É claro que não precisamos. Mas desempenho é CRUCIAL! Fazemos upgrade exatamente por causa do desempenho.
As pessoas compram máquinas novas por causa do desempenho. Se os desenvolvedores dessem uma paradinha para enxugar os códigos e aprenderem a programar pensando "também" no desempenho "por parte do código", não precisaríamos de 16 GB de RAM. Nessa memória toda cabe o Win7 completo sem precisar ler 1 byte se quer no HD. Mesmo assim, basta abrir um navegador para ver 1 GB desaparecer. Isso é quase surreal! kkkkkk
Se precisamos de 1 GB só para navegar em apenas um site, então a 15 anos atrás era totalmente impossível navegar na internet! kkkkkkk
Sei que a microsoft por exemplo, vive fazendo a propaganda de DESEMPENHO e tal... como se estivesse desenvolvendo com esse pensamento, mas então porque o sistema não voa como antigamente??? Eu conseguia abrir o Win95 em menos de 10 segundos em um 586 com 64 MB de RAM.... Hoje não consigo abrir um XP SP3 em um Dualcore com 2 GB nesse tempo! Comparando as diferenças entre essas máquinas, era de se esperar que o XP abrisse tão rápido que os ícones cairiam no teclado kkkkk
[11] Comentário enviado por leandro em 22/06/2014 - 18:08h
@cytron, concordo com tudo o que disse!
E mais, do jeito que estamos indo, daqui a 20 anos usaremos computadores com desempenho que deixam o tianhe-2 no chinelo mas ainda estaremos reclamando da lentidão dos softwares, rsrs.
[12] Comentário enviado por px em 24/06/2014 - 11:09h
@ cytron
Exato! isso que gostaria de ter discutido melhor, tipo antigamente (uns 2-3 anos) rodava-se um game no full com uma mísera plaquinha... ta até ai tudo bem... ai passa um tempo e "precisamos" comprar um troço de 500 contos (só um exemplo!) para usar o pc para a mesma função kkkk
Capitalismo selvagem não se preocupa com desempenho e sim com lucros!
Exemplo eu que tive de trocar o meu processador (claro tava bem antigo já...), vou sair de um Athlon 270 para um fx 6300... imagina a diferença! isso pq os programas agora ñ usam clock (lembra do exemplo do cytron com os processadores?!) os programas tendem a usar múltiplos núcleos e novas "instruções" nos processadores, claro aproveitar-se de barramentos mais rápidos e/ou usar a memória de placas gráficas para "empurrar" algumas contas e algorítimos etc... vejam o caso de alguns super-computadores da Nvidia todos baseados em placas gráficas... e rodando Linux! rsrs
[13] Comentário enviado por darkstarfire em 27/06/2014 - 11:45h
Amigo, não sei o que estár errado no meu sistema, compilei um kernel para o Slackware 14.1 com zram habilitado.
Configurei o zram para usar 2GB da ram como swap, mesmo assim ele enche praticamente toda ram só então passa a usar a swap, mesmo eu dando prioridade 100 para a swap, também desabilitei a partição swap para forçar ele usar o bloco do zram na memoria e nada. Alguma dica?
[14] Comentário enviado por leandro em 28/06/2014 - 11:03h
[13] Comentário enviado por darkstarfire em 27/06/2014 - 11:45h:
Amigo, não sei o que estár errado no meu sistema, compilei um kernel para o Slackware 14.1 com zram habilitado.
Configurei o zram para usar 2GB da ram como swap, mesmo assim ele enche praticamente toda ram só então passa a usar a swap, mesmo eu dando prioridade 100 para a swap, também desabilitei a partição swap para forçar ele usar o bloco do zram na memoria e nada. Alguma dica?
Experimente verificar o nível de "swappiness" do sistema com o comando:
# sysctl -a | grep "vm.swappiness"
Quanto maior for o nível (que fica entre 0 e 100) mais ele tenderá a usar a swap. Por outro lado, se o valor estiver baixo, o sistema tentará usar toda a RAM disponível para só então utilizar a swap.
Tente colocar um valor alto, do tipo 70~90 com o comando:
# sysctl -e vm.swappiness=90
Se funcionar, acrescente o parâmetro (vm.swappiness=90) no arquivo /etc/sysctl.conf (se não existir, crie) para que seja lido na inicialização do sistema.
[15] Comentário enviado por elvisvinicius em 04/07/2014 - 08:24h
zRAM é realmente uma maravilha. Uso no openSUSE há mais de 1 ano.
Para quem ainda tem alguma dúvida sobre como funciona e porque deveria usá-lo também, aqui vai uma explicação bem simples:
Sabe quando comprimimos um arquivo em ZIP? Pra reduzir o tamanho dele e ocupar menos espaço em nosso HD, CD ou PenDrive? Então, zRAM faz praticamente a mesma coisa.
Os dados que são gravados na memória RAM são "comprimidos" e consequentemente passam a ocupar menos espaço. Se os dados ocupam menos espaço, quer dizer que sobra mais RAM. Logo, "virtualmente", aumenta-se a memória RAM disponível, já que tudo que é gravado nela ocupa menos espaço. ;)
Quanto ao swapiness, é bom usar algo no máximo até 90. Isso faz com que o sistema passe a priorizar mais a gravação no SWAP, e já que o SWAP agora está na memória RAM, faz sentido fazer o sistema adotar esse comportamento. Não é recomentado usar 100 no swapiness, porque certos dados de alta prioridade podem causar problemas se ficar no swap. É bom deixar um "respiro" para esse tipo de dado.
---
Atualmente uso junto de outro recurso que estreou no openSUSE 13.1, o zSWAP.
É muito fácil ativar no openSUSE, o kernel dele já vem pronto pra isso.
[16] Comentário enviado por leandro em 04/07/2014 - 11:15h
Valeu elvisvinicius!
Quanto ao nível de swappness, é exatamente isso. E ao se utilizar o zram, há o acréscimo de um pequeno custo: o processo de compactar/descompactar dados na RAM consome recursos do processador. Assim, ao se armazenar dados prioritários na swap o desempenho do sistema decai um pouco em virtude disso.