Ativando zRAM no Slackware

Neste artigo, veremos como ativar o zRAM no Slackware.

[ Hits: 14.631 ]

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

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

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

Uma alternativa ao ConkyForecast: O BrWeather

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

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

Leitura recomendada

Recompilando o kernel com suporte a placas de rede Encore rtl8139D (Silan)

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

Slackware com kernel 2.6.10 - passo a passo

Aplicando o patch do grsecurity no kernel 2.4

UZIX - O Linux do MSX (Z80)

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts