Po prawie czteroletniej przerwie (zobacz "jemalloc wszystko») nastąpiło wydanie wersji 5.3.1 alokatora jemallok – implementacja malloc(3) kładąca nacisk na zapobieganie fragmentacji i obsługę skalowalnej współbieżności.
Nowa wersja obejmuje ponad 390 zmian, w tym poprawki błędów, nowe funkcje, optymalizacje wydajności i ulepszenia przenośności.
Projekt został napisany w języku C i rozpowszechniany na licencji BSD.
Nowe funkcje:
- Wsparcie dla pvalloc(3).
- wykryto podwójne zwolnienie podczas kompilacji debugowej;
- Dodano opcję kompilacji --enable-pageid umożliwiającą włączenie adnotacji mapowanych w pamięci.
- Dodano parametr czasu wykonania prof_bt_max w celu kontrolowania maksymalnej głębokości stosu na potrzeby profilowania;
- Dodano opcję kompilacji --enable-force-getenv w celu użycia getenv zamiast secure_getenv;
- Dodano opcję kompilacji --disable-dss w celu wyłączenia użycia sbrk(2);
- Dodano opcję kompilacji tcache_ncached_max w celu kontrolowania liczby elementów w pamięci podręcznej wątku.
- Dodano parametr czasu wykonania calloc_madvise_threshold w celu ustalenia, czy do zerowania przydzielonych bloków pamięci podczas wywoływania calloc używane jest jądro czy memset;
- Dodano opcję kompilacji --disable-user-config, która umożliwia wyłączenie odczytywania konfiguracji z pliku /etc/malloc.conf lub ze zmiennej środowiskowej MALLOC_CONF w czasie wykonywania.
- Dodano parametr środowiska wykonawczego disable_large_size_classes, aby włączyć nowy dostępny algorytm obliczania rozmiaru, który minimalizuje obciążenie pamięci podczas przydzielania dużych bloków pamięci, tj. o rozmiarze >= 4 * STRONA;
- Włączono użycie process_madvise i dodano parametr środowiska wykonawczego process_madvise_max_batch w celu kontrolowania maksymalnej liczby obszarów pamięci w każdym „partii” madvise;
- Dodano interfejsy mallctl:
- opt.prof_bt_max;
- arena.
- thread.tcache.max, aby zmienić i pobrać tcache_max bieżącego wątku;
- thread.tcache.ncached_max.write i thread.tcache.ncached_max.read_sizeclass do zmiany i pobrania ncached_max bieżącego wątku;
- arenas.hugepage zwraca użyty rozmiar hugepage, eksportowany również do malloc stats;
- approx_stats.active, aby uzyskać przybliżoną wartość bieżącej liczby aktywnych bajtów. Nie należy jej porównywać z innymi pobranymi statystykami.
- Naprawiono wiele błędów i poprawiono dokumentację.
Źródło: linux.org.ru
