Пасля амаль чатырохгадовай паўзы (гл.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.
- 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
