Чи є інструмент, що дозволяє здійснювати реєстрацію використання пам'яті?


18

Я хочу контролювати використання пам'яті в процесі, і я хочу, щоб ці дані реєструвалися. Чи існує такий інструмент?


1
Я думаю, що це посилання щодо програмного моніторингу використання пам'яті процесу буде корисним для вирішення ваших потреб.
Сен

Відповіді:


8

Я написав сценарій, щоб зробити саме це . Це в основному вибірки psз певними інтервалами, щоб створити профіль певного процесу. Процес може бути запущений самим інструментом моніторингу, або це може бути незалежним процесом (визначеним pid або командним шаблоном).


1
Syrupy, очевидно, перейшов на github.com/jeetsukumaran/Syrupy
Framester

12

Іноді, коли виникає потреба, я просто роблю:

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

Це не елегантне рішення, але це виконує завдання, якщо ви хочете, щоб швидке сире значення перевірило вашу гіпотезу.


Я думаю, що це елегантно в своїй простоті. Ви можете зробити, grep --line-buffered <process> >>somefileщоб змусити grep виводити кожен рядок без буферизації
Ott Toomet

7

sar( System Activity Reporter ) з пакету sysstat - це ваш друг у випадку подібного.

Інший спосіб - це моніторинг у поєднанні з історичними даними, наприклад, Munin, pnp4nagios, rrdtools, ...


1
але чи sarможна зосередитись лише на одному процесі? в основному, здається, слідкують за системою в цілому
ксенотеррацид

3
pidstatКоманда також з Sysstat пакета забезпечує досить хороший інтерфейс для статистики за єдиним процесу звітності.
Стівен Д

@xenoterracide Стівен D мав відповідь. Я раніше не знав цієї команди.
Крістіан

4

Окрім вищезгаданого сара, я б рекомендував зверху . Це економить двійковий журнал, який ви зможете ознайомитись згодом, а крім пам’яті зберігає ще багато іншої інформації.


3

Ви можете спробувати Valgrind .

Valgrind - це інструментальна основа для створення інструментів динамічного аналізу. Існують інструменти Valgrind, які дозволяють автоматично виявити багато помилок управління пам’яттю та виправлення помилок, а також детально профайлювати програми. Також ви можете використовувати Valgrind для створення нових інструментів.

В даний час розподіл Valgrind включає шість інструментів якості виробництва: детектор помилок пам’яті , два детектори помилок потоку, кеш-пам'ять і передбачувач прогнозування гілок, графік виклику, що генерує кеш-пам'ять, і профілер прогнозування гілок, і купі-профілер .


Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
saji89

Цей масив документа детально пояснити.
Шон Сі

0

Мені подобається проста відповідь Шрідхара, але я скрутив свою, перш ніж спробувати його:

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)

Це в основному корисно лише в тому випадку, якщо ви хочете структурувати вихід. Змініть 7274 відповідно. Також Python 3.5.щось зламалося _asdict(), тому використовуйте Python 2.

Вихідний файл виглядає так:

["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}]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.