Pelo que eu sei existem vários conceitos de memória: VSS RSS PSS e USS, nos quais USS (tamanho único do conjunto) é a memória física usada exclusivamente por um processo (corrija-me se necessário).
Acho que esse deve ser um valor muito útil para me informar qual processo usa muita memória física?
Mas como poderíamos obter esse valor? Por ps ou de qualquer arquivo/proc?
(Eu sei que uma ferramenta smem pode ajudar, mas existe algum método integrado?)
Atualização 20230904
Seguindo a postagem fornecida por aviro, http://lwn.net/Articles/230975/ menciona que
Esses números (PSS e USS) são relativamente caros para calcular, pois exigem uma passagem pelo espaço de endereço do processo. Portanto, eles não serão algo exportado regularmente do kernel. Eles podem ser calculados no espaço do usuário usando os arquivos /proc/<pid>/pagemap
A resposta para Obter informações sobre o uso de memória de um processo em /proc/pid/smaps inclui instruções para fazer isso. Ele não fornece o comando exato especificamente
USS
, mas fornece todas as informações e exemplos necessários para criar o comando que funcionaria paraUSS
.Portanto, se
USS
for a soma dos mapeamentos privados, você faz o mesmo que somaRSS
, mas em vez de somar toda a linha comRss:
, você soma todos os mapeamentos privados (/Private/
em vez de/Rss:/
):