Para un proceso dado en /proc/<pid>/smaps
, para una entrada de mapeo dada, cuáles son:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Private_Dirty
¿Es Shared_Clean
+ Shared_Dirty
la cantidad de memoria que se comparte con otros procesos? Entonces, ¿es como RSS compartido?
De manera similar, ¿es Private_Clean
+ Private_Dirty
la cantidad de memoria disponible para un solo proceso ? Entonces, ¿es como RSS privado?
¿Es el valor PSS = PrivateRSS + (SharedRSS / número de procesos que lo comparten)?
Algunas preguntas más después de leer este enlace: LWN
Ahora hablemos sobre el proceso en su conjunto, cuya entrada de smaps estamos viendo.
Me di cuenta de que si hago Shared_Clean
+ Shared_Dirty
+ Private_Clean
+ Private_Dirty
para cada entrada de smaps para el proceso, obtengo el RSS del proceso según lo informado ps
, lo cual es bastante bueno. Por ej.
ps -p $$ -o pid,rss
Me dará la (aprox) mismo valor para RSS como la suma de todos Shared_Clean
, Shared_Dirty
, Private_Clean
, Private_Dirty
entrada en / proc / $$ / smaps.
Pero, ¿qué pasa con PSS para todo el proceso? Entonces, en el ejemplo anterior, ¿cómo obtengo el PSS para $$? ¿Puedo agregar la entrada de PSS para cada mapeo de smaps y llegar a PSS por $$?
¿Y qué hay de USS para todo el proceso? Una vez más, tomando el ejemplo anterior, supongo que puedo llegar al USS para $$ sumando solo las entradas Private_ * para cada entrada de smaps para $$ .. ¿verdad?
Notas:
PSS = Tamaño de conjunto proporcional.
USS = Tamaño de conjunto único.