Ativando zRAM no Slackware

Neste artigo, veremos como ativar o zRAM no Slackware.

[ Hits: 12.378 ]

Por: Leandro Nkz em 18/06/2014 | Blog: http://brweatherproject.blogspot.com/


Configurando o zRAM



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

start() {
  modprobe zram
  echo $SIZE*1024*1024 | bc > /sys/block/zram0/disksize
  mkswap /dev/zram0
  swapon -p 50 /dev/zram0
}

stop() {
  swapoff /dev/zram0
}

case "$1" in
  start)
    start
  ;;

  stop)
    stop
  ;;

  restart)
    echo 1 > /sys/block/zram0/reset
  ;;

  *)
  echo "Usage: $0 (start|stop|restart)"
esac

Dê permissão de execução:

# chmod +x /etc/rc.d/rc.zram

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:
Linux: Ativando zram no Slackware
  • 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á).

Até a próxima!

Referências


Artigo também publicado no Mundo GNU:
Página anterior    

Páginas do artigo
   1. Introdução
   2. Configurando o zRAM
Outros artigos deste autor

Uma alternativa ao ConkyForecast: O BrWeather

Instalação e configuração básica de um Debian 6 Squeeze para Desktops

Trazendo toda a usabilidade do GNOME 2 para o GNOME 3 do Ubuntu 11.10

Oracle XE 11.2 no Slackware 14.0 64 bits - Instalação e configuração

Saiba porque o Linux pode (ainda) estar diminuindo a vida útil do HD do seu notebook

Leitura recomendada

Compilação do Kernel Linux para máquinas locais Debian

kernel Linux otimizado - Compilação e teste

Deixe seu console mais bonito com Bootsplash

Tornando o kernel do OpenBSD enxuto

KernelCheck - Instalando o kernel mais recente em distros Debian-like e outras

  
Comentários
[1] Comentário enviado por tiekookeit em 18/06/2014 - 10:10h

Obrigado por trazer a tona a config, já habilitei no meu debian aqui, desconhecia a opção...

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

Agradeço desde já.

[3] Comentário enviado por removido em 18/06/2014 - 11:23h

Instalei no Ubuntu 14.04.
Percebi sim, sensível rendimento.

Uma coisa interessante aconteceu, o PopCorn Time deu erro.
Mas bastou remover e reinstalar pra funcionar. E até esse aplicativo abre mais rápido.

Estava receioso em instalar esse zRAM, mas vendo o desempenho no Phoronix e citado no Mundo GNU, resolvi arriscar.

-> http://www.phoronix.com/scan.php?page=news_item&px=MTM1NjQ


VLW Leandro!

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

Curiosidade: o próprio Android já utiliza o zram: https://source.android.com/devices/low-ram.html


tiekookeit e Izaias, Obrigado! =)


[5] Comentário enviado por wellington_r em 18/06/2014 - 16:29h

leandro:

Muito boa a sua resposta, bem esclarecedora. Agora sim a minha dúvida foi sanada. Muito obrigado! :)

Então acho que vou testar o zram nos computadores aqui da empresa, que choram para abrir uma planilha grande no LibreOffice (1GB de memória).

[6] Comentário enviado por albfneto em 18/06/2014 - 20:32h

Legal, favoritado.
ví que você citou meus artigos.

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

[8] Comentário enviado por leandro em 19/06/2014 - 16:23h

wellington_r: OK, depois conte-nos se melhorou o desempenho. =)

albfneto, Obrigado. Tomei interesse pelo zram a partir dos seus artigos lá do Mundo GNU.

px, concordo. Se certos programas parassem de consumir tanta memória já seria uma grande evolução, rs. Principalmente os navegadores.

[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

[10] Comentário enviado por bruno_cavalcanti em 21/06/2014 - 23:33h

Muito bom vlww conheci o zram agora rsrsrs

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

@bruno_cavalcanti, obrigado!

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

Abraço.

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

### Para ativar o ZRAM ###

Primeiro tem que instalar os scripts de inicialização:
http://software.opensuse.org/package/systemd-zram-service
Instalem a segunda opção ( de home:malcolmlewis:TESTING )

Para habilitar e ativar:

# systemctl enable zramswap
# systemctl start zramswap

Pra configurar o swapiness persistente, é preciso criar o arquivo:
/etc/sysctl.d/99-swappiness.conf

... com o conteúdo:
vm.swappiness=90


### Para ativar o ZSWAP ###
No Yast, abrir o módulo de configuração do gerenciador de boot e "acrescentar" na linha de opções do GRUB:
zswap.enabled=1








Depois que reiniciar, tudo estará OK.

Devo dizer que a responsabilidade do sistema é outra, Muito melhor.


;)

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

Abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts