Megjelent a jemalloc 5.4.0 memória kezelő könyvtár új verziója, amely alternatív megvalósítást kínál a malloc funkciókhoz, optimalizálva a fragmentáció csökkentésére és a multiprocesszoros rendszerek működésére. A többmagos rendszerek zárolási problémáinak megoldására a jemalloc minden CPU maghoz saját, izolált memóriamegosztási területet használ, ami lineáris skálázhatóságot tesz lehetővé a szálak számának növekedésével.
2025 júniusában a projekt szerzője leállította a karbantartását, és archiválta a jemalloc tárolót, de az idén márciusban a Meta vállalat újraindította a fejlesztést, amely a jemalloc-ot az infrastruktúrájában alkalmazza. A könyvtár eredetileg a FreeBSD számára készült, és azóta alapértelmezettként használják ezen operációs rendszeren 2005 óta. A könyvtár kódja C nyelven íródott, és BSD licenc alatt terjesztik.
A változtatások közül:
- Egyszerűsítették a tcache (Szál Helyi Cache) kitöltésének és visszaállításának logikáját, valamint a memóriaallokálás ütemezését.
- Egységesítették a PAC (Hagyományos Oldal Allokátor) és HPA (Nagy Oldal Allokátor) memóriaallokátorokat. Eltávolították a vtable (PAI vtable) közvetett hívások bonyolult mechanizmusát.
- A platformokra jellemző összes műveletet külön fejlécre helyezték a karbantartás és bővítés egyszerűsítése érdekében.
- Egyszerűsítették a mallctl parancsok ütemezését, valamint átdolgozták a statisztika generálásának és kiírásának infrastruktúráját.
- Hozzáadódott az EXTENT_ALLOC_FLAG_PINNED zászló, amely lehetővé teszi a memóriatérkép nem kiszorítható részeinek, például HugeTLB oldalak megjelölését, prioritásuk újrahasználására. A rögzített memória használatáról szóló statisztikákhoz új mallctl interfészek kerültek: stats.pinned, stats.arenas.<i>.pinned, stats.arenas.<i>.extents.<j>.npinned, stats.arenas.<i>.extents..pinned_bytes és stats.arenas.<i>.mutexes.extents_pinned.{counter}.
- A malloc statisztikai tartalma szinkronizálva lett olvasható és JSON formátumban.
- Eltávolították az elavult paramétereket lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large, tcache_gc_delay_bytes, lg_tcache_flush_small_div, és lg_tcache_flush_large_div.
Forrás: opennet.ru
