Налична библиотека за управление на паметта jemalloc 5.3.1

Четири години след последното обновление, библиотеката за управление на паметта jemalloc 5.3.1 предлага нова реализация на функциите malloc, оптимизирана за намаляване на фрагментацията и работа в многоядрени системи. За решаване на проблемите с блокировките на многоядрени системи, jemalloc използва изолирана област за разпределение на паметта за всяко ядро на CPU, което позволява линейна скалируемост при увеличаване на броя на нишките.

През юни 2025 г. авторът на проекта спря поддръжката и архивира репозитория jemalloc, но преди месец, компанията Meta, която използва jemalloc в своята инфраструктура, възобнови разработката. Първоначално библиотеката е разработена за FreeBSD и се използва по подразбиране в тази операционна система от 2005 г. Кодът на библиотеката е написан на C и се разпространява под BSD лиценз.

Сред промените:

  • Имплементирана е функцията pvalloc, която може да бъде полезна при замяна на аллокатора на памет libc.
  • В дебъг режима е включено обнаружаването на двойно извикване на функцията free(). За настройка на размера на стека, в който се извършва сканирането, е добавен параметърът debug_double_free_max_scan.
  • Добавена опцията за сборка «—enable-pageid» за задаване на тагове при мапинг на паметта, използвайки prctl с флага PR_SET_VMA. След активиране, мапингът може да се проследява през /proc//maps.
  • Добавен е параметърът «prof_bt_max», който позволява задаване на максимална дълбочина на стека за профилиране.
  • Добавена е опцията за сборка «—enable-force-getenv» за използване на стандартната функция getenv() вместо защитената secure_getenv().
  • Добавена е опцията за сборка «—disable-dss» за деактивиране на функцията sbrk().
  • Добавен е параметърът «tcache_ncached_max» за ограничаване на броя на елементите в кеша на нишките.
  • Добавен е параметърът «calloc_madvise_threshold» за настройка на използването на механизма на ядрото madvise или функцията memset за нулиране на паметта, заделена чрез функцията calloc.
  • Добавена е опцията за сборка «—disable-user-config» за деактивиране на зареждането на настройки от файла /etc/malloc.conf или променливата на средата MALLOC_CONF.
  • Добавен е параметърът «process_madvise_max_batch» за ограничаване на броя на блоковете памет за всяка пакетна операция madvise.
  • Добавен е параметърът «disable_large_size_classes» за деактивиране на новия алгоритъм за изчисление на размера на заделяната памет, който намалява разходите при заделяне на блокове с размер над 4 страници памет.
  • В утилитата mallctl са добавени опции: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage и approximate_stats.active.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster