Para um determinado processo em /proc/<pid>/smaps
, para uma determinada entrada de mapeamento, quais são:
- Shared_Clean
- Shared_Dirty
- Private_Clean
- Private_Dirty
Shared_Clean
+ É Shared_Dirty
a quantidade de memória compartilhada com outros processos? Então é como RSS compartilhado?
Da mesma forma, é Private_Clean
+ Private_Dirty
a quantidade de memória disponível para apenas um processo ? Então é como um RSS privado?
O valor PSS é = PrivateRSS + (SharedRSS / número de processos que o compartilham)?
Mais algumas perguntas depois de ler este link: LWN
Agora vamos falar sobre o processo como um todo, cuja entrada de smaps estamos vendo.
Percebi que, se eu faço Shared_Clean
+ Shared_Dirty
+ Private_Clean
+ Private_Dirty
para cada entrada de smaps do processo, recebo o RSS do processo, conforme relatado por ps
, o que é bem legal. Por exemplo
ps -p $$ -o pid,rss
Vai me dar a (aproximadamente) mesmo valor para rss como a soma de todas Shared_Clean
, Shared_Dirty
, Private_Clean
, Private_Dirty
entrada em / proc / $$ / smaps.
Mas e o PSS para todo o processo? Portanto, no exemplo acima, como obtenho o PSS para $$? Posso apenas adicionar a entrada PSS para cada mapeamento de smaps e chegar ao PSS por $$?
E o USS para todo o processo? Novamente, tomando o exemplo acima, acho que posso chegar ao USS para $$ resumindo apenas as entradas Private_ * para cada entrada de smaps para $$ .. certo?
Notas:
PSS = tamanho proporcional do conjunto.
USS = tamanho único do conjunto.