Byla představena nová verze knihovny pro správu paměti jemalloc 5.4.0, která nabízí alternativní implementaci funkcí malloc, optimalizovanou pro snížení fragmentace a provoz na vícero procesorových systémech. Pro řešení problémů se zámky na vícejádrových systémech využívá jemalloc pro každé jádro CPU vlastní izolovanou oblast pro alokaci paměti, což umožňuje dosáhnout lineární škálovatelnosti s rostoucím počtem vláken.
V červnu 2025 ukončil autor projektu podporu a převedl repozitář jemalloc do archivačního režimu, ale v březnu tohoto roku obnovila vývoj společnost Meta, která jemalloc používá ve své infrastruktuře. Knihovna byla původně vyvinuta pro FreeBSD a od roku 2005 se používá v tomto systému jako výchozí. Kód knihovny je napsán v C a šíří se pod licenci BSD.
Mezi změnami:
- Byla zjednodušena logika plnění a vyprázdnění tcache (Thread Local Cache), stejně jako správa alokace paměti.
- Byly sjednoceny alokátory stránek paměti PAC (Page Allocator Classic) a HPA (Huge Page Allocator). Byla odstraněna komplikovaná mechanika nepřímých volání přes vtable (PAI vtable).
- Pro zjednodušení údržby a rozšíření platforem byly všechny platformově závislé operace přesunuty do samostatných záhlaví.
- Byla zjednodušena správa příkazů mallctl a rovněž byla přepracována infrastruktura generování a výstupu statistik.
- Byla přidána vlajka EXTENT_ALLOC_FLAG_PINNED, která umožňuje označovat nevytlačitelné oblasti mapování paměti, jako jsou stránky HugeTLB, pro jejich prioritní znovu použití. Pro získávání statistik o využití přiřazené paměti byly přidány nové rozhraní mallctl: stats.pinned, stats.arenas..pinned, stats.arenas..extents..npinned, stats.arenas..extents..pinned_bytes a stats.arenas..mutexes.extents_pinned.{counter}.
- Obsah statistik malloc byl synchronizován v čitelné a JSON formě.
- Byly odstraněny zastaralé parametry lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div a lg_tcache_flush_large_div.
Zdroj: opennet.ru
