Dostępna jest biblioteka zarządzania pamięcią jemalloc 5.3.1

Po czterech latach od publikacji ostatniej aktualizacji dostępna jest wersja biblioteki zarządzania pamięcią jemalloc 5.3.1, oferująca alternatywną implementację funkcji malloc, zoptymalizowaną pod kątem redukcji fragmentacji i działania na systemach wieloprocesorowych. Aby rozwiązać problemy z blokadami na systemach wielordzeniowych, w jemalloc dla każdego rdzenia CPU używana jest własna izolowana strefa przydzielania pamięci, co pozwala na osiągnięcie liniowej skalowalności wraz ze wzrostem liczby wątków.

W czerwcu 2025 roku autor projektu zaprzestał wsparcia i przeniósł repozytorium jemalloc w tryb archiwalny, ale miesiąc temu rozwój wznowiła firma Meta, która stosuje jemalloc w swojej infrastrukturze. Biblioteka została pierwotnie zaprojektowana dla FreeBSD i jest używana w tym systemie domyślnie od 2005 roku. Kod biblioteki napisany jest w języku C i jest rozpowszechniany na licencji BSD.

Wśród zmian:

  • Zrealizowano funkcję pvalloc, która może być przydatna przy zamianie alokatora pamięci libc.
  • W wersjach debugowych włączony jest tryb wykrywania podwójnego wywołania funkcji free(). Do ustawienia rozmiaru stosu, w ramach którego odbywa się skanowanie, dodano parametr debug_double_free_max_scan.
  • Dodano opcję kompilacji „—enable-pageid” do ustawiania tagów podczas mapowania pamięci, wykorzystując prctl z flagą PR_SET_VMA. Po włączeniu, mapowanie można śledzić przez /proc//maps.
  • Dodano parametr „prof_bt_max”, co pozwala ustawić maksymalną głębokość stosu do profilowania.
  • Dodano opcję kompilacji „—enable-force-getenv” do wykorzystania w kodzie zwykłej funkcji getenv() zamiast zabezpieczonej secure_getenv().
  • Dodano opcję kompilacji „—disable-dss” do wyłączenia używania funkcji sbrk().
  • Dodano parametr „tcache_ncached_max” do ograniczenia liczby elementów w pamięci podręcznej wątków.
  • Dodano parametr „calloc_madvise_threshold” do konfiguracji użycia mechanizmu jądra madvise lub funkcji memset do zerowania pamięci przydzielanej przez funkcję calloc.
  • Dodano opcję kompilacji „—disable-user-config” do wyłączenia ładowania ustawień z pliku /etc/malloc.conf lub zmiennej środowiskowej MALLOC_CONF.
  • Dodano parametr „process_madvise_max_batch” do ograniczenia liczby bloków pamięci dla każdej operacji wsadowej madvise.
  • Dodano parametry „disable_large_size_classes”, umożliwiający wyłączenie nowego algorytmu obliczania rozmiaru przydzielanej pamięci, co zmniejsza koszty przydzielania bloków o rozmiarze większym niż 4 strony pamięci.
  • Do narzędzia mallctl dodano opcje: opt.prof_bt_max, arena.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage i approximate_stats.active.

Źródło: opennet.ru

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