terça-feira, 20 de outubro de 2020

Conky altera duas vezes o cálculo da Memória usada

Aumento aparente de uso de RAM, com o Conky 1.11.6

• Desde Agosto 2020, o Conky 1.11.6 passou a mostrar valores muito mais altos de uso de Memória RAM — no openSUSE Tumbleweed, Debian testing, Fedora, Mageia 8 (beta), Void Linux.

Situação após nova reviravolta do Conky

• Em Março 2021, o Conky 1.12.1 fez outra reviravolta, — passando a exibir valores muito baixos.

Desse modo, passaram a coexistir versões do Conky com 3 diferentes cálculos de uso de Memória RAM:

Conky 1.10.8   =  htop   (htop)        Neon, Mint 20, MX Linux 19
Conky 1.11.6   >  htop   (new calc)    Arch, Debian testing, Mageia 8
Conky 1.12.1   <  htop   (free, top)   openSUSE Tumbleweed, Fedora 33, PCLinuxOS, Void

Mas as coisas não pararam por aí.

• Até Outubro 2021, outras mudanças já haviam acontecido:

  • inxi (3.1.09), neofetch, (7.1.0*), screenfetch (3.9.1*) e htop (3.1.0) também já adotaram um “novo cálculo“ em suas versões mais recentes. — (*) Neofetch and Screenfetch now present different behaviors within the same versions.
  • O Conky já tinha recuado de sua segunda alteração
  • free / top (procps) são as únicas ferramentas que ainda permitem comparar o uso inicial de Memória RAM entre as 12 distros instaladas no meu PC, porque mantêm o mesmo cálculo em todas elas.

Ao longo desses 14 meses, me vi tentando vários modos de obter números consistentes entre as 12 distros que utilizo — desde o MX Linux 19 (Debian Buster) até o Arch Linux.

Índice

  • Novo cálculo (Conky 1.11.6)
  • Comparação precária (I)
  • Reviravolta (Conky 1.12.1)
  • Comparação precária (II)
  • Novas mudanças
  • Ferramentas e medições
  • MX Linux 21 Beta1
  • Situação atual
  • “Monitor do Sistema”

Novo cálculo (Conky 1.11.6)

Proposta do novo cálculo, em 2014

Os altos valores de uso de Memória RAM no Conky 1.11.6, não são um bug. — Trata-se de uma “correção” do antigo cálculo da “Memória RAM usada” — e foi sugerida ou subscrita por Linus Torvalds desde 2014 (Kernel 3.14), quando se introduziu em /proc/meminfo um campo “MemAvailable”, exatamente para tornar esse cálculo mais acurado:

Currently, the amount of memory that is available for a new workload, without pushing the system into swap, can be estimated from MemFree, Active(file), Inactive(file), and SReclaimable, as well as the "low" watermarks from /proc/zoneinfo.

However, this may change in the future, and user space really should not be expected to know kernel internals to come up with an estimate for the amount of free memory.

It is more convenient to provide such an estimate in /proc/meminfo. If things change in the future, we only have to change it in one place.

Aplicação do novo cálculo ao Conky, em 2019

A aplicação dessa mudança no Conky foi pedida em Junho 2019 e efetuada em Outubro 2019 (acima), — cerca de 10 meses antes de o Conky 1.11.6 chegar às minhas distros rolling-release (e ao Fedora).

Foi um movimento em direção a um cálculo “tecnicamente mais correto”, — embora tenha quebrado a consistência com os números indicados por versões 1.10.8 e anteriores do Conky.

Comparação precária (I)

Memória RAM usada, segundo Conky, htop, inxi, free, top

Outubro 2020 - Em um primeiro momento, incluir o htop no Conky me pareceu um modo prático de ter sempre o “cálculo antigo” diante dos olhos, — para uma comparação (ainda que precária) do uso inicial de Memória RAM entre distros Linux que agora tinham versões do Conky com cálculos diferentes.

Indicações iguais de uso de RAM pelo Conky e pelo htop, em 2019

A paridade do htop com o “cálculo antigo” do Conky — exceto no openSUSE Leap (que não uso mais) — era coisa observada desde 2017:

------------------------ Conky vs. htop – RAM Memory usage -------------------------

     Date        Time     Distro                Conky     htop      A-B        A/B

2017 Jun. 14   16:11:06   Debian testing          651      636     + 15     +  2.36%
2017 Jun. 14   17:30:52   Debian testing          547      547
2017 Jun. 14   17:34:07   Debian testing          489      487     +  2     +  0.41%
2017 Jun. 16   02:07:16   Debian testing          441      441
2017 Jun. 16   02:07:20   Debian testing          488      486     +  2     +  0.41%
2017 Jun. 16   02:08:08   Debian testing          450      450
2017 Jun. 16   04:41:51   Debian testing          448      448

2017 Jun. 14   17:23:28   Kubuntu 16.04           538      538
2017 Jun. 14   17:26:26   Kubuntu 16.04           479      479
2017 Jun. 14   17:28:21   Kubuntu 16.04           461      461
2017 Jun. 15   14:20:28   Kubuntu 16.04           457      456     +  1     +  0.22%
2017 Jun. 15   14:24:49   Kubuntu 16.04           459      459
2017 Jun. 15   14:26:00   Kubuntu 16.04           435      435
2017 Jun. 16   02:21:56   Kubuntu 16.04           431      431
2017 Jun. 17   16:22:41   Kubuntu 16.04           444      444

2017 Jun. 14   16:22:25   KDE Neon (16.04)        482      482
2017 Jun. 14   17:37:32   KDE Neon (16.04)        487      478     +  9     +  1.88%
2017 Jun. 14   17:40:34   KDE Neon (16.04)        428      420     +  8     +  1.90%
2017 Jun. 16   01:46:54   KDE Neon (16.04)        431      432     -  1     -  0.23%
2017 Jun. 16   01:46:56   KDE Neon (16.04)        436      436
2017 Jun. 16   01:47:47   KDE Neon (16.04)        430      430
2017 Jun. 16   03:00:58   KDE Neon (16.04)        433      433
2017 Jun. 16   05:30:43   KDE Neon (16.04)        420      420

2017 Jun. 14   13:44:11   Mint 18 KDE (16.04)     638      638
2017 Jun. 14   16:53:41   Mint 18 KDE (16.04)     558      558
2017 Jun. 14   17:09:59   Mint 18 KDE (16.04)     510      510
------------------------------------------------------------------------------------
     Date        Time     Distro                Conky     htop      A-B        A/B

2017 Jun. 14   13:19:36   Arch                    556      552     +  4     +  0.72%
2017 Jun. 14   16:58:18   Arch                    549      546     +  3     +  0.55%
2017 Jun. 14   17:00:08   Arch                    467      466     +  1     +  0.21%
2017 Jun. 14   18:23:08   Arch                    471      474     -  3     -  0.63%
2017 Jun. 15   14:44:56   Arch                    475      478     -  3     -  0.63%
2017 Jun. 15   14:46:13   Arch                    458      458
2017 Jun. 15   15:01:01   Arch                    477      475     +  2     +  0.42%
2017 Jun. 15   15:02:18   Arch                    457      457
2017 Jun. 15   19:49:33   Arch                    465      465
2017 Jun. 15   19:49:42   Arch                    490      490
2017 Jun. 15   19:50:19   Arch                    449      449
2017 Jun. 15   19:50:49   Arch                    451      451
2017 Jun. 16   05:36:30   Arch                    482      482
2017 Jun. 16   05:37:12   Arch                    466      466

2017 Jun. 14   18:20:05   Arch  (2)               438      439     -  1     -  0.23%
2017 Jun. 14   18:21:36   Arch  (2)               436      432     +  4     +  0.93%
2017 Jun. 15   14:47:53   Arch  (2)               445      445
2017 Jun. 15   14:49:11   Arch  (2)               418      418
2017 Jun. 15   14:51:19   Arch  (2)               419      419
2017 Jun. 15   14:52:42   Arch  (2)               394      394
2017 Jun. 15   14:56:10   Arch  (2)               420      417     +  3     +  0.72%
2017 Jun. 15   14:57:31   Arch  (2)               405      405
------------------------------------------------------------------------------------
     Date        Time     Distro                Conky     htop      A-B        A/B

2017 Jun. 14   16:32:58   Mageia 6 (sta2)         664      664
2017 Jun. 14   17:43:23   Mageia 6 (sta2)         670      666     +  4     +  0.60%
2017 Jun. 14   17:47:01   Mageia 6 (sta2)         618      618
2017 Jun. 15   22:21:21   Mageia 6 (sta2)         605      584     + 21     +  3.60%
2017 Jun. 15   22:22:04   Mageia 6 (sta2)         596      596
2017 Jun. 15   22:22:34   Mageia 6 (sta2)         599      599
2017 Jun. 15   22:47:51   Mageia 6 (sta2)         583      582     +  1     +  0.17%
2017 Jun. 15   22:48:32   Mageia 6 (sta2)         554      554
2017 Jun. 15   23:19:17   Mageia 6 (sta2)         580      580
2017 Jun. 15   23:20:02   Mageia 6 (sta2)         554      554
2017 Jun. 15   23:20:32   Mageia 6 (sta2)         555      554     +  1     +  0.18%
2017 Jun. 15   23:40:21   Mageia 6 (sta2)         576      574     +  2     +  0.35%
2017 Jun. 15   23:41:10   Mageia 6 (sta2)         550      550
2017 Jun. 16   01:18:54   Mageia 6 (sta2)         582      581     +  1     +  0.17%
2017 Jun. 16   01:19:39   Mageia 6 (sta2)         556      556
2017 Jun. 16   04:56:03   Mageia 6 (sta2)         579      579
2017 Jun. 16   04:56:38   Mageia 6 (sta2)         561      561
------------------------------------------------------------------------------------
     Date        Time     Distro                Conky     htop       A-B        A/B

2017 Jun. 14   15:29:53   openSUSE Leap 42.2      590      480     + 110    + 22.92%
2017 Jun. 14   15:33:25   openSUSE Leap 42.2      577      475     + 102    + 21.47%
2017 Jun. 14   17:14:40   openSUSE Leap 42.2      594      481     + 113    + 23.49%
2017 Jun. 14   17:17:36   openSUSE Leap 42.2      528      437     +  91    + 20.82%
2017 Jun. 15   16:32:21   openSUSE Leap 42.2      517      413     + 104    + 25.18%
2017 Jun. 15   16:32:25   openSUSE Leap 42.2      549      448     + 101    + 22.54%
2017 Jun. 15   16:33:43   openSUSE Leap 42.2      528      470     +  58    + 12.34%
2017 Jun. 15   16:34:42   openSUSE Leap 42.2      622      575     +  47    +  8.17%
2017 Jun. 15   16:39:00   openSUSE Leap 42.2      533      449     +  84    + 18.71%
2017 Jun. 15   16:42:32   openSUSE Leap 42.2      537      437     + 100    + 22.88%
2017 Jun. 15   17:13:52   openSUSE Leap 42.2      594      565     +  29    +  5.13%
2017 Jun. 15   17:59:12   openSUSE Leap 42.2      529      434     +  95    + 21.89%
2017 Jun. 15   18:00:47   openSUSE Leap 42.2      516      457     +  59    + 12.91%
2017 Jun. 15   18:01:47   openSUSE Leap 42.2      516      457     +  59    + 12.91%
2017 Jun. 16   05:10:25   openSUSE Leap 42.2      536      432     + 104    + 24.07%
2017 Jun. 16   05:10:53   openSUSE Leap 42.2      527      455     +  72    + 15.82%

                                             openSUSE Average:     +  83    + 18.20%
------------------------------------------------------------------------------------

No gráfico (abaixo), fica evidente também a paridade do htop com o “cálculo antigo” — obtido a partir dos números em /proc/meminfo. — Ver “Ferramentas e medições”, adiante.

Uso inicial de RAM, segundo o htop (Outubro 2020)

No gráfico (acima), por ordem crescente dos números do htop, salta à vista quais distros usavam mais ou menos Memória RAM, — independente da versão do Conky em cada uma.

  • Todas as distros Linux com KDE (+ widgets Weather e Gealach); sem verificação automática de atualizações; sem PIM-Akonadi; sem indexação pelo Baloo (Filesearch); e sem alguns “efeitos” e serviços. — Mageia sem verificações automáticas de MSEC. — Apenas no openSUSE, serviços de manutenção do Snapper + BtrFS habilitados. — No PCLinuxOS, o uso de Memória RAM estava um pouco aumentado, desde uma configuração de UXA em Março 2020.

Infelizmente, incluir o htop no Conky exige instalar aha e html2text em todas as distros — o que nem sempre é simples ou fácil.

  • Para registrar os números do htop, mesmo nas distros em que ainda não instalei aha e html2text, criei mais tarde um script que salva essas leituras em arquivo TXT aos 10 minutos uptime (ver “Ferramentas e Medições”, adiante). — Desse modo, bastava ligar o computador e ir escovar os dentes. — Após 10 minutos, eu tinha um arquivo TXT com as leituras do /proc/meminfo, do htop e demais ferramentas, com o sistema “em repouso” (iddle).


Reviravolta (Conky 1.12.1)


Situação após nova reviravolta do Conky

Em Março 2021, o Conky 1.12.1 fez outra reviravolta, de 180º — mas, em vez de restabelecer a paridade com o htop, foi mais além, passando a emparelhar com o free e o top — ferramentas do pacote procps.

De repente, openSUSE e Fedora, que estão entre as distros Linux mais “pesadas” da minha coleção, pareciam usar menos Memória RAM (540 MiB) do que o Arch (845 MiB!) e o MX Linux 19 (578 MiB), — que estão entre as mais “leves”, quando se usam medidas consistentes.

Isso, porque em Novembro 2020 o Arch adotou o Conky 1.11.6 — e em Março 2021 o Conky 1.12.1 chegou ao openSUSE Tumbleweed e ao Fedora:

Arch        2020 Nov 27   Conky 1.11.6

PCLinuxOS   2021 Mar 15   Conky 1.12.1
Void        2021 Mar 15   Conky 1.12.1
Fedora      2021 Mar 21   Conky 1.12.1
openSUSE    2021 Mar 29   Conky 1.12.1

Isso me pareceu desanimador.


Comparação precária (II)


Comparação do uso de RAM pelo free (Abril 2021)

Esta nova mudança brusca do Conky — a segunda, em menos de 1 ano — me levou a pensar em uma solução mais simples, como os comandos free e top, do pacote procps

Embora usem um cálculo que não é o ideal, pelo menos guardavam consistência em todas as distros — requisito elementar para qualquer comparação — e são os mais fáceis de incluir no Conky, para tê-los sempre diante dos olhos, “em tempo real”.

Ordenando a mesma lista pelos números do htop, apenas se invertem alguns pares — MX Linux 19 e Slackware; Mint 20 e Mageia 8; Fedora e openSUSE; Debian e PCLinuxOS — cada um separado do outro por 3 a 19 MiB segundo o free; ou por 9 a 24 MiB segundo o htop.

RAM usage at startup --- sorted...

by free                   by htop

Void                      Void
Arch                      Arch
Slackware                 Mx Linux 19
Mx Linux 19               Slackware
Neon                      Neon
Mageia 8                  Mint 20
Mint 20                   Mageia 8
Fedora                    openSUSE
openSUSE                  Fedora
Debian                    PCLinuxOS
PCLinuxOS                 Debian

Essas diferenças cabem dentro das oscilações que ocorrem a cada segundo — mesmo quando se deixa o computador “parado” por 10 minutos após o boot. — A rigor, cada um desses pares de distros tem uso praticamente igual de Memória RAM, dentro dos limites da precisão ao alcance do usuário comum.

Distro     free   Diff   htop    Diff

Slackware   410          565
Mx Linux 19 424 __ 14    541 __ -24

Mageia 8    451          610
Mint 20     461 __ 10    601 __  -9

Fedora      511          670
openSUSE    530 __ 19    651 __ -19

Debian      552	         710
PCLinuxOS   555 __  3    691 __ -19

Por isso, tanto o free / top quanto o htop permitiam comparação entre essas distros, uma vez que cada um deles usava um mesmo cálculo em todas elas. — A diferença, em termos práticos, é que free / top é mais fácil de exibir no Conky, em todas as distros.

Bom, depois disso, o htop também mudou.


Novas mudanças


Versões do Conky e demais ferramentas (2 Maio 2021)

2 Maio 2021 - Uma série de novos realinhamentos me levou a examinar também outras ferramentas mais populares de medição do uso de Memória RAM.

Conky 1.10.8   =  htop   (htop)        Neon, Mint 20, MX Linux 19
Conky 1.11.6   >  htop   (new calc)    Arch, Debian testing, Mageia 8
Conky 1.12.1   <  htop   (free, top)   openSUSE Tumbleweed, Fedora 33, PCLinuxOS, Void
Conky 1.12.2   >  htop   (new calc)    openSUSE Tumbleweed

Em 22 Abril 2021, o desenvolvedor do Conky Brenden Matthews (brndnmtthws) adicionou um PR (pull request) #1092, no sentido de retomar o “cálculo novo” sugerido por Linus Torvalds em 2014.

Dias depois, o Conky 1.12.2 já restabelecia o “cálculo novo” no openSUSE Tumbleweed — o que fazia prever o rápido desaparecimento da paridade com o free / top também no Arch, Fedora, PCLinuxOS, Void e Manjaro. — Quanto às distros “estáveis”, no devido tempo, não terão motivos para se deter no Conky 1.12.1, já dispondo da versão 1.12.2 ou superior.

Além do Conky, o inxi também já adotou o “cálculo novo”, pelo menos desde sua versão 3.1.00 (2020-11-11). — Restavam versões anteriores no KDE Neon, Linux Mint 20 (ambos LTS “Focal Fossa”) e no MX Linux 19 (Debian stable 10 ”Buster”).

O screenfetch também já adotou o “cálculo novo”, mas não consegui descobrir exatamente quando. A versão 3.8.0 (MX Linux 19) ainda mostra o mesmo valor indicado por free / top — mas o Changelog da versão seguinte (3.9.1, atual) simplesmente não registra a mudança.

Enfim, já faz algum tempo que Chris Cheney convenceu os desenvolvedores do htop a adotarem o “cálculo novo”, proposto há 7 anos por Linus Torvalds. — É de se esperar que seja implementado em uma próxima versão.

O neofetch permanece no “cálculo antigo” — exceto no Slackware, apesar de indicar a mesma versão de outras distros.

  • ATT - Estes números foram levantados após atualizar as distros no Domingo, 2 Maio 2021, e refletem unicamente um momento 10 minutos uptime, sem a abertura de nenhum outro aplicativo. — Ver “Ferramentas e medições”, a seguir.

Ferramentas e medições

Inclusão do neofetch, htop, inxi, screenfetch etc. no Conky

Testei o “cálculo antigo” a partir da descrição textual de Linus Torvalds, — sem as “marcas d'água”, — e o resultado se mostrava sempre bastante próximo do indicado pelo htop:

/proc/meminfo --> (Old calc):

Mem used = MemTotal - [MemFree + Active(file) + Inactive(file) + SReclaimable]

O “cálculo novo” é bem mais simples e claro:

/proc/meminfo --> (New calc):

Mem used = MemTotal - MemAvailable 

Para registrar esses e outros valores (inclusive as versões das ferramentas), criei um script “RAM.sh” — que salva as informações em um arquivo TXT:

echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
date                                                                                                   >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
uptime                                                                                                 >> RAM_00-Distro.txt
uptime -s                                                                                              >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           ----------   free   ----------"                                                       >> RAM_00-Distro.txt
free -m                                                                                                >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           ----------   top    ----------"                                                       >> RAM_00-Distro.txt
top -E m -b -n 1 | grep buff                                                                           >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           ---------- neofetch ----------"                                                       >> RAM_00-Distro.txt
neofetch  --stdout | grep "Memory"                                                                     >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           ----------   htop   ----------"                                                       >> RAM_00-Distro.txt
export TERM=xterm; echo q | htop | aha --line-fix | html2text | grep "/15"                              >> RAM_00-Distro.txt
### --- without "aha" ---> ### export TERM=xterm; echo q | htop                                          >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           ----------   inxi   ----------"                                                       >> RAM_00-Distro.txt
inxi -m                                                                                                >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           -------- screenfetch ---------"                                                       >> RAM_00-Distro.txt
screenfetch -n -N -E | grep "RAM"                                                                      >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
echo "           -------   proc/meminfo  ------"                                                       >> RAM_00-Distro.txt
cat /proc/meminfo | grep "MemTotal\|MemFree\|Active(file)\|Inactive(file)\|SReclaimable\|MemAvailable"   >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
conky -v | grep compiled                                                                               >> RAM_00-Distro.txt
free -V                                                                                                >> RAM_00-Distro.txt
top -v | grep procps                                                                                   >> RAM_00-Distro.txt
neofetch --version                                                                                     >> RAM_00-Distro.txt
htop --version                                                                                         >> RAM_00-Distro.txt
inxi -V | grep inxi                                                                                    >> RAM_00-Distro.txt
screenfetch -V | grep Version                                                                          >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
date                                                                                                   >> RAM_00-Distro.txt
echo "------------------------------------------------------------------"                              >> RAM_00-Distro.txt
mv RAM_00-Distro.txt /PATH/
Tabulação das informações salvas pelo script “RAM.sh”

O arquivo-texto produzido é bastante compacto, o que facilita transferir os dados para uma planilha, usando o Modo de Seleção de Bloco (CTRL+Shift+B) do Kate / KWrite.

Para executar “RAM.sh” 10 minutos após o boot criei um agendamento:

$ crontab -l
@reboot sleep 600; bash RAM.sh

Passados esses 10 minutos, capturo a tela com os números exibidos no Conky2* — que se atualiza a cada 10 segundos:

conky.config = {
 ...
 update_interval = 10,
 ...
}
conky.text = [[
Mem:               ${alignr 100}up  ${uptime}

Total - Available  ${alignr 100}${exec bash MemInfo.sh; cat MemInfo.txt}
Conky (Mem)        ${alignr 100}${mem}
free               ${alignr 100}${exec free -m | grep Mem | cut -c 25-35} MiB
top                ${alignr 100}${exec top -E m -b -n 1  | grep buff | cut -c 41-50} MiB
neofetch           ${alignr 100}${exec neofetch  --stdout | grep -o -P '.{0,0}Memory.{0,9}' | cut -b 8-12} MiB
htop               ${alignr 100}${exec export TERM=xterm; echo q | htop | aha --line-fix | html2text | grep -o -P '.{0,6}/15' | cut -b 1-6}iB
inxi               ${alignr 100}${exec inxi --memory-short | grep -o -P '.{0,0}used.{0,14}' | cut -b 6-14}
screenfetch        ${alignr 100}${exec screenfetch -n -N | grep -o -P '.{0,0}RAM.{0,9}' | cut -b 5-12}
...
]]

Na linha “Total - Available” (acima), o Conky executa um script “MemInfo” — que efetua o “cálculo novo” — e exibe o resultado:

MEM_TOTAL=$(awk '/MemTotal/ { printf $2 }' /proc/meminfo); \
MEM_AVAIL=$(awk '/MemAvailable/ { printf $2 }' /proc/meminfo); \
MEM_USED_KILO="$(($MEM_TOTAL-$MEM_AVAIL))"; \
echo "$(($MEM_USED_KILO/1024))" MiB > MemInfo.txt

O ciclo de 10 segundos evita oscilações súbitas nesses indicadores, — caso contrário, o gnome-screenshot poderia capturar um valor já afetado por seu próprio acionamento.

(*) Venho fazendo frequentes experiências e alterações no “Conky2”, desde Outubro 2020, como fica claro nas imagens. — Esta é a configuração mais recente, que adotei em Setembro 2021.

Duas versões do cálculo, 29 Agosto 2021

A propósito: - Me parece incorreto dividir (MemTotal - MemAvailable) / 1024, pois o kB (com k minúsculo) no /proc/meminfo é muito claro em se referir ao sistema SI (portanto, o divisor deveria ser 1024² / 1000 = 1048,576) — mas observei que essa parece ser a prática adotada pelos desenvolvedores das várias ferramentas — e a árdua mudança do que é mais relevante sugere que não vale a pena, neste momento, complicar as coisas com a proposta de outra mudança adicional, pouco significativa (a diferença de +2,4% é irrelevante, dentro das oscilações normais de uso de RAM a cada segundo).

Referências:

Média das medidas no arquivo-texto e na captura de tela, 2 Maio 2021

A partir do arquivo-texto e da captura de tela, tirei a média dos números em duplicata.

MX Linux 21 Beta1

Três ferramentas alinhadas ao “cálculo novo”, no MX Linux 21 Beta1

Agosto 2021 - No MX Linux 21 Beta1 KDE, que instalei em Agosto, pela primeira vez vi 3 ferramentas indicarem os valores quase exatos do “cálculo novo” — Conky 1.11.6, Neofetch 7.1.0, Screenfetch 3.9.1 — em cerca de 20 inicializações, ao longo de quase 30 dias, até Setembro.

No final de Agosto, 3 ferramentas também indicavam valores próximos aos do “cálculo novo”, no openSUSE Tumbleweed, embora com menor exatidão: — Conky 1.12.2, inxi 3.3.03-00, Screenfetch 3.9.1 — enquanto seu Neofetch 7.1.0 mantinha uma diferença de 200 MiB para menos.

Infelizmente, naquele período não verifiquei todas as distros de modo sistemático.

26 Set 2021 - Ao fazer minhas atualizações semanais, o htop 3.1.0 finalmente se apresentou alinhado ao “cálculo novo” no openSUSE Tumbleweed, no Arch, no PCLinuxOS e no Manjaro.

Situação atual

openSUSE Tumbleweed

3 Out 2021 - No openSUSE Tumbleweed, agora 4 ferramentas se alinham com o “novo cálculo”.

Me chamaram atenção os picos de atividade de CPU a cada 10 segundos, quando se atualiza o Conky2 — 19%, 31% e 13% nos 3 segundos subsequentes — o que não acontece em outras distros onde ele dispara o mesmo número de ferramentas de medição e exibição do uso da Memória RAM (inclusive aha e html2text).

Estes foram os padrões de uso de CPU observados entre os dias 3 e 17 Outubro 2021, desde o momento que antecede cada atualização do Conky2, até 3 ou 5 segundos depois:

openSUSE

 1%   19%  31%  13%   1%   ...
 1%   20%  32%  13%   1%   ...

Arch      ---> without inxi

 1%    9%  10%   1%   ...
 1%    9%   9%   1%   ...
 1%   10%  11%   1%   ...

Debian

 1%   19%  27%  15%   7%   1%   ...
 1%   18%  27%  15%   7%   1%   ...

Fedora

 1%   20%  23%   4%   1%   ...
 1%   20%  23%   4%   1%   ...

KDE Neon

 0%   11%  11%   1%   0%   ...
 0%   10%  10%   0%   0%   ...

PCLinuxOS ---> without htop, aha, html2text

 1%  10%  10%   1%   ...   ...

Mageia    ---> without htop, aha, html2text

 1%  15%  15%   1%   ...   ...

Void      ---> without screenfetch

 1%   5%   5%   1%   ...   ...

Manjaro

 1%  14%  14%   1%   ...   ...
 1%  13%  13%   1%   ...   ...
 1%  14%  15%   1%   ...   ...

Slackware ---> without htop, aha, html2text, screenfetch

 0%   4%   4%   0%   ...   ...

MX Linux

 1%  14%  14%   2%   1%    ...
 1%  14%  14%   1%   ...   ...

No Debian, o pico é um pouco menor do que no openSUSE, porém mais prolongado — e mais igualmente distribuído entre os 6 núcleos — o que resulta em gráficos mais discretos no Conky.

No Void e no Slackware, o pico limita-se a 4% ou 5% de uso de CPU — mas cabe lembrar que neles o Conky2 dispara menos ferramentas.

No KDE Neon e no Slackware o “piso” é “0%” — presumo que significando “menos de 0,5%” na média dos 6 núcleos — contra 1% nas demais distros.

É claro que ocorrem outras variações, o tempo todo, conforme o número e o tipo de serviços habilitados em cada distro — mas estes padrões são notavelmente característicos de cada uma delas — tal como se encontram configuradas no meu PC desktop.

A frequência pula de 800 ~ 860 MHz para a faixa de 2200 ~ 3900 MHz no segundo anterior ao pico de CPU, e retorna ao “piso” antes que o uso de CPU.

Não percebi qualquer elevação regular de uso de Memória, durante esses picos de uso de CPU. — Pelo contrário, muitas vezes há uma leve redução. — Mas isso é inconclusivo, pois “devoluções de Memória” demoram de 25 a 40 segundos (após o gnome-screenshot, por exemplo), por isso não dá para se esperar “devoluções” dentro desses curtos ciclos de 10 segundos.

O bash script agendado para 10 minutos uptime provoca um uso mais intenso de CPU, em geral entre 10min 10s e 10min 30s — mas seria trabalhoso tentar distinguir um padrão.

Arch Linux

No Arch Linux, ainda não instalei o inxi, pois em fins do ano passado encontrei um aviso no AUR alertando sobre vários problemas — e até hoje não voltei a verificar. — Com isso, apenas 3 ferramentas se alinham ao “cálculo novo”.

A cada ciclo de 10 segundos do Conky2, o uso de CPU vai a 9% ou 11%, por 2 segundos. — A simples ausência do inxi não é suficiente para explicar essa diferença em relação ao openSUSE.

Debian testing

No Debian testing, apenas 3 ferramentas se alinham ao “cálculo novo”.

A cada ciclo de 10 segundos do Conky2, o uso de CPU se eleva em um grau muito semelhante ao openSUSE — mas se distribui um pouco mais, no tempo (4 segundos), e mais igualmente entre os 6 núcleos — o que resulta em um gráfico bem mais discreto.

Fedora 34

No Fedora 34, apenas 2 ferramentas se alinham ao “cálculo novo”. — É provável que isso mude bastante com o Fedora 35.

Os picos se destacam mais nos gráficos, pois não se distribuem entre todos os 6 núcleos.

KDE Neon (base Ubuntu 2020.04 LTS)

No KDE Neon, apenas o Screenfetch se alinha ao “cálculo novo” — consequência de usar a base 20.04 LTS do Ubuntu, estacionada há 1 ano e 6 meses.

PCLinuxOS (Darkstar)

No PCLinuxOS, ainda não encontrei um modo de instalar o aha, para exibir o htop no Conky2.

Com isso, apenas 3 ferramentas se alinham ao “cálculo novo”.

Mageia 8

No Mageia, também não encontrei o aha, para exibir o htop — e por enquanto apenas 3 ferramentas se alinham ao “cálculo novo”.

Void Linux

No Void Linux, ainda não encontrei o Screenfetch para instalar — e por enquanto apenas 3 ferramentas se alinham ao “cálculo novo”.

Manjaro

No Manjaro, nada menos que 4 ferramentas se alinham ao “cálculo novo”.

A cada ciclo de 10 segundos do Conky2, o uso de CPU vai a 13%, por 2 segundos.

Slackware

No Slackware 14.2+ (current), ainda não encontrei o Screenfetch; nem o aha, para exibir o htop. — Também não tenho feito atualizações, por isso o Conky ainda é uma versão que encontrei há séculos.

O uso de CPU, a cada ciclo de 10 segundos do Conky2, é discreto.

MX Linux 21 (beta1)

No MX Linux 21 (beta1), 3 ferramentas se alinham ao “cálculo novo” — e isto ainda não inclui o htop nem o inxi. — Receio que permaneça assim nos próximos 2 anos, por se basear no Debian stable.

“Monitor do Sistema”


KSysguard

O nome genérico “Monitor do Sistema” tem induzido a muitos enganos e falsas comparações — pelo menos desde 2016, quando tive o KSysguard e o Gnome-System-Monitor lado a lado, em uma instalação do Debian com vários ambientes.

Desde aquela época, verifiquei que o KSysguard indicava uso de Memória bem inferior ao indicado pelo Conky — que na época se alinhava ao htop — ambos ainda com o “cálculo antigo”.

Me parece que o KSysguard busca utilizar o mesmo cálculo do free (que ainda não pesquisei qual é) — porém “descontando” seu próprio uso de Memória. — Acontece que o free não “desconta” o peso do KSysguard, e por isso tende a indicar um número maior do que ele.

Aliás, o “peso” de qualquer aplicação GUI sempre interfere naquilo que pretende medir — uso de Memória RAM, uso de CPU etc. — por isso desde 2016 optei por usar o Conky, que tem baixíssimo uso de recursos.

Mesmo a abertura de um Terminal já altera significativamente o uso de Memória RAM. — Além disso, diferentes DEs usam Terminais mais “leves” ou mais “pesados” — o que também torna enganosas comparações entre diferentes DEs, mesmo quando pensamos estar usando “apenas uma ferramenta CLI”, como free, htop, neofetch etc.

Acima - A simples abertura do KSysguard elevou o uso de Memória RAM de 865 MiB para 1046 MiB (+181 MiB), segundo o cálculo “novo” — ou de 428 MiB para 531 MiB (+103 MiB), segundo o free.

O valor de 0,48 GiB indicado pelo KSysguard equivale a 492 MiB — menos que os 531 MiB indicados pelo free (-39 MiB), mas dentro da faixa de oscilação aceitável.

Plasma System Monitor

Ao fechar o KSysguard, o uso de Memória RAM caiu para 962 MiB, segundo o “cálculo novo” — cerca de 100 MiB acima dos 865 MiB iniciais. — Portanto, ao abrir o Plasma System Monitor, já partimos de um patamar um pouco mais elevado.

Acima - O Plasma System Monitor indica uso de 1,1 GiB de Memória RAM — valor exato dos 1128 MiB indicados pelo “cálculo novo” (1,102 GiB)

Gnome System Monitor

Ao fechar o Plasma System Monitor, o uso de Memória RAM também não volta ao que era logo no início da sessão. — Mesmo assim, o Gnome System Monitor parece “pesar” menos do que as 2 ferramentas do KDE.

Acima - O Gnome System Monitor indica uso de 1,0 GiB — valor muito próximo aos 1000 MiB indicados pelo “cálculo novo” (0,98 GiB).

Um minuto após fechar o Gnome System Monitor, o uso de Memória RAM baixou para 974 MiB, segundo o “cálculo novo” — cerca de 110 MiB acima dos 865 MiB logo após a inicialização. — Este foi o “saldo” de abrir e fechar as 3 ferramentas GUI, uma após outra.

_______________________
• Publicado em 20 Outubro 2020 e atualizado até 4 Outubro 2021 (histórico).

— … ≠ • ≠ … —


Ferramentas &tc.


2 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
    Respostas
    1. And as you pointed out in the update conky 1.12.1 is now fubar, my system is using 16 GB by the new calculation and conky is only reporting 8 GB used. I keep having sluggish issues with my system and didn't realize conky had fubar'd their memory reporting again. 🤦

      Excluir