Fyra Är efter publiceringen av den senaste uppdateringen finns nu en ny version av minneshanteringsbiblioteket jemalloc 5.3.1, som erbjuder en alternativ implementation av malloc-funktioner, optimerad för att minska fragmentering och fungera pÄ multiprocessorsystem. För att lösa problem med lÄsningar pÄ flerkÀrniga system anvÀnder jemalloc ett isolerat minnesomrÄde för varje CPU-kÀrna, vilket möjliggör linjÀr skalbarhet nÀr antalet trÄdar ökar.
I juni 2025 upphörde projektets skapare att underhÄlla det och flyttade jemalloc-repositoriet till arkivlÀge, men för en mÄnad sedan Äterupptog Meta utvecklingen, som anvÀnder jemalloc i sin infrastruktur. Biblioteket utvecklades ursprungligen för FreeBSD och har anvÀnts som standard för detta operativsystem sedan 2005. Koden Àr skriven i C och distribueras under BSD-licensen.
Bland Àndringarna:
- Funktionen pvalloc har implementerats, vilket kan vara anvÀndbart vid ersÀttning av libc:s minnesallokator.
- I debug-versioner har en lÀge för att upptÀcka dubbelanrop av free()-funktionen inkluderats. För att stÀlla in stackstorleken, inom vilken skanningen utförs, har en parameter debugging_double_free_max_scan lagts till.
- En byggkonfiguration «âenable-pageid» har lagts till för att tilldela taggar under minnesmappning med prctl med flaggan PR_SET_VMA. NĂ€r den Ă€r aktiverad kan mappningen övervakas genom /proc//maps.
- En parameter «prof_bt_max» har lagts till för att ange den maximala djupet av stacken för profilering.
- En byggkonfiguration «âenable-force-getenv» har lagts till för att anvĂ€nda den vanliga funktionen getenv() istĂ€llet för den skyddade secure_getenv().
- En byggkonfiguration «âdisable-dss» har lagts till för att inaktivera anvĂ€ndningen av sbrk()-funktionen.
- En parameter «tcache_ncached_max» har lagts till för att begrÀnsa antalet element i trÄdkatalogen.
- En parameter «calloc_madvise_threshold» har lagts till för att konfigurera anvÀndningen av kÀrnans madvise-mekanism eller memset-funktionen för att nollstÀlla minnet som tilldelats genom calloc-funktionen.
- En byggkonfiguration «âdisable-user-config» har lagts till för att inaktivera inlĂ€sningen av instĂ€llningar frĂ„n filen /etc/malloc.conf eller miljövariabeln MALLOC_CONF.
- En parameter «process_madvise_max_batch» har lagts till för att begrÀnsa antalet minnesblock för varje batchoperation med madvise.
- Ett nytt parameter "disable_large_size_classes" har lagts till för att avaktivera den nya algoritmen för berÀkning av allokerat minnesstorlek, vilket minskar overhead vid allokering av block som Àr större Àn 4 minnessidor.
- Verktyget mallctl har fÄtt nya alternativ: opt.prof_bt_max, arena..name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage och approximate_stats.active.
KĂ€lla: opennet.ru
