¿Hay alguna forma de ordenar los procesos por uso de memoria no compartida (privada) en ps o top?

¿Hay alguna forma de ordenar los procesos por uso de memoria no compartida (privada) en ps o top?

He podido calcular el uso de memoria no compartida sumando asignaciones anónimas y de pila de, por pmap -xejemplo,

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

pero no puedo encontrar ninguna manera de obtener información similar ps. topmuestra una SHRcolumna, pero no parece ofrecer una forma de ordenar por memoria no compartida. Ordenar por RSS no es útil ya que RSS contiene páginas compartidas, pero solo AFAICS es aquellas páginas compartidas que el proceso ha tocado.

Entonces, si tiene dos procesos, ambos usando el mismo espacio de direcciones compartido de 16 GB, se ordenarán según cuál haya tocado más memoria compartida. No por cuál ha asignado más memoria privada (no compartida), a menos que ambos hayan tocado la misma cantidad de shmem o cerca de ella.

Surgen problemas similares con las asignaciones de lectura/escritura de bibliotecas compartidas y con los procesos forkde edición pero no editados execque comparten páginas de copia en escritura de su antecesor.

Esto es... inútil.

He buscado formas de ordenar toplos resultados por expresiones. Pero si lo admite en su sintaxis de clasificación, no puedo entenderlo.

Esto parece algo muy obvio, ¡pero ps ni siquiera expone información compartida en absoluto!

Por favor dime que me falta algo.

información relacionada