Não consigo encontrar uma fonte de uso total de memória física para todos os processos de espaço do usuário no Linux.
Eu quero medir o uso de memória de um aplicativo complexo, que consiste em muitas sub-aplicações (muitos processos e RDBMS). Gostaria de registrar o desenvolvimento de uso de memória de todos os processos na instância atual do sistema operacional Linux durante o tempo de execução do aplicativo. Estou interessado em física ou, se não for possível, no consumo de memória residente ( RSS no topo ou PSS - PrivateRSS + SharedRSS / número de processos ). Não há outros aplicativos ou processos em execução no host (seu uso de memória é insignificante).
Diferentemente de outras perguntas similares, a resposta pode ser derivada das informações adicionais que o guest Linux está rodando dentro de um container VMWare (isso pode ser usado para obter as estatísticas da memória).
Não é possível enumerar todos os processos do aplicativo, porque muitos deles e sua vida útil às vezes são muito curtos.
Idealmente, quero obter o uso de memória de pico diretamente, sem amostragem, pois tenho medo de perder o pico.
Meu primeiro palpite é pegar em / proc / meminfo e usar MemTotal – MemFree = CurrentMemoryUsage
, mas também temo que esteja incorreto, porque a memória também pode ser reivindicada pelo kernel do Linux, por exemplo. para armazenamento em cache de arquivos e também será gravado como memória usada. Esse método também não é preciso para estimar o uso de memória de pico.
Usar time ou / proc // smaps não é possível, porque há muitos processos independentes no aplicativo e o tempo de execução pode ser muito curto.