Nakon 4 godine od objavljivanja prethodne nadogradnje, dostupan je izlaz biblioteke za upravljanje memorijom jemalloc 5.3.1, koja nudi alternativnu implementaciju malloc funkcija, optimiziranu za smanjenje fragmentacije i rad na višeprocesorskim sustavima. Kako bi se riješili problemi s blokadama na višekorporacijskim sustavima, jemalloc koristi izoliranu memorijsku dodeljivanu područje za svako jezgro CPU-a, što omogućuje linearno skaliranje s povećanjem broja niti.
U lipnju 2025. godine, autor projekta prestao je održavati jer je preveo jemalloc repozitorij u arhivski mod, ali je prošlog mjeseca razvoj obnovila kompanija Meta, koja primjenjuje jemalloc u svojoj infrastrukturi. Biblioteka je prvotno razvijena za FreeBSD i koristi se u ovom operativnom sustavu po defaultu od 2005. godine. Kod biblioteke je napisan u C-u i distribuira se pod BSD licencom.
Između izmjena:
- Implementirana je funkcija pvalloc, koja može biti korisna prilikom zamjene libc alokatora memorije.
- U dijagnostičkim izgradnjama uključen je način otkrivanja dvostrukog poziva funkcije free(). Za podešavanje veličine stoga, u okviru kojeg se vrši skeniranje, dodan je parametar debug_double_free_max_scan.
- Dodana je opcija za izgradnju «—enable-pageid» za označavanje prilikom mapiranja memorije, koristeći prctl s flagom PR_SET_VMA. Nakon uključivanja, mapiranje se može pratiti kroz /proc//maps.
- Dodana je opcija «prof_bt_max», koja omogućava postavljanje maksimalne dubine stoga za profiliranje.
- Dodana je opcija za izgradnju «—enable-force-getenv» za korištenje u kodu običnih funkcija getenv() umjesto zaštićene secure_getenv().
- Dodana je opcija za izgradnju «—disable-dss» za isključivanje upotrebe funkcije sbrk().
- Dodana je opcija «tcache_ncached_max» za ograničavanje broja elemenata u predmemoriji niti.
- Dodana je opcija «calloc_madvise_threshold» za konfiguriranje upotrebe mehanizma jezgre madvise ili funkcije memset za nulte memorije dodijeljene putem funkcije calloc.
- Dodana je opcija za izgradnju «—disable-user-config» za isključivanje učitavanja postavki iz datoteke /etc/malloc.conf ili varijable okruženja MALLOC_CONF.
- Dodana je opcija «process_madvise_max_batch» za ograničavanje broja blokova memorije za svaku batch-operaciju madvise.
- Dodana opcija „disable_large_size_classes“ za isključivanje novog algoritma za izračunavanje veličine dodijeljene memorije, koji smanjuje troškove pri dodjeli blokova veličine veće od 4 stranice memorije.
- U alat mallctl dodane su opcije: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage i approximate_stats.active.
Izvor: opennet.ru
