Négy évvel a legutóbbi frissítés közzététele után megjelent a jemalloc 5.3.1 memória kezelő könyvtár, 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 többprocesszoros rendszerek működésére. A többmagos rendszerek blokkolási problémáinak megoldására a jemalloc minden CPU mag számára külön izolált memóriaelosztó területet használ, így lineárisan skálázható a szálak számának növekedésével.
2025 júniusában a projekt szerzője leállította a támogatást és archiválta a jemalloc repository-t, de egy hónappal ezelőtt a Meta cég, amely jemalloc-t használ az infrastruktúrájában, újraindította a fejlesztést. A könyvtárat eredetileg a FreeBSD számára fejlesztették ki, és a 2005 óta alapértelmezettként használják ezen az operációs rendszeren. A könyvtár kódja C nyelven íródott, és BSD licenc alatt kerül forgalmazásra.
A változtatások közül:
- A pvalloc funkció implementálva lett, amely hasznos lehet a libc memóriaallokátor lecseréléséhez.
- A hibakeresési build-ekben hozzá lett adva a dupla free() hívás észlelésének módja. A vizsgálat során használható verem méretének beállításához be lett vezetve a debug_double_free_max_scan paraméter.
- Hozzáadva a —enable-pageid build opció a memória leképezésnél a prctl PR_SET_VMA flag használatával történő címkék beállításához. A bekapcsolás után a leképezés követhető lesz a /proc//maps alatt.
- Hozzáadva a prof_bt_max paraméter, amely lehetővé teszi a maximális veremmélység beállítását a profilozáshoz.
- Hozzáadva a —enable-force-getenv build opció, amely lehetővé teszi a hagyományos getenv() funkció használatát a védett secure_getenv() helyett.
- Hozzáadva a —disable-dss build opció az sbrk() funkció használatának letiltásához.
- Hozzáadva a tcache_ncached_max paraméter a szálak cache-jében tárolt elemek számának korlátozásához.
- Hozzáadva a calloc_madvise_threshold paraméter a madvise rendszerszintű mechanizmus vagy a memset funkció használatának bekapcsolásához a calloc függvényen keresztül lefoglalt memória nullázásához.
- Hozzáadva a —disable-user-config build opció a /etc/malloc.conf fájlból vagy a MALLOC_CONF környezeti változóból származó beállítások betöltésének letiltásához.
- Hozzáadva a process_madvise_max_batch paraméter a madvise batch műveletekhez felhasznált memória blokkok számának korlátozásához.
- Hozzáadva a "disable_large_size_classes" paraméter a nagyobb, több mint 4 oldalas memória blokkok allokálásához szükséges költségek csökkentésére optimalizáló új algoritmus kikapcsolásához.
- A mallctl segédprogramhoz új opciók kerültek bevezettek: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage és approximate_stats.active.
Forrás: opennet.ru
