Отслеживание использования памяти во встроенном исполняемом файле MPI в реальном времени - PullRequest
1 голос
/ 03 июня 2011

В последнее время я немного копаюсь и пытаюсь понять, какой лучший подход - отслеживать использование памяти в программном обеспечении реального времени, которое всегда работает в Linux (в данном случае на множестве узлов, использующих MPI).Поскольку для кода нет конечного условия, я хочу иметь возможность отслеживать использование памяти в режиме реального времени, чтобы увидеть, какое изображение MPI использует больше всего, какие функции используют больше всего, сколько использует каждый узел, исколько всего исполняемого файла используется во всей системе.

Существуют ли уже инструменты для такой вещи?Кажется, что большинство вещей, которые я нахожу, это профилировщики, которые дают результаты после факта.Надеемся, что ответ сможет отследить использование памяти моим программным обеспечением, а сторонние библиотеки используют мое программное обеспечение, к которому у меня нет доступа к исходному коду.

Ответы [ 3 ]

0 голосов
/ 03 июня 2011

Как предложил littleadv: я переопределяю new / delete (вероятно, malloc / free) и отслеживаю распределения и их размер.Хороший способ отслеживать такие распределения - просто отправить их в файл или через сетевой поток, чтобы другая программа могла анализировать журналы.Довольно просто написать скрипт python / lua для разбора логов (если вы их хорошо отформатируете), который может предоставить вам информацию в хорошем виде.

Переопределение выделения памяти сторонним программным обеспечением может быть грубым в зависимости от того, как вы их связываете.Переопределение памяти через DLL часто является серьезной проблемой, поэтому посмотрите, можете ли вы связать их статически, чтобы заставить их использовать ваши выделения.

0 голосов
/ 05 июня 2011

Взгляните на vstat. ( справочные страницы для vstat )

0 голосов
/ 03 июня 2011

ОС обычно может предоставлять данные динамически в течение времени выполнения для исполняемого файла / потока (см., Например, команду linux ps).

Если вы хотите отслеживать вызывающих, вы можете переопределитьОператоры new и delete собирают данные о распределении / выпуске во время выполнения и отслеживают, какая функция вызывала их, и регистрируют их где-либо.

...