Per un dato processo in /proc/<pid>/smaps
, per una data voce di mappatura quali sono:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Private_Dirty
Shared_Clean
+ È Shared_Dirty
la quantità di memoria condivisa con altri processi? Quindi è come un RSS condiviso?
Allo stesso modo è Private_Clean
+ Private_Dirty
la quantità di memoria disponibile per un solo processo ? Quindi è come un RSS privato?
Il valore PSS è PrivateRSS + (SharedRSS / numero di processi che lo condividono)?
Qualche altra domanda dopo aver letto questo link: LWN
Ora parliamo del processo nel suo insieme, di cui stiamo esaminando la voce degli smaps.
Ho notato che se faccio Shared_Clean
+ Shared_Dirty
+ Private_Clean
+ Private_Dirty
per ogni voce di smaps per il processo ottengo l'RSS del processo come riportato da ps
, il che è abbastanza bello. Per es
ps -p $$ -o pid,rss
Mi darà la (circa) stesso valore per rss come la somma di tutti Shared_Clean
, Shared_Dirty
, Private_Clean
, Private_Dirty
voce in / proc / $$ / smaps.
Ma che dire di PSS per l'intero processo? Quindi, dall'esempio sopra come ottengo il PSS per $$? Posso semplicemente aggiungere la voce PSS per ogni mappatura smaps e arrivare a PSS per $$?
E che dire di USS per l'intero processo? Riprendendo l'esempio sopra, suppongo di poter arrivare all'USS per $$ sommando solo le voci Private_ * per ogni voce di smaps per $$ .. giusto?
Note:
PSS = Dimensione proporzionale impostata.
USS = Dimensioni del set univoche.