Dla danego procesu w /proc/<pid>/smaps
, dla danego wpisu mapowania są:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Prywatny_brudny
Czy Shared_Clean
+ Shared_Dirty
ilość pamięci współdzielona z innymi procesami? Więc to jest jak współdzielony RSS?
Podobnie jest Private_Clean
+ Private_Dirty
ilość pamięci, która jest dostępna tylko dla jednego procesu ? Więc to jest jak prywatny RSS?
Czy wartość PSS = PrivateRSS + (SharedRSS / liczba procesów, które ją dzielą)?
Więcej pytań po przeczytaniu tego linku: LWN
Porozmawiajmy teraz o całym procesie, którego wpisu patrzymy na niego.
Zauważyłem, że jeśli zrobię Shared_Clean
+ Shared_Dirty
+ Private_Clean
+ Private_Dirty
dla każdego wpisu smaps dla procesu, dostanę RSS procesu zgodnie z raportem ps
, co jest całkiem fajne. Na przykład
ps -p $$ -o pid,rss
Da mi (w przybliżeniu) taką samą wartość dla rss jako suma każdy Shared_Clean
, Shared_Dirty
, Private_Clean
, Private_Dirty
wpis w / proc / $$ / smaps.
Ale co z PSS dla całego procesu? Więc z powyższego przykładu, jak uzyskać PSS za $$? Czy mogę po prostu dodać wpis PSS dla każdego mapowania map i dotrzeć do PSS za $$?
A co z USS dla całego procesu? Ponownie biorąc powyższy przykład, zgaduję, że mogę dotrzeć do USS dla $$, sumując tylko wpisy Private_ * dla każdego wpisu smaps dla $$ .. prawda?
Uwagi:
PSS = Proporcjonalny rozmiar zestawu.
USS = Unikalny rozmiar zestawu.