Есть ли способ отсортировать процессы по использованию неразделяемой (частной) памяти в ps или top?

Есть ли способ отсортировать процессы по использованию неразделяемой (частной) памяти в ps или top?

Мне удалось вычислить использование неразделяемой памяти путем суммирования анонимных и стековых отображений, pmap -xнапример,

sudo pmap -x $THE_PID |egrep 'anon|stack' | awk '{print $2}' | paste -sd+ | bc

но не могу найти способ получить подобную информацию вообще ps. topпоказывает SHRстолбец, но, похоже, не предлагает способа сортировки по неразделяемой памяти. Сортировка по RSS бесполезна, поскольку RSS содержит общие страницы, но только те общие страницы, которые затронул процесс.

Так что если у вас есть два процесса, оба использующие одно и то же общее адресное пространство в 16 ГБ, они будут сортироваться на основе того, какой из них затронул больше общей памяти. А не на основе того, какой из них выделил больше частной (не общей) памяти, если только оба не затронули одинаковое количество shmem или близко к этому.

Аналогичные проблемы возникают с сопоставлениями чтения/записи общих библиотек, а также с процессами fork, которые были редактированы, но не редактированы exec, которые совместно используют страницы копирования при записи от своего предка.

Это... бесполезно.

Я искал способы сортировки topвывода по выражениям. Но если он поддерживает это в своем синтаксисе сортировки, я не могу понять.

Это кажется таким очевидным, но ps вообще не раскрывает общую информацию!

Пожалуйста, скажите мне, что я что-то упускаю.

Связанный контент