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: 26.015 ]

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

WAJIG, gerenciamento avançado de pacotes em distros Debian-like

Recuperação de partições deletadas com o TestDisk

Apt-fast - turbinando o apt-get em distros Debian-like

Arch Linux - Instalação a partir de imagem híbrida

Snapshots de pacotes para o Debian

Leitura recomendada

Como configurar e instalar o VirtualBox

Arch Linux - Repositório offline

Enlightenment DR17 - A evolução

Tutorial de Instalação do Módulo Gerente em Servidor FreeBSD

AirPlay Receptor em Raspberry Pi

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts