segunda-feira, 8 de dezembro de 2025

Otimização de memória para máquinas modestas

 Otimização de memória para máquinas modestas


    Nesta dica - https://www.vivaolinux.com.br/artigo/Conciliando-o-uso-da-ZRAM-e-SWAP-em-disco-na-sua-mquina - mostro como priorizar o uso da RAM em relação à swap, como habilitar o uso da zram e a sua configuração e como conciliar o uso da zram com a swap em disco, seja esta em arquivo ou partição.

    Nesta nova dica vou "aprimorar" algumas configurações mostradas na dica anterior e implementar mais uma configuração de otimização de uso da memória RAM em máquinas modestas. Começando pela dica anterior que ainda continua válida; esse "apêndice" é apenas para melhorar o que está bom OU precisa de ajustes. Dois dos ajustes seriam:

  • vm.swappiness: use o valor de 20 para RAM sem zram rodando no sistema, com ou sem swap em disco; 60 se usar zram sem swap em disco; 40 para postergar o uso da swap da zram para atrasar o uso da swap em disco. Em todo caso, o valor desse parâmetro mostra ao sistema qual prioridade dar ao uso da RAM: valores próximos a 0 tendem a dar prioridade à RAM antes de passar para a swap e valores próximos de 100 tendem a dar prioridade de uso à swap, seja em disco ou zram 60 seria o valor padrão;
  • vm.min_free_kbytes = valor usado pelo kernel para tentar manter RAM livre para uso das páginas de memória que estão sendo utilizadas e evitar travamentos do sistema quando "o caldo engrossa". Use os valores de 131072 ou 65536 para sistemas com pouca memória RAM.

    De posse dessas informações, no arquivo .conf do sysctl criado, podemos colocar o seguinte:

#########################################################################
vm.swappiness = 40 #20 para RAM sem zram; 60 se usar zram; 40 para postergar o uso da swap em disco se usar zram
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
vm.dirty_expire_centisecs = 1000
vm.dirty_writeback_centisecs = 500
vm.vfs_cache_pressure = 50
vm.page-cluster = 0
vm.min_free_kbytes = 65536 #para ram baixa (2GB); até 4GB tente 131072
##########################################################################

    Agora vamos à "configuração extra". Essa dica pode ser usada em:
  • Máquinas com pouca RAM - abaixo de 4GB;
  • Processadores mais antigos ou pererecas - basicamente CPU single-core ou dual-core antigos (Core 2 Duo, Pentium Dual Core, Atom antigo);
  • Uso "leve" como navegação e edição de páginas da internet, uso de suítes de Office, vídeos/áudio básicos e edição de vídeos básica e imagens leves.

        O que vamos fazer aqui é desabilitar o THP. Ele - a grosso modo - junta páginas de memória pequenas em aglomerados maiores para ter menos paginação e melhorar o gerenciamento. O uso do THP é útil em trabalhos mais "cabeludos" como jogos, virtualização e edição pesada de vídeo, ou seja, trabalhos que demandem muita RAM. Usar esse recurso em uma máquina "perereca" com pouca RAM só faz o sistema ficar sobrecarregado por ser mais difícil alocar memória livre, pressão na swap e maior consumo de RAM. Se você está nessa de máquina modesta, então pode valer à pena experimentar esse recurso que vou mostrar agora - foi feito no Debian. Para ver o "valor" do THP atual, digite no Terminal:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

    O valor mostrado quando ativas é always (o Kernel tenta usar páginas grandes sempre que possível) ou madvise (usa páginas grandes só se o aplicativo pedir). Vamos lá então desabilitá-lo, crie o arquivo:

sudo nano /etc/systemd/system/disable-thp.service

    Coloque dentro:

#########################################################################
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
ExecStart=/bin/sh -c 'echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
######################################################################

    Salve o arquivo e depois no Terminal:
sudo systemctl daemon-reexec
sudo systemctl enable --now disable-thp.service

e reinicie a máquina. Ao digitar de novo no Terminal os comandos:

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

deverá aparecer para ambos "never". Isso poderá ou não melhorar a performance da máquina para a situação de uso "leve" da máquina, conforme recomendação mais acima.

Olha que Conky "bunitinhu" pra usar no seu sistema

 

Olha que Conky "bunitinhu" pra usar no seu sistema



Estou postando aqui um arquivo .deb para a instalação desse "tema" Conky mostrado na imagem abaixo:

Linux: Olha que Conky 'bunitinhu' pra usar no seu sistema


O pacote foi feito para o Debian e distribuições baseadas e como a maioria é tudo chupada do Debian, acredito que não vão ocorrer problemas. Esse Conky fica melhor visualizado com imagens de wallpapers mais "escurecidos", basta testar na sua máquina.

Para instalar o pacote:
sudo dpkg -i conky-personalizado.deb

Os pacotes extras a serem instalados são:
sudo apt install vnstat conky curl git

Para ativar o VnStat:
sudo sudo vnstat --add -i sua-interface-de-rede

Se a interface de rede for enp1s0, então:
sudo sudo vnstat --add -i enp1s0

Para iniciar o VnStat junto do sistema e botar pra rodar imediatamente:
sudo systemctl enable vnstat
sudo vnstat start vnstat

Para ativar o conky uma vez "pra ver qualé", abra o Terminal e digite sem as aspas "conky". Se quer que ele inicie sempre ao ligar o sistema:

cp /usr/share/applications/conky.desktop ~/.config/autostart

Talvez seja necessário mudar a linha do exec em ~/.config/autostart/conky.desktop. Edite o arquivo e procure a linha:

Exec=conky --daemonize --pause=1

e troque por:

Exec=bash -c "conky --daemonize && sleep 40 && killall conky && sleep 2 && conky --daemonize"

O valor de "sleep 40" depende do tipo de disco que você usa. Se for SSD pode colocar um valor menor, de 15 por exemplo.

Tem a versão script de instalação, basta baixá-la em um dos links abaixo, descompactar, entrar na basta e executar o arquivo sh. Se der erro de execução, dê o chmod +x no arquivo sh e tente de novo. A versão .deb testei em "300 máquinas" e funcionou, só não testei a de script, hehehe...

Arquivo .deb:
https://drive.google.com/file/d/1uhOfGDnc3xWKPnvfgudRUGxd0PH2E4AW/view?usp=sharing
 

Hardware antigo no Arch Linux e outras distribuições

 

Hardware antigo no Arch Linux e outras distribuições



O Linux, de um modo geral, tenta deixar o sistema o mais compatível possível com hardware mais antigo ou mesmo mediamente antigo para que aquela máquina que "não roda mais Windows" possa ser usada de novo, evitando assim um gasto desnecessário de fundos para fazer o mesmo que uma máquina nova faria. O problema é quando com tanta coisa velha os desenvolvedores precisam tirar certas coisas do kernel para que ele não fique gigante já que isso demanda processamento para usar o que precisa.

Uma das coisas que acabam ocorrendo nessa "purificação" do kernel é justamente a retirada de módulos que podem ser necessários para que determinados dispositivos possam ser reconhecidos e/ou ativados no sistema e é comum vermos kernels mais novos - como o do Arch - não reconhecerem alguns dispositivos que em outras distribuições funcionam. Aí taxam o sistema de "não reconhecer nada" mas não é por aí se o usuário tiver um pouco de calma nessa hora. É realmente chato quando nos sugerem determinada distribuição dizendo que "é a melhor disso ou daquilo" e aí o usuário vai tentar usar e dá alguma zika na bagaça.

Uma das formas de se remediar isso no Arch é usar o kernel LTS, que mantém o suporte a hardware antigo que o kernel mais novo não provê.

Linux: Hardware antigo no Arch Linux e outras distribuições
 
Como mostrado na figura, o kernel LTS está na versão 6.12.47-1 (pouca coisa mais novo que o atual kernel do Debian 13 que é o 6.12.43) na data de escrita dessa dica enquanto que o kernel mais novo do Arch é o 6.16.18. Esse fenômeno (dispositivos que param de funcionar nos kernels mais novos) é inerente das distribuições de Linux e aquelas mais "espertas" compilam seus sistemas para ainda manter suporte ao hardware legado mesmo que isso insira no sistema uma pequena perda de performance. E esse é realmente um problema pois há situações onde não é possível manter "o novo e o velho" no mesmo kernel devido a limites de pacotes, sejam nas versões ou disponibilidade dos mesmos para não conflitarem entre si.
Para instalar o kernel LTS no Arch, abra o Terminal e digite:

sudo pacman -S linux-lts linux-lts-headers

Depois de instalado, reinicie a máquina e, no boot, escolha a entrada LTS. Se ficar tudo ok, podemos fazer uma mudança pra fazer o Grub "grubar" essa entrada como a principal (last used). Abra o Terminal e digite:

sudo nano /etc/default/grub

Procure pelas linhas e deixe-as conforme abaixo (o que tiver # tire-a e mude o que estiver entre aspas):
  • GRUB_DEFAULT="saved"
  • GRUB_SAVEDEFAULT="true"

Salve e feche com CTRL+O e CTRL+X. Ainda no Terminal digite:

sudo sudo grub-mkconfig -o /boot/grub/grub.cfg

Isso recriará as entradas do Grub e o kernel (ou boot) padrão selecionado será o último que foi dado na máquina. O mesmo pode ser tentado em outras distribuições no que se refere ao uso de um kernel mais antigo que esteja presente no sistema ou no repositório, mudando o comando de update do grub para - por exemplo - sudo update-grub (no Debian e "similares").

Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads

 

Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads



O YT-DLP é um script que permite ao usuário baixar vídeos e áudios de sites como YouTube e outros sites do tipo via linha de comando, sendo uma mão na roda para os usuários que querem guardar conteúdo para não ter que ficar procurando em históricos e coisas assim. A instalação é fácil, basta usar o seu gerenciador de pacotes e procurar por "yt-dlp"; serão instalados também as dependências necessárias para a conversão de áudio e vídeo como o ffmpeg.

Como o YT-DLP não é muito bem visto por esses sites de conteúdo A/V há uma espécie de "gato e rato" onde os sites mudam os parâmetros de exibição de vídeos e os desenvolvedores das ferramentas de downloads (como o YT-DLP) adaptam o que criaram para poder funcionar com as novas configurações das plataformas. E um dos problemas que isso acarreta é o programa simplesmente não poder mais fazer a função para a qual foi projetado. Distribuições como Debian e até outras mais modernas sofrem disso pois seus repositórios demoram a atualizar o necessário - isso quando o fazem. Uma forma de ver o erro de versão quando ele parar de funcionar é digitar no Terminal o comando sudo yt-dlp -U e, provavelmente, deverá aparecer uma mensagem de que o programa foi instalado a partir de repositório e que você deve atualizá-lo por lá: o problema é quando o do repositório não tem atualização. Então, o que vai ser mostrado abaixo é a solução do problema.

A forma mais direta de instalar o YT-DLP por cima do que já estiver instalado (se não estiver instalado, instale-o pelo repositório como falado mais acima) é ir no site https://github.com/yt-dlp/yt-dlp e baixar o pacote https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux.

Depois de baixado, descompacte-o e, dentro da pasta descompactada, haverá um executável de nome yt-dlp_linux. Abra o Terminal estando dentro dessa pasta e, supondo que o YT-DLP esteja na pasta /usr/bin/, digite o seguinte comando:

sudo cp -rfv yt-dlp_linux /usr/bin/yt-dlp

Pronto. Agora, quando o YT-DLP der erro de versão, basta digitar " yt-dlp -U " e, se houver alguma atualização direta do site, o mesmo será atualizado.

sudo yt-dlp -U

Latest version: stable@2025.04.30 from yt-dlp/yt-dlp
yt-dlp is up to date (stable@2025.04.30 from yt-dlp/yt-dlp)

Para completar, seguem dois alias para serem colocados no seu ~/.bashrc ou ~/.zshrc para baixar vídeos na melhor resolução de áudio e vídeo combinados e que podem ser visualizados em qualquer dispositivo (um baixa em mp4 e o outro em mkv) com suporte básico a H_264:

alias mp4='yt-dlp -f "bestvideo[ext=mp4][vcodec^=avc1][height<=1080]+bestaudio[ext=m4a]/best[ext=mp4][vcodec^=avc1][height<=1080]" --merge-output-format mp4 -o "%(title)s.mp4"'

alias mkv='yt-dlp -f "bestvideo[ext=mp4][vcodec^=avc1][height<=1080]+bestaudio[ext=m4a]/best[ext=mp4][vcodec^=avc1][height<=1080]" --merge-output-format mkv -o "%(title)s.mkv"'

Coloque um ou ambas as linhas no final do seu ~/.bashrc ou ~/.zshrc, dê um source ~/.bashrc ou source ~/.zshrc de acordo com a opção de shell que você usa e pronto, basta digitar " mp4 url_do_vídeo " ou " mkv url_do_vídeo " e o vídeo será baixado na melhor opção de áudio e vídeo na pasta em que você estiver com o Terminal aberto 

Configurando o Conky para iniciar corretamente no sistema

 

Configurando o Conky para iniciar corretamente no sistema



O Conky é um gadget em modo texto para a área de trabalho que mostra informações básicas sobre o sistema.

 
 
Funciona muito bem no Gnome e no KDE mas pode ocorrer do Conky não aparecer no desktop quando se escolhe fazer com que se inicie junto do sistema. O Conky precisa ser iniciado apenas quando a parte gráfica sobe, senão nada é mostrado apesar de aparecer o PID de execução ao usar o comando "top". Nesses casos, se for dado um "killall conky" e depois "conky" ele aparece no desktop.

Uma forma de evitar isso é editar o arquivo "/usr/share/applications/conky.dektop" e mudar a linha do EXEC com o "--pause 1" para "--pause 15" para dar tempo do sistema gráfico entrar; o valor pode ser aumentado para 30 no caso de sistemas que usem discos rígidos. Mas ainda assim o Conky pode não funcionar ou entrar umas vezes e outras não, então vamos ver aqui como fazer com que o Conky seja carregado, depois parar a sua execução e fazê-lo voltar a rodar.

Edite o arquivo:

sudo nano /usr/share/applications/conky.dektop

Substitua a linha:

Exec=conky --daemonize --pause=1

para:

Exec=bash -c "conky --daemonize && sleep 15 && killall conky && sleep 2 && conky --daemonize"

 
O valor de 15 é adequado para quem usa discos SSD, mude para valores entre 20 ou 40 e veja qual se ajusta melhor ao seu sistema. Salve e feche o arquivo (ctrl + O/ctrl + X) e reinicie a máquina e veja o resultado. Podem haver outras configurações no arquivo ~/.conkyrc que podem não estar permitindo o Conky de ser exibido, como o parâmetro "own_window_type = 'normal'," onde o "normal" pode ser usado como "desktop" ou "override".

Adicionando o repositório backports no Debian 13 Trixie

 

Adicionando o repositório backports no Debian 13 Trixie



Sinceramente acho meio apressado fazer esse tipo de procedimento; afinal, o Trixie foi lançado em Agosto de 2025 e basicamente não precisa de pacotes novos pois já é um "sistema novo". Mas sempre tem aqueles pela-saco (como eu) que gostam de "viver no limite funcional" do sistema, ou seja, o sistema está estável mas quer mais desempenho mesmo que isso custe uma parte dessa estabilidade na melhor versão do "vamos ver aonde isso vai dar".

Os pacotes do repositório backports (com designo BPO nos pacotes) são versões mais novas dos pacotes da versão estável vigente e que podem ser instalados por conta e risco do usuário. O update nesse caso não está disponível (sudo apt update && apt full-upgrade) justamente para que o sistema não seja quebrado eventualmente mas os arquivos estarão lá para serem instalados conforme o desejo do usuário - manualmente, claro.

Para adicionar o repositório, abra o Terminal e digite:

sudo nano /etc/apt/sources.list.d/debian-backports.sources

Coloque lá dentro:

###########################################################
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie-backports
Components: main
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
###########################################################

Salve (ctrl+o) e feche (ctrl+x) o arquivo, rode:
sudo apt update

Os pacotes então estarão disponíveis para instalação. O modo mais fácil de ver tais pacotes é usando o Synaptic (gerenciador gráfico do apt), como mostra a imagem abaixo:

Linux: Adicionando o repositório backports no Debian 13 Trixie
 
Basta então selecionar para instalação e depois aplicar. Os pacotes novos podem ser vistos na sessão "Novo no Repositório". Na maioria das vezes o repositório backports é mais usado para a instalação de pacotes de kernel mais novos do que o que vem na versão estável do sistema mas, com o passar do tempo do desenvolvimento da próxima nova versão do sistema mais pacotes vão sendo adicionados. Por isso que eu falei lá no início que esse tipo de situação é meio apressada pois o sistema é novo e ainda não precisa de pacotes novos mas sabemos como é o usuário...

Consertando o áudio com estalos e interrupções no Pipewire

Consertando o áudio com estalos e interrupções no Pipewire



Uma coisa relativamente chata são as interrupções no áudio e, pior, quando durante a execução de um arquivo de áudio ou vídeo o som fica com partes com ruídos que parecem "pum". Isso acontece mais em máquina perereca porque o processador demora a reagir quando o áudio precisa de dados. Aí o som pede, a CPU não responde a tempo, o buffer esvazia e o áudio sofre um corte (espaços sem som) ou engasga (som de pum). Mesmo que a placa-mãe tenha um chip de áudio interno (sim, um chip como Realtek ou Via VT e que não são um DSP de fato), é o processador quem gerencia a bagaça toda, a não ser que a máquina do usuário tenha uma placa de som do tipo profissional (offboard) ou mesmo onboard (muito raro) com um DSP de verdade.

Vamos ver como resolver isso ou pelo menos tentar. Abra o Terminal e digite:

systemctl --user status wireplumber

Deverá aparecer algo assim:

wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-12-07 05:40:50 -03; 2h 53min ago
Invocation: 339d19069a9b4fc985bec512084b21a8
Main PID: 1217 (wireplumber)
Tasks: 9 (limit: 4330)
Memory: 6.6M (peak: 7.3M)
CPU: 716ms


Depois:

ps -e | egrep "wireplumber|pipewire-media-session"

Deverá aparecer algo assim:

1217 ? 00:00:00 wireplumber

Isso vai mostrar que é o Wireplumber que manda na bagaça e que é o que precisamos. Ainda no Terminal:

wireplumber --version

Se for 0.5 pra cima, no Terminal digite:

mkdir -p ~/.config/wireplumber/wireplumber.conf.d
nano ~/.config/wireplumber/wireplumber.conf.d/51-audio-buffer.conf

Coloque dentro:


monitor.alsa.rules = [
{
matches = [
{
node.name = "~alsa_.*"
}
]
actions = {
update-props = {
#experimente valores como 2048 se o problema continuar
api.alsa.period-size = 1024
api.alsa.period-num = 3
#experimente valores como o dobro ou o quádruplo do valor se o problema continuar
api.alsa.headroom = 16384
#experimente valores como 2048 se o problema continuar
node.latency = "1024/48000"
}
}
}
]

Salve o arquivo e reinicie a máquina. Se o seu Wireplumber for abaixo de 0.5, no Terminal:

mkdir -p ~/.config/wireplumber/main.lua.d
nano ~/.config/wireplumber/main.lua.d/51-audio-buffer.lua

Coloque dentro:


alsa_monitor.rules = {
{
matches = {
{ { "node.name", "matches", "alsa_*" }, },
},
apply_properties = {
["api.alsa.period-size"] = 1024,
["api.alsa.period-num"] = 3,
["api.alsa.headroom"] = 16384,

["node.latency"] = "1024/48000"
},
},
}

Salve o arquivo e reinicie a máquina. Como no exemplo anterior, se o problema continuar altere os itens api.alsa.period-size = 1024, api.alsa.headroom = 16384 e node.latency = "1024/48000" para os valores extra-exemplificados no primeiro exemplo de configuração.

E atenção aos chatos de plantão: isso PODE funcionar ou não, na minha funcionou; não ficou 100% mas diminuiu muito mesmo (quase 90%) a "punzaria"...