Менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки

Высокопроизводительный менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки для платформы Linux. Jemalloc представляет собой реализацию функций malloc, оптимизированную для решения проблем фрагментации и оптимальной утилизации ресурсов CPU при выделения памяти в нескольких потоках на многопроцессорных системах. Изначально jemalloc был разработан Джейсоном Эвансом (Jason Evans) для FreeBSD 7.0, а позднее был портирован в NetBSD и интегрирован в состав браузера Firefox 3.

Для решения проблем с блокировками на SMP системах в jemalloc для каждого процессора используется своя изолированная область распределения памяти, что позволяет добиться линейной масштабируемости при измерении числа распределений памяти в единицу времени при росте числа нитей в многопоточных приложениях, при том что в таких системах как pkhmalloc и dlmalloc производительность падает с ростом числа потоков. Использование jemalloc позволяет увеличить производительность, сократив при этом фрагментацию и в связи с этим требуя для своей работы меньше памяти. Например, переход Firefox на jemalloc привел к уменьшению потребления памяти при длительной работе в среднем на 22%.

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

©  OpenNet