Инструменты вроде "ps" и "top" сообщают о различных типах использования памяти, таких как размер виртуальной машины и размер резидентного набора. Однако ни одно из них не является "реальным" использованием памяти:
- Программный код используется совместно несколькими экземплярами одной и той же программы.
- Программный код общей библиотеки разделяется между всеми процессами, использующими эту библиотеку.
- Некоторые приложения отключают процессы и совместно используют для них память (например, через сегменты разделяемой памяти).
- Система виртуальной памяти делает отчет о размерах виртуальной машины практически бесполезным.
- RSS равен 0, когда процесс выгружается, что делает его не очень полезным.
- Etc и т.д.
Я обнаружил, что конфиденциальный грязный RSS, как сообщает Linux, является самым близким к "реальному" использованию памяти. Это можно получить, суммируя все значения Private_Dirty
в /proc/somepid/smaps
.
Однако, другие операционные системы обеспечивают аналогичную функциональность? Если нет, то каковы альтернативы? В частности, меня интересуют FreeBSD и OS X.