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