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_Dirtya quantidade de memória compartilhada com outros processos? Então é como RSS compartilhado?
Da mesma forma, é Private_Clean+ Private_Dirtya 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_Dirtypara 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_Dirtyentrada 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.