Jemalloc 5.4.0-bibliotekens utgivelse presenteres, som tilbyr en alternativ implementering av malloc-funksjonene, optimalisert for å redusere fragmentering og fungere på flerprosessorsystemer. For å løse problemer med låsing på flerkjernet systemer bruker jemalloc et isolert minnefordelingsområde for hver CPU-kjerne, noe som gir lineær skalerbarhet med økende trådtall.
I juni 2025 stoppet prosjektets forfatter vedlikeholdet og arkiverte jemalloc-repositoriet, men i mars i år gjenopptok Meta utviklingen, som bruker jemalloc i sin infrastruktur. Biblioteket ble opprinnelig utviklet for FreeBSD og har vært standardbruk i dette operativsystemet siden 2005. Bibliotekets kode er skrevet i C og distribueres under BSD-lisensen.
Blant endringene:
- Logikken for fylling og tilbakestilling av tcache (Thread Local Cache) samt minnefordelingens dispatcher er forenklet.
- Minneallokeringssystemene PAC (Page Allocator Classic) og HPA (Huge Page Allocator) er blitt forent. Den kompliserte indirekte kallmekanismen gjennom vtable (PAI vtable) er fjernet.
- For å forenkle vedlikehold og utvidelse av plattformer er alle plattformavhengige operasjoner flyttet til egne header-filer.
- Dispatcher-logikken for mallctl-kommandoene er forenklet, og infrastrukturen for generering og visning av statistikk har blitt redesignet.
- Flaagen EXTENT_ALLOC_FLAG_PINNED er lagt til for å merke ufortrengbare minnekartleggingområder, som HugeTLB-sider, for prioritert gjenbruk. Nye mallctl-grensesnitt er lagt til for å hente statistikk om ufortrengt minne: 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}.
- Innholdet i malloc-statistikken er synkronisert i lesbare og JSON-formater.
- Utdaterte parametere 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 fjernet.
Kilde: opennet.ru
