ZRAM (Compressed RAM) no Debian

Veremos aqui, como adicionar o suporte ao ZRAM no Debian. O ZRAM tem a seguinte denominação: Virtual Swap Compressed in
RAM.

[ Hits: 29.785 ]

Por: edps em 23/02/2012 | Blog: https://edpsblog.wordpress.com/


Introdução



De imediato, é necessário dizer que não consegui fazer o ZRAM funcionar com o kernel padrão do Debian, então, para o caso deste, uma recompilação do kernel talvez seja necessária. E aqui, esta não será abordada.

O kernel utilizado será o Liquorix.

Para maiores detalhes, vejam os 2 artigos que fiz sobre kernel atualizado no Debian:

Ajustando o Sistema

Comecemos com:

sudo touch /etc/init.d/zram
$ sudo nano /etc/init.d/zram


Adicionem o seguinte conteúdo:

#!/bin/bash
### BEGIN INIT INFO
# Provides: zram
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
# Description: Adapted from systemd scripts at https://github.com/mystilleef/FedoraZram
### END INIT INFO

start() {
    # get the number of CPUs
    num_cpus=$(grep -c processor /proc/cpuinfo)
    # if something goes wrong, assume we have 1
    [ "$num_cpus" != 0 ] || num_cpus=1

    # set decremented number of CPUs
    decr_num_cpus=$((num_cpus - 1))

    # get the amount of memory in the machine
    mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching '[[:digit:]]+')
    mem_total=$((mem_total_kb * 1024))

    # load dependency modules
    modprobe zram num_devices=$num_cpus

    # initialize the devices
    for i in $(seq 0 $decr_num_cpus); do
    echo $((mem_total / num_cpus)) > /sys/block/zram$i/disksize
    done

    # Creating swap filesystems
    for i in $(seq 0 $decr_num_cpus); do
    mkswap /dev/zram$i
    done

    # Switch the swaps on
    for i in $(seq 0 $decr_num_cpus); do
    swapon -p 100 /dev/zram$i
    done
}

stop() {
    # get the number of CPUs
    num_cpus=$(grep -c processor /proc/cpuinfo)

    # set decremented number of CPUs
    decr_num_cpus=$((num_cpus - 1))

    # Switching off swap
    for i in $(seq 0 $decr_num_cpus); do
    if [ "$(grep /dev/zram$i /proc/swaps)" != "" ]; then
    swapoff /dev/zram$i
    sleep 1
    fi
    done

    sleep 1
    rmmod zram
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        RETVAL=1
esac
exit $RETVAL

Após, salvar com Ctrl+O e Ctrl+X, executar:

sudo chmod +x /etc/init.d/zram
$ sudo update-rc.d zram defaults
$ sudo modprobe zram


* Provavelmente dará erro, como qualquer outro kernel!
    Próxima página

Páginas do artigo
   1. Introdução
   2. Configurações
   3. Em outras distribuições
Outros artigos deste autor

PacmanXG, excelente frontend para o Pacman

Filtrando IPs no Debian e Ubuntu com o Mobloquer

Obtendo diferentes versões do Debian GNU/Linux

JIGDO, atualização de uma imagem .iso

Reempacotamento e repositório local em um sistema Debian-like

Leitura recomendada

Entendendo TCP/IP (parte 2) - Endereços IP

Gerador de sources.list para o Debian

Bind9 slave em chroot no Debian Lenny

Net TV a cabo no Mandrake 10.1 Community

Configurando modem MF622 da Claro no FreeBSD 8.0 e OpenBSD 4.7

  
Comentários
[1] Comentário enviado por removido em 23/02/2012 - 11:39h

o que é isso, o que é isso? É assim agora, que nem galinha botando ovo, um atrás do outro???

rs rs rs rs rs

============================

edps_zinho, agora é sério:

a) o zram funciona com 4GB de memória?
b) vc disse n conseguiu usar o kernel do debian. N será pq deixou de subir algum módulo?

