Existe uma ferramenta que permita o registro do uso da memória?


18

Quero monitorar o uso da memória de um processo e quero que esses dados sejam registrados. Existe uma ferramenta desse tipo?


11
Acho que esse link sobre o monitoramento programado de um uso de memória de processo será útil para você resolver sua necessidade.
Sen

Respostas:



12

Ocasionalmente, quando surge a necessidade, eu apenas faço:

$ top -d 1 -b |grep <process> >>somefile

Não é uma solução elegante, mas faz o trabalho se você deseja que o valor bruto rápido verifique sua hipótese.


Eu acho que é elegante por sua simplicidade. Você pode querer fazer grep --line-buffered <process> >>somefilepara forçar grep para a saída de cada linha, sem buffer
Ott Toomet

7

sar( System Activity Reporter ) do pacote sysstat é seu amigo nesse caso.

Outra maneira seria o monitoramento combinado com dados históricos, por exemplo, Munin, pnp4nagios, rrdtools, ...


11
mas pode sarser focado em apenas um processo? principalmente parece para monitorar o sistema como um todo
xenoterracide

3
O pidstatcomando também do pacote sysstat fornece uma interface bastante agradável para relatar estatísticas em um único processo.
Steven D

@xenoterracide Steven D teve a resposta. Eu não estava ciente desse comando antes.
Christian

4

Além do sar acima mencionado, eu recomendo no topo . Ele salva um log binário que você pode ler posteriormente e, além disso, a memória salva muitas outras informações.


3

Você poderia tentar Valgrind .

Valgrind é uma estrutura de instrumentação para a construção de ferramentas de análise dinâmica. Existem ferramentas Valgrind que podem detectar automaticamente muitos bugs de gerenciamento de memória e de segmentação, além de criar um perfil detalhado de seus programas. Você também pode usar o Valgrind para criar novas ferramentas.

Atualmente, a distribuição Valgrind inclui seis ferramentas de qualidade de produção: um detector de erros de memória , dois detectores de erros de encadeamento, um criador de perfil de previsão de ramificação e cache, um gerador de cache e gerador de perfil de previsão de ramificação e um gerador de heap .


Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
precisa saber é

Este documento maciço explica em detalhes.
precisa

0

Gosto da resposta simples de Sridhar, mas rolei a minha antes de experimentar a dele:

import json, psutil, datetime, time

with open('log.txt', 'w') as f:
  while True:
    json.dump((datetime.datetime.now().isoformat(),
               psutil.Process(7274).memory_info()._asdict()), f)
    f.write('\n')
    f.flush()
    time.sleep(1)

É basicamente útil apenas se você deseja saída estruturada. Altere 7274 conforme apropriado. Também Python 3.5.algo quebrou_asdict() , então use o Python 2.

O arquivo de saída se parece com:

["2019-03-19T11:21:53.784670", {"rss": 220389376, "vms": 538984448, "shared": 15724544, "text": 303104, "lib": 0, "data": 221364224, "dirty": 0}]
["2019-03-19T11:21:54.786136", {"rss": 220438528, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:55.787555", {"rss": 220495872, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
["2019-03-19T11:21:56.788754", {"rss": 220528640, "vms": 539119616, "shared": 15724544, "text": 303104, "lib": 0, "data": 221499392, "dirty": 0}]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.