No início de Outubro, marquei o tópico (acima) como “Resolvido”, após concluir que se tratava de um bug do Conky. ─ Mas eu estava redondamente enganado. ─ Trata-se de uma mudança no cálculo de “Memória usada”, a partir do Conky 1.11.6, e veio para ficar.
Essa alteração foi proposta em 2014 (Kernel 3.14) e recebeu o aval de Linus Torvalds. ─ Um novo campo MemAvailable foi criado em /proc/memimfo, desde aquela época, exatamente para que ferramentas (Conky, top, free, htop etc.) pudessem calcular a “Memória RAM usada” com maior precisão. ─ E é claro que ninguém adotou o “novo” cálculo, até cerca de 5 anos depois:
Em meados de 2019, finalmente alguém propôs isso à equipe do Conky. ─ A mudança foi incluída no Github em Outubro 2019 ─ e começou a chegar às distros rolling-release (+Fedora) com o Conky 1.11.6, a partir do final de Julho 2020.
Neste gráfico (acima), estão as indicações de “Uso de Memória RAM” nas minhas distros (todas com KDE), segundo a versão do Conky instalada em cada uma delas ─ e segundo o htop, que costumava acompanhar o Conky, há vários anos. ─ Em seguida, estão os cálculos “antigo” e “novo”, que fiz a partir das informações em /proc/meminfo.
Nas distros em que o Conky está alinhado com o cálculo “novo”, trata-se do Conky 1.11.6.
Nas distros em que o Conky continua alinhado com o htop (e com o cálculo “antigo”), trata-se do Conky 1.11.5 ou outra versão anterior.
Descartei outras ferramentas (free, top, inxi), pois não se alinham, nem com o cálculo “antigo”, nem com o “novo”.
Para mais detalhes, fiz uma postagem com todas as informações que consegui encontrar:
No Conky 1.12.1 ─ que já chegou ao openSUSE Tumbleweed, Fedora, Void ─ o cálculo da Memória RAM usada foi alterado de novo.
Agora, acompanha o cálculo do free e do top ─ ou seja: ─ Exibe números baixíssimos.
Isso pode parecer ótimo, para quem gosta de exibir “baixo uso de Memória RAM” de sua distro + DE preferida.
Mas complica, ainda mais, a comparação entre distros que usem versões diferentes do Conky: ─ Em uma, aumentou muito. ─ Agora, desceu mais do que tinha aumentado.
Considerando que demora alguns anos até a nova versão chegar às distros mais “estáveis”, pode-se prever um longo período de convivência de critérios díspares.
Mais algumas ferramentas adotaram o “cálculo novo”:
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 e Screenfetch ainda apresentam comportamentos diferentes, dentro de uma mesma versão (a mais nova).
O Conky já tinha recuado de sua segunda alteração
Essas mudanças todas chegam de modo desigual às diferentes distros. – Exemplos de 3 Outubro 2021, assinalando as ferramentas que já tinham adotado o “cálculo novo”, em cada distro:
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.
Desde 24 Junho, a equipe do procps – que fornece as ferramentas free e top – adotou o cálculo “novo”… aquele proposto por Linus Torvalds desde 2014 (Kernel 3.14):
library: modify calculation of ‘MEMINFO_MEM_USED’ item
In an effort to more accurately reflect ‘used’ memory, we will now rely on the kernel’s estimate of available memory. Thus, ‘MEMINFO_MEM_USED’ will be calculated as just ‘MEMINFO_MEM_TOTAL’ less ‘MEMINFO_MEM_AVAILABLE’.
Essa mudança chegou ao openSUSE Tumbleweed ainda no final de Junho, com uma atualização do procps – mas a “versão” do pacote continua “3.3.17” – a mesma de antes.
Agora, no openSUSE Tumbleweed, apenas o htop e o Neofetch apresentam números discordantes:
O mais interessante, é que o htop chegou a adotar o cálculo “novo” – mas a tchurma reclamou, e eles resolveram mudar de novo – agora, para o velhíssimo cálculo que só o free / top ainda utilizava.
Quanto ao Neofetch, apresenta um comportamento “diferenciado” – usa o cálculo “novo” no Slackware e no MX Linux – mas não em outras distros, que usam a mesma “versão” do pacote.
Portanto, quando várias pessoas relatam que a distro “X” de um consome tanto de RAM, enquanto a distro “Y” de outro consome tanto – segundo o free, ou o Neofetch, ou segundo (diferentes) “Monitor do sistema” (Gnome, KDE, entre outros) – lembre que “cada um está utilizando uma régua diferente”.
E que quando os mantenedores de uma ferramenta cedem aos reclamos da “maioria” – caso do Conky (que depois percebeu o erro) e agora, caso do htop – a matemática do Kernel vai para o espaço.