jemalloc 5.3.1

good-penguin.png

После почти четырёхлетней паузы (см. «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..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 для получения приблизительного значения текущего объема активных байтов, которое не следует сравнивать с другими полученными статистическими данными.
  • также исправлены многие ошибки и улучшена документация.

>>> Подробности на GitHub

©  Linux.org.ru