jemalloc 확장
jemalloc 확장 (jemalloc Extension)
jemalloc 확장은 시스템의 메모리 할당자를 jemalloc으로 교체해 주는 확장이에요. 다른 DuckDB 확장과 달리 jemalloc 확장은 정적으로 링크되어 있어서 실행 중에 설치하거나 로드할 수 없다는 점을 기억해 두세요.
출처: 문서
본문
운영체제 지원 (Operating System Support)
jemalloc 확장의 사용 가능 여부는 운영체제에 따라 달라져요.
Linux
Linux 배포판의 DuckDB에는 jemalloc 확장이 포함되어 있어요. jemalloc 확장을 비활성화하려면 소스에서 DuckDB를 빌드하고 다음과 같이 SKIP_EXTENSIONS 플래그를 설정하면 돼요.
GEN=ninja SKIP_EXTENSIONS="jemalloc" make
macOS
macOS 버전의 DuckDB에는 jemalloc 확장이 포함되어 있지 않지만, 소스에서 빌드해서 포함시킬 수 있어요.
GEN=ninja BUILD_JEMALLOC=1 make
Windows
Windows에서는 이 확장을 사용할 수 없어요.
설정 (Configuration)
환경 변수 (Environment Variables)
DuckDB의 jemalloc 할당자는 DUCKDB_JE_MALLOC_CONF 환경 변수로 설정할 수 있어요. 이 값을 설정하는 것은 jemalloc의 MALLOC_CONF 환경 변수를 설정하는 것과 동일해요. 다만 DuckDB는 다른 애플리케이션과의 이름 충돌을 피하기 위해 다른 환경 변수 이름을 사용해요.
백그라운드 스레드 (Background Threads)
기본적으로 jemalloc의 백그라운드 스레드는 비활성화되어 있어요. 활성화하려면 다음 설정 옵션을 사용해요.
SET allocator_background_threads = true;
백그라운드 스레드는 대기 중인 할당을 비동기적으로 정리해서, 포그라운드 스레드가 이를 동기적으로 처리하지 않아도 되게 해 줘요. 이 덕분에 할당 성능이 향상되며, 특히 멀티코어 CPU에서 할당이 많은 워크로드에서 그 차이가 확실히 드러나요.