jemalloc
Die jemalloc-Erweiterung ersetzt den Speicherallokator des Systems durch jemalloc.
Die jemalloc-Erweiterung ist statisch gelinkt und kann zur Laufzeit nicht installiert oder geladen werden.
Aus technischen Gründen haben wir
jemallocfrüher als Erweiterung ausgeliefert. Seit DuckDB v1.5.3 wird es als Drittanbieterbibliothek verteilt.
Betriebssystemunterstützung
Die Verfügbarkeit der jemalloc-Erweiterung hängt vom Betriebssystem ab.
Linux
Linux-Distributionen von DuckDB enthalten jemalloc standardmäßig.
Um jemalloc zu deaktivieren, bauen Sie DuckDB aus dem Quellcode und setzen Sie das Flag SKIP_EXTENSIONS wie folgt:
GEN=ninja SKIP_EXTENSIONS="jemalloc" makemacOS
Die macOS-Version von DuckDB enthält jemalloc nicht, kann aber aus dem Quellcode gebaut werden, um es einzubinden:
GEN=ninja BUILD_JEMALLOC=1 makeWindows
Unter Windows ist diese Erweiterung nicht verfügbar.
Konfiguration
Umgebungsvariablen
Der jemalloc-Allokator in DuckDB kann über die Umgebungsvariable DUCKDB_JE_MALLOC_CONF konfiguriert werden. Das Setzen dieser Variable entspricht dem Setzen der Umgebungsvariable MALLOC_CONF für jemalloc; DuckDB verwendet jedoch einen anderen Variablennamen, um mögliche Namenskollisionen mit anderen Anwendungen zu vermeiden.
Hintergrund-Threads
Standardmäßig sind die Hintergrund-Threads von jemalloc deaktiviert. Um sie zu aktivieren, verwenden Sie die folgende Konfigurationsoption:
SET allocator_background_threads = true;Hintergrund-Threads geben ausstehende Allokationen asynchron frei, sodass das nicht synchron durch die Vordergrund-Threads geschehen muss. Das verbessert die Allokationsleistung und sollte bei allokationslastigen Workloads spürbar sein, insbesondere auf CPUs mit vielen Kernen.