Fire år etter forrige oppdatering er jemalloc 5.3.1, et minnehåndteringsbibliotek, nå tilgjengelig. Det tilbyr en alternativ implementering av malloc-funksjoner som er optimalisert for å redusere fragmentering og kjøre på flerprosessorsystemer. For å løse låseproblemer på flerkjernesystemer bruker jemalloc sitt eget isolerte minneallokeringsområde for hver CPU-kjerne, noe som muliggjør lineær skalerbarhet etter hvert som antallet tråder øker.
I juni 2025 opphørte prosjektets forfatter vedlikeholdet og arkiverte jemalloc-depotet, men utviklingen ble gjenopptatt for en måned siden av Meta, som bruker jemalloc i sin infrastruktur. Biblioteket ble opprinnelig utviklet for FreeBSD og har blitt brukt som standard på det operativsystemet siden 2005. Bibliotekkoden er skrevet i C og distribuert under BSD-lisensen.
Blant endringene:
- pvalloc-funksjonen er implementert, noe som kan være nyttig når man erstatter libc-minneallokatoren.
- Dobbeltkallsdeteksjon for free()-funksjonen er aktivert i feilsøkingsbygg. Parameteren debug_double_free_max_scan er lagt til for å konfigurere stakkstørrelsen som brukes til skanning.
- La til byggealternativet "--enable-pageid" for å sette minnetilordningskoder ved hjelp av prctl med PR_SET_VMA-flagget. Når tilordningen er aktivert, kan den overvåkes via /proc/ /kart.
- La til parameteren «prof_bt_max», som lar deg angi maksimal stakkdybde for profilering.
- La til byggealternativet "--enable-force-getenv" for å tvinge kode til å bruke den vanlige getenv()-funksjonen i stedet for secure_getenv().
- La til byggealternativet "--disable-dss" for å deaktivere bruk av sbrk()-funksjonen.
- La til parameteren «tcache_ncached_max» for å begrense antall elementer i trådbufferen.
- La til alternativet «calloc_madvise_threshold» for å konfigurere om madvise-kjernemekanismen eller memset-funksjonen skal brukes til å nullstille minne tildelt via calloc-funksjonen.
- La til byggealternativet "--disable-user-config" for å deaktivere lasting av innstillinger fra /etc/malloc.conf-filen eller miljøvariabelen MALLOC_CONF.
- La til parameteren «process_madvise_max_batch» for å begrense antall minneblokker for hver madvise-batchoperasjon.
- La til parameteren «disable_large_size_classes» for å deaktivere den nye algoritmen for beregning av minneallokeringsstørrelse, som reduserer overhead ved allokering av blokker som er større enn 4 minnesider.
- Alternativer er lagt til i mallctl-verktøyet: opt.prof_bt_max, arena.
Kilde: opennet.ru
