Vier jaar na de publicatie van de laatste update is versie 5.3.1 van de jemalloc geheugenbeheerbibliotheek beschikbaar, die een alternatieve implementatie van malloc-functies biedt, geoptimaliseerd om fragmentatie te verminderen en te werken op multiprocessorsystemen. Voor het oplossen van vergrendelingsproblemen op multicore systemen gebruikt jemalloc voor elke CPU-kern een geïsoleerd geheugenallocatiegebied, wat lineaire schaalbaarheid mogelijk maakt bij een toename van het aantal threads.
In juni 2025 stopte de auteur van het project met de ondersteuning en zette de jemalloc-repository in archiefmodus, maar een maand geleden heeft Meta, dat jemalloc in zijn infrastructuur gebruikt, de ontwikkeling hervat. De bibliotheek is oorspronkelijk ontwikkeld voor FreeBSD en wordt sinds 2005 standaard in dit besturingssysteem gebruikt. De code van de bibliotheek is geschreven in C en wordt verspreid onder de BSD-licentie.
Onder de wijzigingen:
- De pvalloc-functie is geïmplementeerd, die nuttig kan zijn bij het vervangen van de libc-geheugenallocator.
- In de debug-builds is er een modus voor het detecteren van dubbele aanroepen van de free()-functie toegevoegd. Voor de configuratie van de stackgrootte, waarin de scan wordt uitgevoerd, is de parameter debug_double_free_max_scan toegevoegd.
- Een buildoptie ‘—enable-pageid’ is toegevoegd voor het instellen van tags bij het mappen van geheugen, gebruikmakend van prctl met de vlag PR_SET_VMA. Na inschakeling kan de mapping worden gevolgd via /proc//maps.
- Een parameter ‘prof_bt_max’ is toegevoegd, waarmee de maximale diepte van de stack voor profiling kan worden ingesteld.
- Een buildoptie ‘—enable-force-getenv’ is toegevoegd voor het gebruik van de gewone getenv() functie in plaats van de beschermde secure_getenv().
- Een buildoptie ‘—disable-dss’ is toegevoegd om het gebruik van de sbrk() functie uit te schakelen.
- Een parameter ‘tcache_ncached_max’ is toegevoegd om het aantal elementen in de threadcache te beperken.
- Een parameter ‘calloc_madvise_threshold’ is toegevoegd voor het instellen van het gebruik van de kernel-mekanis voor madvise of de memset functie voor het nullen van het geheugen dat via de calloc-functie is toegewezen.
- Een buildoptie ‘—disable-user-config’ is toegevoegd om het laden van instellingen uit het bestand /etc/malloc.conf of de omgevingsvariabele MALLOC_CONF uit te schakelen.
- Een parameter ‘process_madvise_max_batch’ is toegevoegd om het aantal geheblocks voor elke batch-operatie madvise te beperken.
- De parameter «disable_large_size_classes» is toegevoegd om het nieuwe algoritme voor het berekenen van de toegewezen geheugengrootte uit te schakelen, waardoor overheadkosten bij het toewijzen van blokken groter dan 4 pagina's geheugen worden verminderd.
- Er zijn opties toegevoegd aan de tool mallctl: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage en approximate_stats.active.
Bron: opennet.ru
