După o pauză de aproape patru ani (vezi "jemalloc totul») a avut loc lansarea versiunii 5.3.1 a alocatorului jemalloc – o implementare a malloc(3) care pune accentul pe prevenirea fragmentării și pe suportul pentru concurență scalabilă.
Noua versiune include peste 390 de commit-uri cu corecții de erori, funcții noi, optimizări de performanță și îmbunătățiri ale portabilității.
Proiectul este scris în C și distribuit sub licența BSD.
Caracteristici noi:
- Suport pentru pvalloc(3).
- dublu liber detectat în versiunea de depanare;
- A fost adăugată opțiunea de compilare --enable-pageid pentru a activa adnotarea mapată în memorie.
- A fost adăugat parametrul de execuție prof_bt_max pentru a controla adâncimea maximă a stivei pentru profilare;
- Adăugată opțiunea de compilare --enable-force-getenv pentru a utiliza getenv în loc de secure_getenv;
- 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 memoria cache a thread-urilor.
- A fost adăugat parametrul de execuție calloc_madvise_threshold pentru a determina dacă kernelul sau memset-ul sunt utilizate pentru a aduce la zero blocurile de memorie alocate la apelarea calloc;
- A fost adăugată opțiunea --disable-user-config la compilare pentru a dezactiva citirea configurațiilor din fișierul /etc/malloc.conf sau din variabila de mediu MALLOC_CONF la momentul execuției.
- A fost adăugat parametrul de execuție disable_large_size_classes pentru a activa noul algoritm de calcul al dimensiunii disponibil, care minimizează supraîncărcarea memoriei la alocarea blocurilor mari de memorie, adică cu o dimensiune >= 4 * PAGE;
- A fost activată utilizarea process_madvise și a fost adăugat parametrul de execuție process_madvise_max_batch pentru a controla numărul maxim de regiuni de memorie din fiecare „batch” madvise;
- Interfețele mallctl adăugate:
- opt.prof_bt_max;
- arena.
- thread.tcache.max pentru a modifica și obține tcache_max-ul firului de execuție curent;
- thread.tcache.ncached_max.write și thread.tcache.ncached_max.read_sizeclass pentru a modifica și obține ncached_max-ul firului de execuție curent;
- arenas.hugepage pentru a returna dimensiunea paginii uriașe utilizată, exportată și în malloc stats;
- approximate_stats.active pentru a obține o valoare aproximativă a numărului curent de octeți activi, care nu ar trebui comparată cu alte statistici preluate.
- De asemenea, au fost corectate multe erori, iar documentația a fost îmbunătățită.
Sursa: linux.org.ru