[2] Comentário enviado por removido em 23/02/2012 - 17:39h

@acvsilva,

sim, o ZRAM funciona com 4Gbs de RAM, se não me engano o Bodhi Linux utiliza o ZRAM e na época que fiz o artigo sobre ele eu usava um QuadCore.

acabei de testar os passos no SalineOS que é um Debian Squeeze quase pronto e que só usa pacotes do próprio Squeeze, mas testei com o kernel do Debian Backports ( 3.2.0-0.bpo.1-686-pae ) e funcionou!

* então, talvez na época não funcionou no meu Squeeze porque de Squeeze ele só tinha o nome! rsrsrs GCC e diversos pacotes do Debian Testing, kernel Liquorix, etc.

as imagens do processo:

http://imageshack.us/photo/my-images/196/zramsalineos1.png/
http://imageshack.us/photo/my-images/46/zramsalineos2.png/

os comandos utilizados:

$ lsb_release -a
$ cat /etc/debian_version
$ cat /etc/issue
$ uname -a

carregando o módulo....
$ sudo modprobe zram

cópia do script da minha instalação do Squeeze...
$ sudo cp -av /mnt/debian_rootfs/etc/init.d/zram /etc/init.d/
$ sudo chmod +x /etc/init.d/zram

adicionando-o como serviço...
$ sudo update-rc.d zram defaults

adicionando o módulo em /etc/modules..
$ sudo nano /etc/modules

antes do início do serviço (768MB de SWAP)
$ free -m

início do serviço...
$ sudo service zram start

2GBs de ZRAM + 768MB de SWAP...
$ free -m
$ ls -al /dev/disk/by-uuid/


Só falta reiniciar com o kernel 2.6.32-5 original do Squeeze para ver se também funciona!

* deixa de gracinha se não te dou umas porradas! rsrsrs

[3] Comentário enviado por removido em 23/02/2012 - 20:18h

Os testes com o kernel do Debian Squeeze:

http://imageshack.us/photo/my-images/441/zramsalineos3.png/

ou seja não rola!

* quem sabe instalando o kernel -pae? esse do kernel 3.2.0 do Backports é -pae, assim como o do Debian Testing.

#

Após um reboot, novamente o kernel do Debian Backports em teste e o serviço 'zram' iniciou normalmente:

http://imageshack.us/photo/my-images/718/zramsalineos4.png/

Vou acrescentar essas imagens ao artigo do meu blog, já que solicitar acrescimo de conteúdo a algo já publicado dará trabalho para os moderadores.

[4] Comentário enviado por removido em 23/02/2012 - 20:27h

Pesquisando aqui pelo módulo zram, pude ver que o mesmo está presente nas seguintes distros e kernel que tenho instalado:


SalineOS = Debian Squeeze+XFCE (esta que estou usando).

- com o kernel do Debian Backports (3.2.0-0.bpo.1-686-pae).

/lib/modules/3.2.0-0.bpo.1-686-pae/kernel/drivers/staging/zram
/lib/modules/3.2.0-0.bpo.1-686-pae/kernel/drivers/staging/zram/zram.ko


Arch Linux.

- com kernel 3.2.4.1; e
- com kernel 3.2.5-1-ck.

/mnt/arch_rootfs/lib/modules/3.2.4-1-ARCH/kernel/drivers/staging/zram
/mnt/arch_rootfs/lib/modules/3.2.4-1-ARCH/kernel/drivers/staging/zram/zram.ko.gz
/mnt/arch_rootfs/lib/modules/3.2.5-1-ck/kernel/drivers/staging/zram
/mnt/arch_rootfs/lib/modules/3.2.5-1-ck/kernel/drivers/staging/zram/zram.ko.gz


Debian Squeeze.

- com o kernel do Debian Testing (3.1.0-1-686-pae);
- com o kernel Liquorix 3.2.0-2 e 3.2.0-6; e
- com o kernel do Debian Backports (3.2.0-0.bpo.1-686-pae).

