Я пытаюсь вычислить объем памяти, используемый AMP в стековой машине LAMP.
top -bn1 | grep -E '(mysql|httpd|php)' | awk '{mem += $(NF-2)} END {print mem}'
Но сумма, сгенерированная с помощью приведенной выше команды, превышает 100%, но я ожидал что-то ниже 100%, поскольку использование памяти отдельными процессами уже представлено в% от top
.
Пожалуйста, помогите мне понять, сообщал ли top
нельзя использовать этот способ для расчета использования памяти?
Поле% MEM - это количество страниц физической памяти, используемых процессом, умноженное на 100, деленное на общее количество страниц физической памяти. Нет причин, по которым его сумма должна составлять 100 - рассмотрим десять процессов, которые используют одну и ту же страницу физической памяти.
У вас также может быть версия с ошибками top
который вычисляет% MEM как VSZ / mem вместо RSS / mem. Найдите случай, когда они дают разные результаты, и убедитесь, что верхним значением является RSS / mem.
Использовать top -v
чтобы узнать, установлена ли у вас версия Top для BusyBox. Это имеет тенденцию быть более ошибочным, чем версия procps.