Po prawie czterech latach przerwy (zob. „jemalloc wszystko”) został wydany w wersji 5.3.1 alokatora jemalloc – implementacji malloc(3), która szczególną uwagę poświęca zapobieganiu fragmentacji i wsparciu skalowalnej równoległości.
Nowa wersja obejmuje ponad 390 commitów z poprawkami błędów, nowymi funkcjami, optymalizacjami wydajności i poprawą przenośności.
Projekt napisany jest w języku C i jest rozpowszechniany na licencji BSD.
Nowe funkcje:
- wsparcie dla pvalloc(3).
- wykrywanie podwójnego zwolnienia pamięci w wersji debugowej;
- dodano opcję kompilacji —enable-pageid w celu włączenia adnotacji mapowanej pamięci.
- dodano parametr runtime prof_bt_max do zarządzania maksymalną głębokością stosu do profilowania;
- dodano opcję kompilacji —enable-force-getenv, aby używać getenv zamiast secure_getenv;
- dodano opcję kompilacji —disable-dss, aby wyłączyć użycie sbrk(2);
- dodano opcję kompilacji tcache_ncached_max do zarządzania liczbą elementów w pamięci podręcznej wątków.
- dodano parametr runtime calloc_madvise_threshold do określenia, czy używane jest jądro czy memset do zerowania przydzielonych bloków pamięci podczas wywołania calloc;
- dodano opcję kompilacji —disable-user-config, aby wyłączyć odczyt w czasie rzeczywistym konfiguracji z pliku /etc/malloc.conf lub z zmiennej środowiskowej MALLOC_CONF;
- dodano parametr runtime disable_large_size_classes, aby zapewnić działanie nowego algorytmu obliczania dostępnego rozmiaru, który minimalizuje narzuty na pamięć przy przydzielaniu dużych bloków pamięci większych niż 4 * PAGE;
- włączono użycie process_madvise i dodano parametr runtime process_madvise_max_batch do zarządzania maksymalną liczbą obszarów pamięci w każdej 'partii' madvise;
- dodano interfejsy mallctl:
- opt.prof_bt_max;
- arena..name do zmiany i uzyskiwania nazw 'areny';
- thread.tcache.max do zmiany i uzyskiwania tcache_max bieżącego wątku;
- thread.tcache.ncached_max.write i thread.tcache.ncached_max.read_sizeclass do zmiany i uzyskiwania ncached_max bieżącego wątku;
- arenas.hugepage do zwracania używanego rozmiaru hugepage, również eksportowany do statystyk malloc;
- approximate_stats.active do uzyskania przybliżonej wartości bieżącej objętości aktywnych bajtów, której nie należy porównywać z innymi pozyskanymi danymi statystycznymi.
- naprawiono także wiele błędów i poprawiono dokumentację.
Źródło: linux.org.ru
