Sie können diese Art von Informationen aus der /proc/<pid>/smaps
Datei für jeden Prozess in Form des Pss
Eintrags abrufen (kurz für "Proportional Share Size").
Im obigen Beispiel mit 200 MB, die von zwei Prozessen "gemeinsam genutzt" werden, würde jeder Prozess 100 MB im PSS-Eintrag für diese Zuordnung anzeigen, dh der Speicher wird gleichmäßig auf die Prozesse verteilt, die ihn gemeinsam nutzen (bis er von beiden Prozessen kopiert und freigegeben wird).
Hier ist ein Auszug aus dem Ausführen von etwas, das Sie gepostet haben:
$ 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
...
( Diese Dateien enthalten eine Menge Dinge, einschließlich Zuordnungen für gemeinsam genutzte Bibliotheken, die möglicherweise von vielen Prozessen gemeinsam genutzt werden. Daher wird für jeden Prozess nur ein kleiner Teil in seinem PSS-Eintrag für diese berücksichtigt.)
Hier ist ein schöner Artikel dazu: ELC: Wie viel Speicher verwenden Anwendungen wirklich?
Ich kenne kein allgemeines Top-ähnliches Tool zum Anzeigen dieser Informationen, und ich glaube, ps
es gibt leider auch keine Optionen, um dies anzuzeigen . Der Artikel verweist auf ein Repository mit Python-Skripten, die pagemap
von Matt Mackall aufgerufen wurden und das Sie jedoch verwenden oder anpassen können.
Schamloser Plug: Unter Unix & Linux finden Sie einige Beiträge zu PSS und der smaps
Datei, wenn Sie daran interessiert sind.