После почти четырёхлетней паузы (см. «jemalloc всё») состоялся выпуск 5.3.1 аллокатора jemalloc – реализации malloc(3), в которой особое внимание уделяется предотвращению фрагментации и поддержке масштабируемой параллельности.
Новый выпуск включает в себя более 390 коммитов с исправлением ошибок, новыми функциями, оптимизацией производительности и улучшением переносимости.
Проект написан на языке С и распространяется по лицензии BSD.
Новые возможности:
- поддержка pvalloc(3).
- обнаружение двойного освобождения памяти в отладочной сборке;
- добавлена опция компиляции —enable-pageid для включения аннотации отображаемой памяти.
- добавлен runtime-параметр prof_bt_max управления максимальной глубиной стека для профилирования;
- добавлена опция компиляции —enable-force-getenv для использования getenv вместо secure_getenv;
- добавлена опция компиляции —disable-dss для отключения использования sbrk(2);
- добавлена опция компиляции tcache_ncached_max для управления количеством элементов в кеше потоков.
- добавлен runtime-параметр calloc_madvise_threshold для определения, используется ли ядро или memset для обнуления выделенных блоков памяти при вызове calloc;
- добавлена опция компиляции —disable-user-config для отключения чтения во время выполнения конфигураций из файла /etc/malloc.conf или из переменной среды MALLOC_CONF;
- добавлен runtime-параметр disable_large_size_classes для обеспечения работы нового алгоритма расчёта доступного размера, который минимизирует накладные расходы на память при выделении больших блоков памяти, то есть с размером >= 4 * PAGE;
- включено использование process_madvise и добавлен runtime-параметр process_madvise_max_batch для управления максимальным количеством регионов памяти в каждой «пачке» madvise;
- добавлены интерфейсы mallctl:
- opt.prof_bt_max;
- arena.<i>.name для изменения и получения имён «арены»;
- thread.tcache.max для изменения и получения tcache_max текущего потока;
- thread.tcache.ncached_max.write и thread.tcache.ncached_max.read_sizeclass для изменения и получения ncached_max текущего потока;
- arenas.hugepage для возвращения используемого размера hugepage, также экспортирумего в статистику malloc;
- approximate_stats.active для получения приблизительного значения текущего объема активных байтов, которое не следует сравнивать с другими полученными статистическими данными.
- также исправлены многие ошибки и улучшена документация.
Աղբյուր: linux.org.ru
