Dla danego procesu w /proc/<pid>/smaps, dla danego wpisu mapowania są:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Prywatny_brudny
Czy Shared_Clean+ Shared_Dirtyilość pamięci współdzielona z innymi procesami? Więc to jest jak współdzielony RSS?
Podobnie jest Private_Clean+ Private_Dirtyilość 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_Dirtydla 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_Dirtywpis 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.