Conky altera o cálculo de Memória RAM usada

Continuando a discussão do [Resolvido] Aumento de uso de Memória RAM em 4 distros:

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:

MemUsed = MemTotal - MemAvailable

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.

  1. Nas distros em que o Conky está alinhado com o cálculo “novo”, trata-se do Conky 1.11.6.

  2. 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:

6 curtidas

Temos novidades: ─ Outra reviravolta.

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.

Em resumo:

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

Estou adicionando essas novas observações na mesma postagem do blog (link acima), para documentar o vai-e-vem.

3 curtidas

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.

3 curtidas

Não mais.

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.

4 curtidas

A mudança do procps chegou ao Debian testing… como se fosse novidade… Ou, apenas, incluíram no Changelog da nova versão?

E entrou em vigor imediatamente – sem esperar o Synaptic concluir as demais atualizações: