jemalloc 5.3.1

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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster