Izšla je različica 5.4.0 knjižnice za upravljanje pomnilnika jemalloc. Ponuja alternativno implementacijo funkcij malloc, optimizirano za zmanjšanje fragmentacije in izvajanje v večprocesorskih sistemih. Za reševanje težav z zaklepanjem v večjedrnih sistemih jemalloc uporablja lastno izolirano območje za dodeljevanje pomnilnika za vsako jedro procesorja, kar omogoča linearno skalabilnost z naraščajočim številom niti.
Junija 2025 je avtor projekta prenehal z vzdrževanjem in repozitorij jemalloc premaknil v arhivski način, marca letos pa je razvoj nadaljevalo podjetje Meta, ki v svoji infrastrukturi uporablja jemalloc. Knjižnica je bila prvotno razvita za FreeBSD in se v tem operacijskem sistemu privzeto uporablja od leta 2005. Koda knjižnice je napisana v jeziku C in se distribuira pod licenco BSD.
Med spremembami:
- Logika za polnjenje in brisanje predpomnilnika tcache (Thread Local Cache) ter razporejanje dodeljevanja pomnilnika je bila poenostavljena.
- Dodeljevalnika strani pomnilnika Page Allocator Classic (PAC) in HPA (Huge Page Allocator) sta bila poenotena. Odstranjen je bil zapleten mehanizem posrednih klicev prek vtable (PAI vtable).
- Za poenostavitev vzdrževanja in širitve platforme so vse operacije, odvisne od platforme, premaknjene v ločene datoteke glave.
- Pošiljanje ukazov mallctl je bilo poenostavljeno, infrastruktura za ustvarjanje in prikazovanje statistike pa je bila preoblikovana.
- Dodana je bila zastavica EXTENT_ALLOC_FLAG_PINNED, ki omogoča označevanje nepreklicnih območij preslikave pomnilnika, kot so strani HugeTLB, za prednostno ponovno uporabo. Dodani so bili novi vmesniki mallctl za pridobivanje pripetih statističnih podatkov o porabi pomnilnika: stats.pinned, stats.arenas..pinned
- Sinhronizirana vsebina statistike malloc v človeku berljivi in JSON obliki.
- Odstranjeni so bili zastareli parametri lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div in lg_tcache_flush_large_div.
Vir: opennet.ru
