Nach fast vierjĂ€hriger Pause (siehe âjemalloc allesâ) wurde die Version 5.3.1 des Allocators veröffentlicht jemalloc â einer Implementierung von malloc(3), die besonderen Wert auf die Vermeidung von Fragmentierung und UnterstĂŒtzung skalierbarer ParallelitĂ€t legt.
Die neue Version umfasst ĂŒ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.
Neue Funktionen:
- UnterstĂŒtzung von pvalloc(3).
- Erkennung von doppelter Speicherfreigabe in der Debug-Build;
- Eine Kompilierungsoption âenable-pageid wurde hinzugefĂŒgt, um die Annotation von zugewiesenem Speicher zu aktivieren.
- Ein Laufzeiteinstellung prof_bt_max wurde hinzugefĂŒgt, um die maximale Tiefe des Profilerstellungs-Stacks zu steuern;
- Eine Kompilierungsoption âenable-force-getenv wurde hinzugefĂŒgt, um getenv statt secure_getenv zu verwenden;
- Eine Kompilierungsoption âdisable-dss wurde hinzugefĂŒgt, um die Verwendung von sbrk(2) zu deaktivieren;
- Eine Kompilierungsoption tcache_ncached_max wurde hinzugefĂŒgt, um die Anzahl der Elemente im Thread-Cache zu steuern.
- Ein Laufzeiteinstellung calloc_madvise_threshold wurde hinzugefĂŒgt, um festzustellen, ob das Kernel oder memset zur Nullsetzung von zugewiesenen Speicherblöcken bei einem Aufruf von calloc verwendet wird;
- Eine Kompilierungsoption âdisable-user-config wurde hinzugefĂŒgt, um das Lesen von Konfigurationen zur Laufzeit aus der Datei /etc/malloc.conf oder aus der Umgebungsvariablen MALLOC_CONF zu deaktivieren;
- Eine Laufzeiteinstellung disable_large_size_classes wurde hinzugefĂŒgt, um den Betrieb des neuen Algorithmus zur Berechnung der verfĂŒgbaren GröĂe zu gewĂ€hrleisten, der den Speicheraufwand bei der Zuweisung groĂer Speicherblöcke, d. h. mit einer GröĂe >= 4 * PAGE, minimiert;
- Die Verwendung von process_madvise wurde aktiviert und eine Laufzeiteinstellung process_madvise_max_batch hinzugefĂŒgt, um die maximale Anzahl von Speicherbereichen in jedem âBatchâ madvise zu steuern;
- Die mallctl-Schnittstellen wurden hinzugefĂŒgt:
- opt.prof_bt_max;
- arena.<i>.name zum Ăndern und Abrufen der Namen der âArenenâ;
- thread.tcache.max zum Ăndern und Abrufen von tcache_max des aktuellen Threads;
- thread.tcache.ncached_max.write und thread.tcache.ncached_max.read_sizeclass zum Ăndern und Abrufen von ncached_max des aktuellen Threads;
- arenas.hugepage zur RĂŒckgabe der verwendeten GröĂe der hugepage, auch in die malloc-Statistik exportierend;
- approximate_stats.active zur Abfrage eines ungefÀhren Werts des aktuellen Volumens aktiver Bytes, der nicht mit anderen erhaltenen Statistiken verglichen werden sollte.
- Es wurden auch viele Fehler behoben und die Dokumentation verbessert.
Quelle: linux.org.ru
