Nach einer Pause von fast vier Jahren (siehe "jemalloc alles») Die Veröffentlichung von Version 5.3.1 des Allokators erfolgte jemalloc â eine Implementierung von malloc(3), die den Schwerpunkt auf die Vermeidung von Fragmentierung und die UnterstĂŒtzung skalierbarer ParallelitĂ€t legt.
Die neue Version enthĂ€lt ĂŒber 390 Commits mit Fehlerbehebungen, neuen Funktionen, Leistungsoptimierungen und Verbesserungen der PortabilitĂ€t.
Das Projekt ist in C geschrieben und wird unter der BSD-Lizenz vertrieben.
Neuheiten:
- pvalloc(3)-UnterstĂŒtzung.
- Doppelte Freigabe im Debug-Build erkannt;
- Die Kompilierungsoption --enable-pageid wurde hinzugefĂŒgt, um speicherabgebildete Annotationen zu aktivieren.
- Der Laufzeitparameter prof_bt_max wurde hinzugefĂŒgt, um die maximale Stapeltiefe fĂŒr das Profiling zu steuern;
- Die Kompilierungsoption --enable-force-getenv wurde hinzugefĂŒgt, um getenv anstelle von secure_getenv zu verwenden;
- Die Kompilierungsoption --disable-dss wurde hinzugefĂŒgt, um die Verwendung von sbrk(2) zu deaktivieren;
- Die Compileroption tcache_ncached_max wurde hinzugefĂŒgt, um die Anzahl der Elemente im Thread-Cache zu steuern.
- Der Laufzeitparameter calloc_madvise_threshold wurde hinzugefĂŒgt, um festzulegen, ob der Kernel oder memset verwendet wird, um zugewiesene Speicherblöcke beim Aufruf von calloc auf Null zu setzen;
- Die Kompilierzeitoption --disable-user-config wurde hinzugefĂŒgt, um das Lesen von Konfigurationen aus der Datei /etc/malloc.conf oder aus der Umgebungsvariablen MALLOC_CONF zur Laufzeit zu deaktivieren.
- Der Laufzeitparameter disable_large_size_classes wurde hinzugefĂŒgt, um den neuen Algorithmus zur Berechnung der verfĂŒgbaren GröĂe zu aktivieren, der den Speicheraufwand bei der Zuweisung groĂer Speicherblöcke minimiert, d. h. mit einer GröĂe >= 4 * PAGE;
- Die Verwendung von process_madvise wurde aktiviert und der Laufzeitparameter process_madvise_max_batch hinzugefĂŒgt, um die maximale Anzahl von Speicherbereichen in jedem madvise-"Batch" zu steuern;
- mallctl-Schnittstellen hinzugefĂŒgt:
- opt.prof_bt_max;
- arena.
- thread.tcache.max Àndern und den tcache_max des aktuellen Threads abrufen;
- thread.tcache.ncached_max.write und thread.tcache.ncached_max.read_sizeclass Àndern und den ncached_max des aktuellen Threads abrufen;
- arenas.hugepage gibt die verwendete Hugepage-GröĂe zurĂŒck, die auch in malloc stats exportiert wird;
- approximate_stats.active liefert einen NĂ€herungswert fĂŒr die aktuelle Anzahl aktiver Bytes, der nicht mit anderen abgerufenen Statistiken verglichen werden sollte.
- Zahlreiche Fehler wurden behoben und die Dokumentation verbessert.
Source: linux.org.ru
