DuckDB pprof Extension

December 11, 2024 · View on GitHub

DuckDB pprof Extension

This experimental extension adds pprof profiling and export features to DuckDB

Build

make configure
make debug

Test

D LOAD './build/debug/quack_pprof.duckdb_extension';
D SELECT * FROM trace_start();
┌──────────────────────────────────────────────────┐
status
varchar
├──────────────────────────────────────────────────┤
│ Profiling started with signal-safe configuration
└──────────────────────────────────────────────────┘

--- Perform some actions...
D SELECT version();
┌─────────────┐
"version"() │
varchar
├─────────────┤
v1.1.3
└─────────────┘

--- Check for results
D SELECT * FROM trace_results();
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                  stack_trace                                                                  │
varchar
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ FRAME: backtrace::backtrace::libunwind::trace -> backtrace::backtrace::trace_unsynchronized -> FRAME: <pprof::backtrace::backtrace_rs::Trac…  │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

--- Dump to pprof protobuf file
D SELECT * FROM trace_stop('duckdb.pprof');
┌───────────────────────────────┐
status
varchar
├───────────────────────────────┤
Profile saved to duckdb.pprof
└───────────────────────────────┘

Output

image