Po 4 letech od vydání poslední aktualizace je k dispozici vydání knihovny pro správu paměti jemalloc 5.3.1, která nabízí alternativní implementaci funkcí malloc, optimalizovaných pro snížení fragmentace a efektivní práci na vícejádrových systémech. Pro řešení problémů se zámky na vícejádrových systémech používá jemalloc pro každé CPU své izolované oblasti alokace paměti, což umožňuje dosáhnout lineární škálovatelnosti s rostoucím počtem vláken.
V červnu 2025 autor projektu ukončil jeho podporu a převedl repozitář jemalloc do archivačního režimu, avšak před měsícem obnovila vývoj společnost Meta, která jemalloc využívá ve své infrastruktuře. Knihovna byla původně vyvinuta pro FreeBSD a od roku 2005 je používána jako výchozí v této operativní soustavě. Kód knihovny je napsán v jazyce C a je distribuován pod licencí BSD.
Mezi změnami:
- Byla implementována funkce pvalloc, která může být užitečná při nahrazování alokátoru paměti libc.
- V ladících sestaveních je zahrnut režim detekce dvojího volání funkce free(). Pro nastavení velikosti zásobníku, v rámci kterého se provádí skenování, byl přidán parametr debug_double_free_max_scan.
- Byla přidána stavební volba „—enable-pageid“ pro označování tagů při mapování paměti za použití prctl s příznakem PR_SET_VMA. Po aktivaci lze mapování sledovat přes /proc//maps.
- Byl přidán parametr „prof_bt_max“, který umožňuje nastavit maximální hloubku zásobníku pro profilování.
- Byla přidána stavební volba „—enable-force-getenv“ pro využití běžné funkce getenv() místo chráněné secure_getenv().
- Byla přidána stavební volba „—disable-dss“ pro zakázání používání funkce sbrk().
- Byl přidán parametr „tcache_ncached_max“ pro omezení počtu prvků v časové mezipaměti.
- Byl přidán parametr „calloc_madvise_threshold“ pro nastavení mechanismu jádra madvise nebo funkce memset pro nulování paměti alokované prostřednictvím funkce calloc.
- Byla přidána stavební volba „—disable-user-config“ pro zakázání načítání nastavení z souboru /etc/malloc.conf nebo proměnné prostředí MALLOC_CONF.
- Byl přidán parametr „process_madvise_max_batch“ pro omezení počtu bloků paměti pro každou dávkovou operaci madvise.
- Byl přidán parametr „disable_large_size_classes“ pro deaktivaci nového algoritmu výpočtu velikosti přidělované paměti, který snižuje režijní náklady při přidělování bloků větších než 4 stránky paměti.
- Do nástroje mallctl byly přidány možnosti: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage a approximate_stats.active.
Zdroj: opennet.ru
