Anda bisa mendapatkan informasi semacam itu dari /proc/<pid>/smaps
file untuk setiap proses dalam bentuk Pss
entri (kependekan dari "Ukuran share proporsional").
Dalam contoh di atas dengan 200MB "dibagi" antara dua proses, setiap proses akan menunjukkan 100MB di entri PSS untuk pemetaan itu, yaitu memori didistribusikan secara merata di antara proses yang membagikannya (sampai disalin dan dibagi dengan kedua proses).
Berikut ekstrak dari menjalankan sesuatu seperti yang Anda poskan:
$ 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
...
(Ada banyak hal dalam file-file itu, termasuk pemetaan untuk pustaka bersama yang berpotensi dibagi antara banyak proses, dan dengan demikian setiap proses hanya mendapat sebagian kecil yang dimasukkan dalam entri PSS untuknya.)
Inilah artikel yang bagus tentang ini: ELC: Berapa banyak memori yang benar-benar digunakan aplikasi?
Saya tidak tahu tentang alat seperti biasa untuk menampilkan informasi ini, dan saya pikir tidak ps
memiliki opsi untuk menunjukkannya. Artikel ini menunjuk ke repositori dengan skrip python yang disebut pagemap
oleh Matt Mackall yang bisa Anda gunakan atau adaptasi.
Plug Shameless: Anda akan menemukan beberapa posting di Unix & Linux tentang PSS dan smaps
file jika Anda tertarik pada itu.