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_Dirtyla quantità di memoria condivisa con altri processi? Quindi è come un RSS condiviso?
Allo stesso modo è Private_Clean+ Private_Dirtyla 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_Dirtyper 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_Dirtyvoce 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.