ZSWAP em Sabayon Linux. Controlável, “Ligável” e “Desligável”.


Autoria de Alberto Federman Neto, albfneto

Coautoria dos Scripts : Arthur  J. Hoch, Arthur_Hoch

                                        Marcelo Oliver, msoliver

                                        Listeiro 037, listeiro_037

Atualizado em 22 de Outubro de 2019. Agora, usando a última versão de ZRAM-Utils de Abuseware, Artur Kaleta , Polônia.

Observação: Se não é especialista e desejar apenas usar ZSWAP Ligável e Desligável, vá direto ao Ítem F. Lá, encontrará como baixar um pacote com todos os Scripts e Software necessários.

A – INTRODUÇÃO:

O que são ZRAM e ZSWAP?

Em palavras  bem simples (e sem rigor técnico), ZRAM é a compressão da RAM, que diminui o tamanho dela, com isso ela pode caber na RAM mesmo (ZSWAP) sem precisar  passar para uma partição ou arquivo (SWAP clássica).

Swap é a (o) partição (arquivo) de troca do Linux. Nela, o Sistema grava e usa, depois deleta, os dados quando a memória RAM, física (de hardware) é insuficiente.

Veja:

Criando e Aumentando Memória SWAP no Linux.

Aumentando Área de SWAP.

Embora só possa ser usada em micros com muita RAM, Swap em RAM é vantajosa porque a leitura direta da RAM é mais rápida do que a leitura de partição no disco ou de um arquivo.

ZRAM  e ZSWAP podem ser usadas em várias Distros:

ZRAM no Debian.

Ativando ZRAM no Slackware.

Ativando ZRAM no Slackware. 2.

Ativando ZRAM no Slackware. 3.

ZRAM no Arch Linux.

Systemd + ZRAM no Debian Wheezy.

Nos últimos anos, eu tenho publicado vários Métodos para o uso de ZRAM e ZSWAP específicamente em Sabayon Linux,  a Distribuição que uso no dia a dia:

Experimento. Swap na Memória RAM. Testes de RAM e Swap.

Usando Swap na RAM, em Sabayon. Método Novo.

Usando ZRAM em Sabayon, Nova Atualização.

Testes Iniciais com ZRAM em Sabayon Linux.

Neste Artigo, descrevo mais um Método recente: ZSWAP, agora: Regulável, Controlável e “Desligável”.

Ou seja, você decide quando ligar, quando usar, ou se vai ativar um núcleo só, ou todos etc… Pode desligá-la etc…

B – VANTAGENS:

Sôbre os Métodos anteriores, este tem algumas vantagens, além da óbvia, o controle.

Pode ser usada em computadores com OpenRC ou em Systemd, não há necessidade de instalação “própriamente dita” do pacote, porque são scripts que funcionam sem precisar instalar nada. Não precisa sequer ativar serviços de boot e nem alterar o Grub.

Por isso, resolvi trazer para vocês esse Método, que considero muito interessante.

C – PRÉ-REQUISITOS DE HARDWARE E SOFTWARE:

O Computador usado, um AMD Phenon. Bulldozer, 8120, 64 Bits, 8 núcleos e com 16 Giga de RAM, DDR3.

3 Sistemas Operacionais: Duas instalações de Sabayon 16.08, uma de Testes e uma Principal, e um OpenSUSE Tumbleweed. Todos os três Linux usam Systemd, por default.

A Partição usada neste Artigo foi a do Sabayon de Testes, ambiente gráfico KDE5. O micro e os Sistemas Operacionais foram descritos nesse outro Artigo, 1.

Preparando o micro para uniformizar todos os testes, configurei a CPU para regime de alta performance , e instalei dois  pacotes: o “carregador” de aplicativos na RAM preload (mantive a Swap de disco) e o “controlador” de memória de processos, Verynice.

A Swap, eu a mantive ativa. Ela tem 8 giga.

D – PACOTE DE ZRAM-ZSWAP USADO:

Usei o pacote chamado zram-utils do Programador Artur Kaleta,, Abuseware, da Polônia.

Alternativas relacionadas (não testei) seriam os pacotes: zswap de Mark Lee, BlueRider New York, EUA, e o Zram-Utils do Russo Igor Bukanov.

De fato,  o que usei é  outra versão mais nova  do mesmo pacote que foi usado  neste meu outro Artigo.

Se não se importar de modificar um pouco seu Sabayon, vc pode achar o pacote zram-utils do Licho, no Overlay Gentoo Nirvana:

Gentoo Portage Overlays. Zram-Utils. Nirvana.

que pode ser instalado com Portage.

# emerge --sync
# emerge -av --oneshot portage
# layman -a nirvana
# layman -S
# emerge -av zram-utils

Para uma maneira mais simples e sem alterar dependências, faça como eu fiz:

Crie uma pasta no Desktop, da qual conheça a localização. Por exemplo ~/Desktop/PACOTES/Zram-Utils.

Olhe o programa no novo Site do pacote, e o baixe como preferir, manualmente, (wget) ou com o navegador, ou ainda usando aceleradores, como Curl, Aria2, Axel etc…, ou ainda com GIT.