/mnt/debian_rootfs/lib/modules/3.1.0-1-686-pae/kernel/drivers/staging/zram
/mnt/debian_rootfs/lib/modules/3.1.0-1-686-pae/kernel/drivers/staging/zram/zram.ko
/mnt/debian_rootfs/lib/modules/3.2.0-0.bpo.1-686-pae/kernel/drivers/staging/zram
/mnt/debian_rootfs/lib/modules/3.2.0-0.bpo.1-686-pae/kernel/drivers/staging/zram/zram.ko
/mnt/debian_rootfs/lib/modules/3.2.0-2.dmz.1-liquorix-686/kernel/drivers/staging/zram
/mnt/debian_rootfs/lib/modules/3.2.0-2.dmz.1-liquorix-686/kernel/drivers/staging/zram/zram.ko
/mnt/debian_rootfs/lib/modules/3.2.0-6.dmz.1-liquorix-686/kernel/drivers/staging/zram
/mnt/debian_rootfs/lib/modules/3.2.0-6.dmz.1-liquorix-686/kernel/drivers/staging/zram/zram.ko


Sabayon.

- com kernel 3.2.0.

/mnt/sabayon_rootfs/lib/modules/3.2.0-sabayon/kernel/drivers/staging/zram
/mnt/sabayon_rootfs/lib/modules/3.2.0-sabayon/kernel/drivers/staging/zram/zram.ko

[5] Comentário enviado por levi linux em 24/02/2012 - 07:12h

Muito bom e didático, 10!

[6] Comentário enviado por removido em 24/02/2012 - 18:14h

Thanks Levi.

intÉ!

[7] Comentário enviado por chimico em 25/02/2012 - 20:19h

Ae brother, quando você comentou sobre o Zram nos comentários do seu artigo :

http://www.vivaolinux.com.br/artigo/Debian-SID-OpenBox-LightDM-e-XFS

eu resolvi testar também. Realmente faz diferença, mas no meu velho de guerra este pesou com o tempo e deu umas congeladas. Creio que minha CPU é muito fraca e o XFS, apesar de rápido, também exige um bocado do coitado, logo desabilitei o Zram. Uma curiosidade é que para isso fui instalar o kernel liquorix, donde saiu minha última dica (http://www.vivaolinux.com.br/dica/Kernel-Liquorix-nao-da-o-Boot-%5BResolvido%5D/). Estou usando JFS agora, com journal externo, exatamente como está no ArchWiki. Algumas pessoas tem crise de distro, eu tenho de sistema de arquivos. Em uma única instalação chego a trocar o filesystem várias vezes.

[8] Comentário enviado por removido em 25/02/2012 - 21:11h

@chimico,

obrigado pelo comentário,

"
Algumas pessoas tem crise de distro, eu tenho de sistema de arquivos. Em uma única instalação chego a trocar o filesystem várias vezes.
"

eu tenho crise de init! o do meu Arch está bem diferente de uma instalação padrão, no Debian vinha usando aquela opção de fast-boot que desabilita a checagem do FSCK mas ontem perdi um tempinho corrigindo os erros numa partição de 120GBs. rsrsrs

* mas aí é que tá a maravilha da coisa, nós sempre podemos modificar nosso sistema de forma a tirar o máximo dele.

um abraço.

[9] Comentário enviado por denisrfe em 09/06/2015 - 12:53h

Legal o artigo, no kernel oficial do debian stable consegui fazer funcionar simplesmente colocando as linhas abaixo no /etc/rc.local:
modprobe zram &&
echo $((100*1024*1024)) > /sys/block/zram0/disksize &&
mkswap /dev/zram0 &&
swapon -p 10 /dev/zram0 &&
exit 0

Testado no Wheezy e Jessie
Referência: http://forums.debian.net/viewtopic.php?t=77627


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts