Uma reescrita completa do meu post anterior. Fiquei um pouco curioso e verifiquei mais.
Em suma: a razão para a diferença é que o openSUSE usa uma versão corrigida de top e free que adiciona alguns valores extras para 'cache' .A) Versão padrão
top, free, htop , ...:
O uso é calculado pela leitura de dados de /proc/meminfo
:
Por exemplo:
#free:
Row Column | Corresponding /proc/meminfo entry
-----|--------|----------------------------------
Mem:
total : MemTotal
used : MemTotal - MemFree
free : MemFree
shared : MemShared
buffers : Buffers
cached : Cached
-----|--------|----------------------------------
-/+ buffers/cache:
used : (MemTotal - MemFree) - (Buffers + Cached)
free : MemFree + (Buffers + Cached)
#htop:
Used U* : ((MemTotal - MemFree) - (Buffers + Cached)) / 1024
* Eu estou usando o nome Used U
para a memória usada pelo modo do usuário.
Aka Usado menos (em cache + buffers) .
Então, na realidade, o mesmo cálculo é usado.
htop
exibe o seguinte no medidor de memória:
[Used U % of total | Buffers % of total | Cached % of total ] UsedU MB
(MB é na verdade MiB.)
B) Versão corrigida
A base para free
e top
no Debian, Fedora, openSuse é procps-ng .
No entanto, cada sabor adiciona suas próprias manchas que podem, ou não, tornar-se
parte do projeto principal.
Em openSUSE encontramos várias adições ao pacote top / free (procps). Os que devem ser notados aqui são alguns valores adicionais usados para representar o valor do cache. (eu não incluí no meu post anterior como meu sistema usa um procedimento "limpo".)
B.1) Adições
Em / proc / meminfo temos Slab que é um dado do kernel cache de estrutura. Como subcategoria, encontramos SReclaimable que faz parte do Slab que pode ser recuperado para outro uso tanto pelo Kernel como pelo Modo de Usuário.
Além disso, temos SwapCached , que é a memória que uma vez foi trocada, é trocado, mas também está no arquivo de troca. Assim, se é preciso trocá-lo mais uma vez, isso já está feito.
Por fim, há NFS_Unstable , que são páginas enviadas ao servidor, mas ainda não comprometida com o armazenamento estável.
Os seguintes valores são adicionados a cache
na versão corrigida do openSUSE:
SReclaimable
SwapCached
NFS_Unstable
(Além disso, existem alguns cheques que o total tem que ser maior do que livre, usado tem que ser maior que buffers + cache, etc.)
B.2) Resultado
Olhando para free , como resultado, os seguintes valores são os mesmos:
total, used, free and buffers
.
Os seguintes são alterados:
cached and "+/- buffers"
.
used = MemTotal - MemFree
old:
cached : Cached
+-/buffers-used: used - (Buffers + Cached)
+/-buffers-free: free + (Buffers + Cached)
patched:
cached : Cached + SReclaimable + SwapCached + NFS_Unstable
+/-buffers-used: used - (Buffers + Cached + SReclaimable +
SwapCached + NFS_Unstable)
+/-buffers-free: free + (Buffers + Cached + SReclaimable +
SwapCached + NFS_Unstable)
As mesmas adições são feitas para topo .
htop é inalterado e, portanto, apenas o alinhamento com versões mais antigas / não corrigidas de topo / livre.