Использование памяти: большая разница в `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 кажется весьма взаимосвязанным, как показано в ячейке.Mem: used

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

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

По размеру RAM-диск, кажется, входит в комплектCached, поэтому для расчета использованной кэшированной памяти не следует вычитать.

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

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

0 ответов

Другие вопросы по тегам