Tudo isso por ser feito com os comandos abaixo. Em meus testes, verifiquei não ser necessário acesso como Root.

$ cd /
$ cd  ~/Desktop/PACOTES
$ mkdir Zram-Utils
$ cd Zram-Utils
$ wget https://github.com/Abuseware/zram-utils/archive/master.zip
OU
$ git clone https://github.com/Abuseware/zram-utils.git

Expanda o arquivo zipado. Pode usar sua interface gráfica (botão direito do mouse) ou pacotes como Ark, File-Roller, Engrampa etc… ou ainda com comandos, como zip-unzip, gunzip etc…

O “pacote” expandido na realidade, nem é um binário. São scripts, que diretamente, acessam o módulo zram do kernel.

Com isso, não é necessário Instalar nada, o que é vantajoso em relação aos métodos que publiquei anteriormente para o Sabayon (Veja Ítem A) e aos tradicionais para Gentoo e Funtoo.

Resumo: Baixou o “pacote”, está pronto para uso, sem instalar nada! Por isso, embora eu só o tenha testado em Sabayon, acredito que funcione em outras Distros.

 E – ATIVANDO E DESLIGANDO A ZSWAP:

Não iremos colocar o serviço no Systemd, pois a idéia é poder “desligar, ou controlar” , fácilmente.

Contudo, notei que se não copiava os serviços de systemd (que não seriam usados) para a pasta adequada, dos .services, não funcionava e ainda não descobrí o por que.

Então o próximo passo: estando na pasta onde baixou,  copie (links simbólicos tentei, mas não funcionaram) os arquivos necessários, para as pastas de sistema adequadas. Faça isso com os comandos abaixo, como Root:

# cp zswap@.service /usr/lib64/systemd/system/zswap@.service
# cp zswap.sh /usr/sbin/zswap.sh

Agora vamos testar, né?

Notei que como o Time Sabayon removeu todos os pacotes de ZRAM dos repositórios, o módulo de kernel não vem mais ativado por padrão. Ative o módulo de kernel:

# modprobe zram num_devices=8

Como eu tenho no computador 8 núcleos ativei para os 8. Como a idéia é pode “desligar”, não tornei permanente a carga do módulo.

Ative a Zswap para um dos núcleos (no exemplo, o 2), com os comandos abaixo. Note a saída do comando:

sudo /usr/sbin/zswap.sh start zram2  
                           
Starting zRAM Swap start                                                                          
Setting up swapspace version 1, size = 7,7 GiB (8272318464 bytes)
nenhum rótulo, UUID=a9e046ae-b3ae-475b-bd2d-1d1f5a0ac257

Está ativo? Vamos ver. Com o comando abaixo. Veja que está sim, e alocou quase 8 Giga para apenas um núcleo

$ sudo swapon --show
Senha: 
NAME       TYPE       SIZE USED  PRIO
/dev/sda8  partition 31,3G   0B    -1
/dev/zram2 partition  7,7G   0B 32767

Para ativar para os outros núcleos, repita os comandos, substituindo X pelo número do núcleo. Pesquisei, mas só achei ativação núcleo a núcleo, um por um:

$ sudo /usr/sbin/zswap.sh zramX

Vejam, repetindo o comando para cada núcleo, ativei para todos. Um jeito mais fácil de fazer isso. Depois que der o primeiro comando: $sudo /usr/sbin/zswap.sh start zram0 , aperte a tecla de seta “para cima” e não precisa digitar de novo,  troca só o número.

Após ativar todos os núcleos, eis a saída:

$ sudo swapon --show
NAME       TYPE       SIZE USED  PRIO
/dev/sda8  partition 31,3G   0B    -1
/dev/zram2 partition  7,7G   0B 32767
/dev/zram0 partition  7,7G   0B 32767
/dev/zram1 partition  7,7G   0B 32767
/dev/zram3 partition  7,7G   0B 32767
/dev/zram4 partition  7,7G   0B 32767
/dev/zram5 partition  7,7G   0B 32767
/dev/zram6 partition  7,7G   0B 32767
/dev/zram7 partition  7,7G   0B 32767

E para desligar? Use os comandos abaixo. Dessa maneira, todas as “Swap” são desligadas e só a Swap clássica é “religada”:

$ sudo swapoff -a
$ sudo swapon -a
$ sudo swapon --show
NAME      TYPE       SIZE USED PRIO
/dev/sda8 partition 31,3G   0B   -1

Se eu quiser desligar um só núcleo? Execute assim, suponha você quer desligar o núcleo 2:

sudo /usr/sbin/zswap.sh stop zram2
Stopping zRAM Swap stop

Usando isso, você teria de desligar e/ou religar, um por um. Um Shell Script viria a calhar e poderia automatizar o processo.

Mas não sou profissional de TI e praticamente não escrevo código, a não seu um pouquinho de HTML. Porém, com a a ajuda de meus Grandes Colegas do “Viva o Linux”:

Arthur_HochMsOliver e Listeiro_O37 (veja no Início do Artigo, os Coautores)

Escreví (escrevemos, né?) dois  Shell Scripts : zswaplig.sh e zswapdeslig.sh, que respectivamente, permitem ‘ligar” e “desligar” a Zswap de todos os 8 núcleos do computador. Ainda, os Scripts ativam e desativam o módulo zram no kernel.

Assim, com os Scripts, fica muito mais prático para “desligar” ou “religar” a Zswap e adicionar ou tirar o módulo de kernel.

Os Scripts  foram publicados no VOL, Viva o Linux. Vocês podem baixá-los, prontos, aqui:

zswaplig.sh, um “Ligador” de ZSWAP, Swap em RAM, para Sabayon Linux.

zswapdeslig.sh, um “Desligador” de ZSWAP, Swap na RAM, para Sabayon Linux.

Com adaptações, os Scripts poderão servir para outras distros, também.

Apesar de poder pegá-los prontos (no VOL ) e adaptá-los a seu caso, se quiser preparar cada um dos Scripts, abra seu editor de texto favorito, e copie e cole as linhas do Script, e o salve com um nome. Exemplos: zswaplig.sh e zswapdeslig.sh .

De maneira usual, prepare os Scripts para serem executados:

# chmod +x zswaplig.sh
# chmod +x zswapdeslig.sh

Para “ligar” a ZSwap, execute o Script zswaplig.sh (necessita de acesso Root. particularmente, em Sabayon, eu uso sudo):

$ sudo sh zswaplig.sh
OU
$ sudo ./zswaplig.sh

De maneira análoga, execute o outro Script, zswapdeslig.sh para “desligar” a ZSwap.

F – FACILITANDO TUDO:

Para facilitar para o não especialista, o software zram-utils que usei, os scripts,   e todos os Arquivos que são necessários para este e para o meu outro Artigo, eu os disponibilizei para serem baixados da minha área de download público no Google Drive, com um arquivo .tar.gz.

Baixe e Expanda o tar.gz . Use sua interface gráfica, ou pacotes como Ark, File-Roller, Emgrampa etc,,, ou ainda comandos.

Agora, para ligar a ZSwap, execute os scripts:

 
$ sudo sh acelera.sh
$ sudo sh zswaplig.sh 
OU 
$ sudo ./acelera.sh
$ sudo ./zswaplig.sh 

Para desligar a Zswap, execute:

 
$ sudo sh zswapdeslig.sh 
OU 
$ sudo ./zswapdeslig.sh 

Vejam como nossos Scripts “ligam” a ZSwap de todos os  8 núcleos:

Minha Nova Zswap Ativada.

Agora vejam “desligando” a ZSwap:

Nossos Scripts Desligando a ZSwap.

G – OUTROS JEITOS DE USAR:

E se eu quiser usar o tempo todo, carregado? e não desligando, controlando?

Tem vários jeitos. Um deles, coloque o serviço para iniciar no systemd. Se você usa KDE, pode gerenciar o systemd gráficamente. Com KCMSystemd ou com SystemdGenie.

Pode colocar para iniciar nos “aplicativos iniciados automáticamente”, na interface gráfica, pode colocar no cron, pode ainda fazer atalhos no Desktop. Para isso, veja estes Artigos e Dicas:

Como Criar Atalhos no Desktop.

Como Criar Atalhos no GNOME.

Correção de Ícones dos Atalhos de KDE e Links citados.

A Teoria Linux por Trás dos Acessos e dos Atalhos.

Uma maneira simples e que eu gosto, é fazer um alias no arquivo /home/usuário/.bashrc.

Em todo o caso, para este Artigo, o objetivo é mesmo  fazer a Zswap ser “ligável” e “desligável”.

H – ONDE POSSO USAR E TESTAR?

Teste, por que no meu caso, a diferença de performance é perceptível. Isso deve ser porque a leitura da RAM é sempre mais rápida que a leitura de uma Swap em disco.

Um dos mais interessantes e conhecidos usos. Coloque seus diretórios temporários na RAM. Para isso, edite seu arquivo /etc/fstab , seguindo este Tutorial do Amigo Xerxes Lins, ou Variantes.

I – CONCLUSÃO e TESTES:

Um Método relativamente fácil de ativar a ZSwap é descrito neste Artigo.

Ela pode ser ativada em quantos núcleos você quiser, ou em todos os núcleos, “ligada” ou “desligada”, ao bel prazer.

O módulo de Kernel é ativado ou desativado, também. Totalmente sob contrôle!

Alem disso, pode ser usada, mesmo sem mexer no systemd, e sem editar o Grub, por isso tem praticidade.

Testei em Sabayon, mas com modificações simples, poderá seu usada em outras Distros.

Os Testes com versões anteriores dessa ZSWAP “Ligável” e “Desligável”, podem ser encontrados neste outro Artigo:

ZSWAP em Sabayon Linux. Continuação. Testando a ZSWAP Controlável.

 

ZSWAP em Sabayon Linux. Controlável, “Ligável” e “Desligável”.

Deixe um comentário