Це питання висвітлюється тут дуже докладно.
Як ви вимірюєте використання пам'яті програми чи процесу в Linux?
З статті блогу Розуміння використання пам'яті в Linux , ps
це не точний інструмент, який слід використовувати для цього.
Чому
ps
"неправильно"Залежно від того, як ви на це дивитесь,
ps
не повідомляється про реальне використання пам'яті процесів. Насправді це показує, скільки реальної пам'яті займає кожен процес, якби це був єдиний запущений процес . Звичайно, типова машина Linux має декілька десятків процесів, які працюють у будь-який момент часу, це означає, що номери VSZ та RSS, проps
які повідомляють , майже напевно помиляються .
ps
це навіть не показує - він показує номери віртуальної та резидентної пам’яті, де віртуальний - це максимальний об’єм пам’яті, який процес теоретично міг би використати, це був єдиний процес (ніколи не так), використовували кожну виділену сторінку (ніколи не буває) і не відображав чи знімав жодної сторінки (малоймовірно). У той час як резидент показує, скільки віртуальної пам'яті відображено на фізичну зараз. virt > usage > res
Однак, як правило, для 64-бітної системи virt ~= res*10
це дуже широкий діапазон.