É porque htop
está contando buffers e memória em cache como memória livre, porque pode realmente ser visto dessa maneira.
Não há "custo" em ter alguns dados em cache na memória, então o kernel mantém coisas lá apenas no caso de precisar depois.
Por exemplo, suponha que você tenha assistido a um vídeo de cerca de 500mb, depois de fechar o vídeo, o kernel pode decidir mantê-lo na memória em vez de limpá-la, caso você precise desse vídeo novamente precisa carregá-lo novamente a partir do seu disco rígido lento. Mas esse 500mb pode ser considerado livre, porque assim que você precisar de memória para outra coisa, o kernel poderá usar essa memória imediatamente.
Não é o caso quando a memória está sendo usada por um programa em execução, porque esse programa está usando essa memória agora mesmo.
Se você subtrair da memória used
os valores buffers
e cached
, você obterá o valor exibido por htop
.
Agora, sobre esse percentual que você disse, depende de como você resumiu.