jemalloc-Erweiterung
Die jemalloc-Erweiterung ersetzt den Speicherallokator des Systems durch jemalloc.
Im Gegensatz zu anderen DuckDB-Erweiterungen ist die jemalloc-Erweiterung statisch gelinkt und kann zur Laufzeit nicht installiert oder geladen werden.
Betriebssystemunterstützung
Die Verfügbarkeit der jemalloc-Erweiterung hängt vom Betriebssystem ab.
Linux
Linux-Distributionen von DuckDB werden mit der jemalloc-Erweiterung ausgeliefert.
Um die jemalloc-Erweiterung 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 wird nicht mit der jemalloc-Erweiterung ausgeliefert, kann aber aus dem Quellcode gebaut werden, um sie 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 MALLOC_CONF-Umgebungsvariable 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 dies nicht synchron durch die Vordergrund-Threads erfolgen muss. Das verbessert die Allokationsleistung und sollte bei allokationslastigen Workloads spürbar sein, insbesondere auf CPUs mit vielen Kernen.