я в курсе этого вопроса https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop
Ответ кажется устаревшим в отношении использования памяти, и этот вопрос кажется более сложным.
htop определенно теперь не вычисляет общую память через MemTotal - МемБесплатно
больше.
Там https://access.redhat.com/solutions/406773 Я нашел решение, которое может подойти. В соответствии с этим он будет рассчитываться через MemTotal - MemFree - Буферы - Кэширование - Slab
но это приводит к слишком низкому использованию памяти по сравнению с htop.
Использование памяти в htop кажется довольно связанным, поскольку бесплатно -м
показывает в ячейке Мем: б/у
Но если вы создадите виртуальный диск, многое изменится:
мкдир мнт
sudo mount -t tmpfs нет mnt
CD MNT
sudo dd if=/dev/urandom of=test bs=32M status=progress
Выше создадим RAM-диск размером 50% от установленной памяти и заполним этот RAM-диск.
Теперь htop показывает чуть больше половины используемой физической памяти, в тестовом примере используется 3,82 ГБ из 7,44 ГБ. Однако бесплатно -м
показывает по-прежнему только 104 МБ, использованных по сравнению со 102 МБ до создания и заполнения RAM-диска. Таким образом, использование 104 МБ определенно неверно, потому что половина физической системной памяти больше не может быть доступна, поскольку она используется RAM-диском.
В /proc/meminfo
размер RAM-диска, кажется, включен в Кэшировано
, поэтому для расчета использованной кэшированной памяти не следует вычитать.
Так почему же free -m сообщает такое неправильное значение свободной памяти? По умолчанию в дистрибутивах, таких как Debian или Ubuntu, есть различные tmpfs, что означает, что free -m дает неправильное представление о свободной памяти.
Вычисление памяти htop кажется вполне разумным. Итак, как можно рассчитать значение htop из /proc/meminfo
?