Как записать все выделения и освобождения памяти в программе? - PullRequest
0 голосов
/ 22 января 2010

Я хочу видеть, что фрагментация является причиной увеличения использования памяти моего витого сервера. Я разместил вопрос здесь: Как найти источник увеличения использования памяти витым сервером?

Теперь я собираюсь визуализировать кучу. Я нашел статью: Фрагментация памяти . Фигура кучи в этой статье - это то, что я хочу. Мне не сложно нарисовать такую ​​фигуру с помощью matplotlib или других инструментов. Самая сложная работа: как записать выделение и освобождение памяти?

Я знаю, что могу изменить исходный код CPython, добавить код регистрации в omalloc.c, перекомпилировать Python и использовать модифицированный CPython для запуска моего сервера. Но я не хочу тратить на это время. Тогда я ищу некоторые доступные инструменты. Я знаю, что есть инструмент valgrind , который можно использовать для обнаружения утечки памяти, но я не знаю, как записывать распределение и освобождение. Я вижу, что его memcheck может обнаружить что-то вроде:

  • Неверно прочитано
  • неиницализированные
  • Недействительно бесплатно

Но это не то, что я хочу, все, что мне нужно, это:

  • Запишите все выделения и освобождения памяти с указанием времени, адреса и размера.

Мои вопросы:

  1. Как я могу сделать это с valgrind?
  2. Если я не могу, я должен написать модуль для этого?
  3. Или есть ли лучшие инструменты, чтобы достичь этого?

Спасибо.

1 Ответ

0 голосов
/ 02 января 2011

Ответ на вопрос об альтернативных инструментах:

Я знаю, что там есть инструмент "Закрепить", возможно, стоит проверить его: http://www.pintool.org/

...