Você pode obter esse tipo de informação do /proc/<pid>/smaps
arquivo para cada processo na forma da Pss
entrada (abreviação de "Tamanho do compartilhamento proporcional").
No exemplo acima, com 200 MB "compartilhados" entre dois processos, cada processo mostraria 100 MB na entrada PSS para esse mapeamento, ou seja, a memória é distribuída igualmente entre os processos que o compartilham (até que seja copiada e não compartilhada por qualquer processo).
Aqui está um trecho da execução de algo como o que você postou:
$ top
...
30986 me 20 0 790m 769m 2200 S 0 4.8 0:00.48 python3.2
30987 me 20 0 790m 767m 224 S 0 4.8 0:00.00 python3.2
$ cat /proc/30986/smaps
...
0119a000-015b7000 rw-p 00000000 00:00 0 [heap]
Size: 4212 kB
Rss: 3924 kB
Pss: 1992 kB
...
7fa06b020000-7fa09ab11000 rw-p 00000000 00:00 0
Size: 781252 kB
Rss: 781252 kB
Pss: 390626 kB
...
7fff8e45a000-7fff8e489000 rw-p 00000000 00:00 0 [stack]
Size: 192 kB
Rss: 160 kB
Pss: 82 kB
...
(Há muitas coisas nesses arquivos, incluindo mapeamentos para bibliotecas compartilhadas que são potencialmente compartilhadas entre muitos processos e, portanto, cada processo recebe apenas uma pequena parte da sua entrada no PSS.)
Aqui está um bom artigo sobre isso: ELC: quanta memória os aplicativos estão realmente usando?
Não conheço uma ferramenta top-like comum para exibir essas informações e, ps
infelizmente, não tenho opções para mostrar isso. O artigo aponta para um repositório com scripts python chamado pagemap
por Matt Mackall que você pode usar ou adaptar.
Plugue sem vergonha: você encontrará alguns posts no Unix e Linux sobre PSS e o smaps
arquivo, se estiver interessado nisso.