Использование памяти: большая разница в `free -m` и htop, а также расчет используемой памяти в htop по сравнению с /proc/meminfo

Использование памяти: большая разница в `free -m` и htop, а также расчет используемой памяти в htop по сравнению с /proc/meminfo

Я знаю об этом вопросе.https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop Ответ на вопрос об использовании памяти кажется устаревшим, а этот вопрос — более сложным.

htop определенно теперь не рассчитывает общую память через MemTotal - MemFreeбольше. Тамhttps://access.redhat.com/solutions/406773Я нашел решение, которое могло бы подойти. Согласно ему, это будет рассчитано через, MemTotal - MemFree - Buffers - Cached - Slabно это приведет к слишком низкому использованию памяти по сравнению с htop.

Использование памяти в htop, похоже, довольно взаимосвязано, как free -mпоказано в ячейкеMem: used

Но если вы создадите RAM-диск, все кардинально изменится:

mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt 
sudo dd if=/dev/urandom of=test bs=32M status=progress

Выше будет создан RAM-диск размером 50% от установленной памяти и заполнен этот RAM-диск.

htop теперь показывает немного больше половины используемой физической памяти RAM, в тестовом случае 3,82 ГБ из 7,44 ГБ. Однако free -mпоказывает все еще только 104 МБ использовано по сравнению со 102 МБ до создания и заполнения RAM-диска. Так что 104 МБ использовано определенно неверно, потому что половина физической системной памяти больше не может быть доступна, так как она используется RAM-диском.

Размер /proc/meminfoRAM-диска, по-видимому, включен в Cached, поэтому при расчете используемой кэшированной памяти вычитать ее не следует.

Так почему же free -m сообщает о таком неправильном значении свободной памяти? По умолчанию в дистрибутивах вроде Debian или Ubuntu есть различные tmpfs, что означает, что free -m дает неправильное представление о свободной памяти.

Расчет памяти htop кажется вполне разумным. Так как же можно вычислить значение htop из /proc/meminfo?

Связанный контент