En ny version av minneshanteringsbiblioteket jemalloc 5.4.0 har presenterats, som erbjuder en alternativ implementation av malloc-funktionerna, optimerad för att minska fragmentering och fungera pÄ flerprocessor-system. För att lösa problem med lÄsning pÄ flerkÀrniga system anvÀnder jemalloc ett isolerat minnesallokeringsomrÄde för varje CPU-kÀrna, vilket möjliggör linjÀr skalbarhet nÀr antalet trÄdar ökar.
I juni 2025 avslutade projektets skapare stödet och arkiverade jemalloc-repositoriet, men i mars i Är Äterupptog företaget Meta, som anvÀnder jemalloc i sin infrastruktur, utvecklingen. Biblioteket utvecklades ursprungligen för FreeBSD och anvÀnds som standard i detta operativsystem sedan 2005. Koden i biblioteket Àr skriven i C och distribueras under BSD-licensen.
Bland Àndringarna:
- Logiken för att fylla och ÄterstÀlla tcache (Thread Local Cache) samt hanteringen av minnesallokering har förenklats.
- Minnesallokerarna PAC (Page Allocator Classic) och HPA (Huge Page Allocator) har förenats. Den komplicerade mekanismen för indirekta anrop via vtable (PAI vtable) har tagits bort.
- För att förenkla underhÄll och expansion av plattformen har alla plattformsberoende operationer flyttats till separata header-filer.
- Hanteringen av mallctl-kommandon har förenklats, och infrastrukturen för generering och utdata av statistik har omarbetats.
- Flaggan EXTENT_ALLOC_FLAG_PINNED har lagts till, vilket gör det möjligt att mÀrka oflyttbara minnesomrÄden, sÄsom HugeTLB-sidor, för prioriterad ÄteranvÀndning. För att fÄ statistik över anvÀndningen av fast minne har nya mallctl-grÀnssnitt lagts till: stats.pinned, stats.arenas.<i>.pinned, stats.arenas.<i>.extents.<j>.npinned, stats.arenas.<i>.extents..pinned_bytes och stats.arenas.<i>.mutexes.extents_pinned.{counter}.
- InnehÄllet i malloc-statistik har synkroniserats i lÀsbar och JSON-format.
- FörÄldrade parametrar lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div och lg_tcache_flush_large_div har tagits bort.
KĂ€lla: opennet.ru
