Como medir o uso atual e máximo da memória física de todos os processos de espaço do usuário no Linux?

0

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.

    
por Anton Golubev 04.04.2018 / 15:32

0 respostas