Habilitando ZSwap + zstd + z3fold

editado 22 de abril em Dicas e Truques

ZSWAP


ZSwap é um recurso do kernel que fornece um cache na memória RAM para páginas de troca compactadas. As páginas que de outra forma seriam trocadas para o disco são, em vez disso, compactadas e armazenadas dentro de um espaço de memória. Uma vez que o espaço está cheio ou a RAM está esgotada, a página menos usada recentemente é descompactada e gravada no disco.

ZSwap permite ao Linux fazer um uso mais eficiente da RAM, uma vez que aumenta virtualmente a capacidade de memória, em detrimento de um uso de CPU ligeiramente aumentado para compactar/descompactar as páginas de troca. Isso é particularmente eficaz em máquinas com pouca memória RAM.

A redução do uso do swap como resultado do uso de ZSwap efetivamente reduz a quantidade de desgaste colocada sobre armazenamento baseado em flash, resultando no prolongamento de sua vida útil. Além disso, o uso de ZSwap resulta em E/S significativamente reduzida para sistemas Linux que necessitam de swap.

A diferença em relação a ZRam, é que ZSwap funciona em conjunto com um dispositivo de swap, enquanto ZRam é um dispositivo de swap na RAM que não requer um dispositivo de swap de apoio.

Então, o ZSwap está sendo usado, certo? Errado!
Parece que o ZSwap está presente no kernel, mas só é usado se habilitado explicitamente no arranque do sistema.

Requisitos

Kernel 4.19 LTS ou versão superior.
O sistema precisa de um dispositivo de troca física: partição swap ou swapfile (O Mint 19.x já vem com um dispositivo swapfile habilitado)

Importante

Nunca use ZRam e ZSwap juntos. A combinação deverá causar instabilidade e degradação na performance.
Para maior eficácia de ZSwap, use valores de Swappiness próximos do padrão (60).

Etapas para habilitar ZSWAP

1. Abra o grub como root:
sudo xed /etc/default/grub

2. Mude a linha GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" para:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.compressor=zstd zswap.zpool=z3fold"
Salve a alteração e feche o editor de texto.

3. Atualize o Grub, executando:
sudo update-grub

4. Habilitando o ZSTD e o Z3FOLD:
sudo su
apt install -y checkinstall build-essential
VERSION=1.4.0
cd /tmp
wget https://github.com/facebook/zstd/releases/download/v1.4.0/zstd-1.4.0.tar.gz -O zstd.tar.gz
tar -xf zstd.tar.gz
cd zstd-$VERSION
make
echo y | checkinstall
if ! grep -qx zstd /etc/initramfs-tools/modules; then echo zstd >> /etc/initramfs-tools/modules; fi
if ! grep -qx z3fold /etc/initramfs-tools/modules; then echo z3fold >> /etc/initramfs-tools/modules; fi
update-initramfs -u

5. Reinicie o seu PC.

6. Verifique se ZSWAP está habilitado, executando:
cat /sys/module/zswap/parameters/enabled
Se ZSWAP estiver habilitado, você deve ver Y na resposta.

7. Verifique se ZSTD e Z3FOLD estão sendo usados, executando:
sudo dmesg | grep -i zswap:
Se a resposta for: zswap: loaded using pool zstd/z3fold
Então você habilitou zswap + zstd + z3fold com sucesso.

Referências:
https://www.phoronix.com/scan.php?page=news_item&px=MTI1MDM
https://en.wikipedia.org/wiki/Zram
https://ubunlog.com/mejorar-rendimiento-ubuntu-gracias-zswap/
https://forum.doozan.com/read.php?2,44269,44279
https://ubuntu-mate.community/t/enable-zswap-to-increase-performance/11302
https://fedoraproject.org/wiki/Zswap
https://events17.linuxfoundation.org/sites/events/files/slides/z3fold.pdf
https://facebook.github.io/zstd/
Post edited by dougpess on
·

Comentários

  • dougpess disse:



    VERSION=1.8.1.2
    cd /tmp
    wget -nc https://github.com/lz4/lz4/archive/v1.8.1.2.tar.gz -O lz4.tar.gz
    tar -xf lz4.tar.gz
    cd lz4-$VERSION
    make
    echo y | sudo checkinstall
    echo lz4 | sudo tee -a /etc/initramfs-tools/modules
    echo lz4_compress | sudo tee -a /etc/initramfs-tools/modules
    sudo update-initramfs -u
    Só não entendi essa parte.
    ·
  • @Francis
    Essa parte serve para baixar e instalar a versão mais recente da biblioteca LZ4
    VERSION=1.8.1.2
    cd /tmp
    wget -nc https://github.com/lz4/lz4/archive/v1.8.1.2.tar.gz -O lz4.tar.gz
    tar -xf lz4.tar.gz
    cd lz4-$VERSION
    make
    echo y | sudo checkinstall
    Essa parte faz com que os módulos lz4 e lz4_compress sejam carregados na inicialização do sistema
    echo lz4 | sudo tee -a /etc/initramfs-tools/modules
    echo lz4_compress | sudo tee -a /etc/initramfs-tools/modules
    sudo update-initramfs -u
    ·
  • dougpess disse:

    @Francis
    Essa parte serve para baixar e instalar a versão mais recente da biblioteca LZ4

    VERSION=1.8.1.2
    cd /tmp
    wget -nc https://github.com/lz4/lz4/archive/v1.8.1.2.tar.gz -O lz4.tar.gz
    tar -xf lz4.tar.gz
    cd lz4-$VERSION
    make
    echo y | sudo checkinstall
    Essa parte faz com que os módulos lz4 e lz4_compress sejam carregados na inicialização do sistema
    echo lz4 | sudo tee -a /etc/initramfs-tools/modules
    echo lz4_compress | sudo tee -a /etc/initramfs-tools/modules
    sudo update-initramfs -u
    Beleza, mas quando chego nessa parte cd lz4-$VERSION da erro.
    :/tmp$ cd lz4-$VERSION
    bash: cd: lz4-: Arquivo ou diretório não encontrado



    ·
  • editado março de 2018
    Francis disse:

    Beleza, mas quando chego nessa parte cd lz4-$VERSION da erro.

    :/tmp$ cd lz4-$VERSION
    bash: cd: lz4-: Arquivo ou diretório não encontrado
    Antes você precisa rodar o comando VERSION=1.8.1.2 para que essa linha funcione.
    Post edited by dougpess on
    ·
  • dougpess disse:

    Francis disse:

    Beleza, mas quando chego nessa parte cd lz4-$VERSION da erro.

    :/tmp$ cd lz4-$VERSION
    bash: cd: lz4-: Arquivo ou diretório não encontrado
    Antes você precisa rodar o comando VERSION=1.8.1.2 para que essa linha funcione.
    Já tinha testado antes de posta, mas da a mesma mensagem.

    ·
Entre ou Registre-se para fazer um comentário.