După aproape patru ani de pauză (vezi „jemalloc a lansat”) versiunea 5.3.1 a alocatorului jemalloc – implementarea malloc(3), care se concentrează pe prevenirea fragmentării și sprijinirea paralelelor scalabile.
Noua versiune include peste 390 de commituri cu corecții de erori, funcții noi, optimizări de performanță și îmbunătățiri ale portabilității.
Proiectul este scris în limbajul C și este distribuit sub licența BSD.
Funcționalități noi:
- suport pentru pvalloc(3).
- detectarea eliberării duble a memoriei în versiunea de debug;
- a fost adăugată opțiunea de compilare —enable-pageid pentru a activa adnotarea memoriei afișate.
- a fost adăugat parametru de runtime prof_bt_max pentru a controla adâncimea maximă a stivei pentru profilare;
- a fost adăugată opțiunea de compilare —enable-force-getenv pentru a utiliza getenv în loc de secure_getenv;
- a fost adăugată opțiunea de compilare —disable-dss pentru a dezactiva utilizarea sbrk(2);
- a fost adăugată opțiunea de compilare tcache_ncached_max pentru a controla numărul de elemente din cache-ul firului.
- a fost adăugat parametru de runtime calloc_madvise_threshold pentru a determina dacă se folosește kernel sau memset pentru a reseta blocurile de memorie alocate la apelul calloc;
- a fost adăugată opțiunea de compilare —disable-user-config pentru a dezactiva citirea configurațiilor în timpul execuției din fișierul /etc/malloc.conf sau din variabila de mediu MALLOC_CONF;
- a fost adăugat parametru de runtime disable_large_size_classes pentru a asigura funcționarea noului algoritm de calculare a dimensiunii disponibile, care minimizează cheltuielile de memorie la alocarea blocurilor mari de memorie, adică cu dimensiunea >= 4 * PAGE;
- a fost inclus utilizarea process_madvise și a fost adăugat parametru de runtime process_madvise_max_batch pentru a controla numărul maxim de regiuni de memorie în fiecare „lot” madvise;
- au fost adăugate interfețele mallctl:
- opt.prof_bt_max;
- arena..name pentru a modifica și obține numele „arenelor”;
- thread.tcache.max pentru a modifica și obține tcache_max al firului curent;
- thread.tcache.ncached_max.write și thread.tcache.ncached_max.read_sizeclass pentru a modifica și obține ncached_max al firului curent;
- arenas.hugepage pentru a returna dimensiunea folosită de hugepage, de asemenea exportată în statisticile malloc;
- approximate_stats.active pentru a obține o valoare aproximativă a volumului activ curent de bytes, care nu trebuie comparată cu alte date statistice obținute.
- de asemenea, au fost corectate multe erori și a fost îmbunătățită documentația.
Sursa: linux.org.ru
