Home

Awesome

<img src="https://github.com/user-attachments/assets/46a5c546-7e9b-42c7-87f4-bc8defe674e0" width=250 />

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