Я пишу программу для проверки некоторых показателей использования памяти в наших системах, и я хочу достичь целевого потребления памяти. Вы запускаете мою программу через meminflate.exe -G 103.1 если хотите занять 103.1 GB памяти.

Когда я запускаю meminflate.exe -G 63.3 , я вижу, что top показывает VIRT как 63.5 (хорошо, не слишком далеко), но RES показывает 63 top и 63.5 на htop . Какой из них я должен доверять? Я ожидаю, что htop правильный, но мне интересно, почему есть разница.

1 ответ1

0

Вы можете получить точное количество байтов для Rss (резидентный набор) из /proc/<pid>/stat:

echo $(($(cat /proc/$(pgrep -n meminflate.exe)/stat | cut -d' ' -f24)*4096))

Чтобы пояснить: это читает /proc/<pid>/stat (здесь номер PID находится с помощью pgrep), используется cut чтобы выбрать только 24-е поле (Rss). Затем результат умножается на 4096 (нормальный размер страницы в Linux). Вы также можете только умножить его на 4, чтобы получить размер в килобайтах, или разделить его на 256, чтобы получить в миБ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .