Megjelent a jemalloc memóriakezelő könyvtár 5.4.0-s kiadása. A malloc függvények egy alternatív implementációját kínálja, amely a fragmentáció csökkentésére és a többprocesszoros rendszereken való futtatásra van optimalizálva. A többmagos rendszerek zárolási problémáinak megoldására a jemalloc minden CPU-maghoz saját, izolált memória-allokációs területet használ, lehetővé téve a lineáris skálázhatóságot a szálak számának növekedésével.
2025 júniusában a projekt szerzője leállította a karbantartást és archiválási módba helyezte a jemalloc repositoryt, de idén márciusban a Meta folytatta a fejlesztést, amely infrastruktúrájában a jemalloc-ot használja. A könyvtárat eredetileg FreeBSD-re fejlesztették, és 2005 óta alapértelmezetten ezen az operációs rendszeren használják. A könyvtár kódja C nyelven íródott és BSD licenc alatt kerül terjesztésre.
A változások között:
- A tcache (Thread Local Cache) feltöltésének és törlésének, valamint a memória-allokáció diszpécserének logikája egyszerűsödött.
- A Page Allocator Classic (PAC) és a HPA (Huge Page Allocator) memórialap-foglalókat egységesítették. A vtable-en (PAI vtable) keresztüli közvetett hívások összetett mechanizmusát eltávolították.
- A karbantartás és a platformbővítés egyszerűsítése érdekében minden platformfüggő művelet külön header fájlokba kerül áthelyezésre.
- A mallctl parancsok kiosztása egyszerűsödött, és a statisztikák generálására és megjelenítésére szolgáló infrastruktúrát újratervezték.
- Hozzáadtuk az EXTENT_ALLOC_FLAG_PINNED jelzőt, amely lehetővé teszi a nem előzetesen felhasználható memória-leképezési régiók, például a HugeTLB oldalak megjelölését prioritási újrafelhasználásra. Új mallctl interfészek kerültek hozzáadásra a rögzített memóriahasználati statisztikák lekéréséhez: stats.pinned, stats.arenas..pinned
- Szinkronizált malloc statisztikai tartalom ember által olvasható és JSON formátumban.
- Eltávolítottam az elavult 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 paramétereket.
Forrás: opennet.ru
