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 5 de Setembro de 2016.

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 diminue 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.

É vantajosa porque a leitura direta da RAM é mais rápida do que a leitura do 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 contrôle.

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.

Porisso, resolví 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, 42.2 Leap. 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 é grande, 32 Giga, o dobro da RAM. No Artigo citado acima, 1, eu expliquei o por que. Não há problema, porque os testes foram feitos em igualdade de condições.

D. PACOTE DE ZRAM-ZSWAP USADO:

Usei o pacote chamado zram-utils do Programador Artur Kaleta, Licho, 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. Ocorre que o pacote antigamente era achado no Overlay Gentoo Nirvana:

Gentoo Portage Overlays. Zram-Utils. Nirvana.

e podia ser instalado com Portage. Mas o SIte Original, que hospedava o pacote, mudou, o Ebuild não foi corrigido e porisso,  o Portage não consegue acessar o pacote no Overlay, e não o instala mais.

Não há problema, faça como eu fiz:  Olhe o programa no novo Site do pacote, e o baixe  direto com GIT. Sabayon e os Linux tipo Gentoo usam muito GIT e por isso, tem GIT pré-instalado.

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

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
$ git clone https://github.com/abuseware/zram-utils 

Ao Navegar na pasta, no seu Gerenciador de Arquivos, você verá que há uma pasta interna, e nela, já expandido (nem precisa expandir!), o “pacote”:

Zram-Utils , Arquivos.
GERENCIADOR DE ARQUIVOS DOLPHIN, MOSTRANDO ZRAM_UTILS.

O “pacote” 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! Porisso, 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.

Além disso, o software zram-utils utilizado, os scripts rascunho, os Atalhos de Desktop e todos os Arquivos que são necessários para este e para o outro Artigo, eu os disponibilizei para serem baixados no Pastebin do Sabayon.

Apesar de poder pegá-los prontos (no VOL ou no Pastiebin) 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.

Vejam como o Script zswaplig.sh ligou a ZSwap de todos os  8 núcleos:

SHELL SCRIPT swaplig,sh ATIVOU A SWAP NOS 8 NÚCLEOS.
SHELL SCRIPT zswaplig.sh ATIVOU A ZSWAP NOS 8 NÚCLEOS.

Agora vejam o Script para “desligar” funcionando:

SHELL SCRIPT zswapdeslig.sh "DESLIGANDO" A ZWAP
SHELL SCRIPT zswapdeslig.sh “DESLIGOU” A ZWAP DE TODOS OS NÚCLEOS.

F.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.

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”.

G. 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.

H. 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”. O módulo de Kernel é ativado ou desativado, também. Totalmente sob contrôle!

Além disso, pode ser usada, mesmo sem mexer no systemd, e sem editar o Grub, porisso tem praticidade.

Os Testes com esta ZSWAP “Ligável” e “Desligável” podem ser encontrados neste outro Artigo:

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

 

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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s