Udgivelsen af biblioteket til hukommelsesstyring jemalloc 5.4.0 introducerer en alternativ implementering af malloc-funktionerne, optimeret til at reducere fragmentering og fungere på multiprocessorsystemer. For at løse problemer med låsning på flerkernet systemer benytter jemalloc en isoleret hukommelsesallokeringszone for hver CPU-kerne, hvilket muliggør lineær skalerbarhed, når antallet af tråde vokser.
I juni 2025 stoppede projektforfatteren vedligeholdelsen og overførte jemalloc-repositoriet til arkivtilstand, men i marts i år genoptog Meta-virksomheden udviklingen, som anvender jemalloc i sin infrastruktur. Biblioteket blev oprindeligt udviklet til FreeBSD og anvendes i denne OS som standard siden 2005. Koden til biblioteket er skrevet i C og distribueres under BSD-licensen.
Blandt ændringerne:
- Logikken bag udfyldning og nulstilling af tcache (Thread Local Cache) samt håndtering af hukommelsesallokering er forenklet.
- Hukommelsessiderallocators PAC (Page Allocator Classic) og HPA (Huge Page Allocator) er blevet ensrettet. Den komplicerede mekanisme til indirekte opkald gennem vtable (PAI vtable) er blevet fjernet.
- For at forenkle vedligeholdelsen og udvidelsen af platforme er alle platform-afhængige operationer flyttet til separate headerfiler.
- Håndteringen af mallctl-kommandoer er forenklet, ligesom infrastrukturen til generering og output af statistikker er blevet redesignede.
- Flaget EXTENT_ALLOC_FLAG_PINNED er blevet tilføjet, hvilket gør det muligt at mærke uudtrækkelige hukommelsesområder for mapping, såsom HugeTLB-sider, til prioriteret genbrug. Nye mallctl-grænseflader er blevet tilføjet for at få statistik over brugen af fastlåst hukommelse: stats.pinned, stats.arenas.<i>.pinned, stats.arenas.<i>.extents.<j>.npinned, stats.arenas.<i>.extents..pinned_bytes og stats.arenas.<i>.mutexes.extents_pinned.{counter}.
- Indholdet af malloc-statistikken er blevet synkroniseret i læsbart og JSON-format.
- Uddaterede parametre som lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div og lg_tcache_flush_large_div er blevet fjernet.
Kilde: opennet.ru
