На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

В Санкт-Петербургском национальном исследовательском университете информационных технологий, механики и оптики, совместно с «Тбрикс АБ» предложен критерий для оценки результатов профилирования памяти.

12.08.2015

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

Рассматриваемая в данной работе библиотека выделения памяти jemalloc является одной из наиболее популярных библиотек для многопоточных приложений, разрабатываемых под платформу Linux. Свою известность она получила благодаря реализованным в ней механизмам работы с памятью, обеспечивающим лучшую производительность приложения, и, как следствие, ее активному внедрению в серверные компоненты платформы Facebook. Jemalloc реализует функцию malloc() согласно стандарту POSIX и дает возможность профилирования памяти. Одно из преимуществ библиотеки в том, что при запус- ке приложения профилирование может быть включено (опция opt.prof=true), но неактивно (opt.prof_active=false). Это делает возможным запуск и остановку профилирования прямо во время работы приложения. Стоит отметить, что другие популярные средства профилирования, такие как valgrind и TCMalloc, такой возможности не предоставляют. При активном профилировании информация о выделении памяти сохраняется при выделении каждых x Кб, называемых интервалом выборки. Интервал выборки x является настраиваемым параметром, его увеличение уменьшает влияние профилирования на характеристики оперативности приложения, но при этом результаты показывают не все стеки выделения памяти. Согласно документации jemalloc, размер интервала выборки по умолчанию составляет 512 Кб.

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

Подробное описание дается в статье «Исследование влияния профилирования памяти средствами библиотеки jemalloc на время выполнения многопоточных приложений», авторы: Иванов Е.Ю., Торопов А.В., Косяков М.С. (Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, «Тбрикс АБ», Санкт-Петербург).