Этот вопрос освещен здесь очень подробно.
Как вы измеряете использование памяти приложением или процессом в Linux?
Из блога статьи Понимание использования памяти в Linux , ps
не является точным инструментом для использования для этого намерения.
Почему
ps
"неправильно"В зависимости от того, как вы на это смотрите,
ps
не сообщается о реальном использовании памяти процессами. На самом деле он показывает, сколько реальной памяти занимал бы каждый процесс, если бы он был единственным запущенным процессом . Конечно, на типичном компьютере с Linux в каждый момент времени выполняется несколько десятков процессов, а это означает, что сообщаемые номера VSZ и RSSps
почти наверняка неверны .
ps
это даже не показывает - он показывает номера виртуальной и резидентной памяти, где виртуальный - это максимальный объем памяти, который процесс теоретически мог бы использовать, это был единственный процесс (никогда), использовавший каждую отдельную страницу, которую он выделил (никогда не бывает) и не отображать и не отображать какие-либо страницы (маловероятно). Пока резидент показывает, сколько виртуальной памяти сейчас сопоставлено с физической. virt > usage > res
Однако, как правило, в 64-битной системе virt ~= res*10
это очень широкий диапазон.