След почти четиригодишна пауза (вж. „jemalloc всичко“) беше пусната версия 5.3.1 на алокатора jemalloc – реализация на malloc(3), с особено внимание към предотвратяване на фрагментация и поддръжка на мащабируема паралелност.
Новото издание включва над 390 комита с поправки на грешки, нови функции, оптимизация на производителността и подобрена преносимост.
Проектът е написан на езика C и се разпространява под лиценз 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
