text editor inspired vim and yi
README.md

Scripts

This directory contains perf profiling helpers for the bench executable.

Quick Summary

  • perf_bench_bin.sh: perf record for the bench binary directly (no lake overhead).
  • perf_bench_lake.sh: perf record via lake exe bench (includes lake overhead).
  • perf_profile.sh: heavier profiling (perf and optional c2c) with reports and flamegraph.

Common Output

All scripts write to perf/YYYY-MM-DD/:

  • report/: perf report logs
  • flamegraph/: folded stacks and SVG flamegraphs
  • c2c/: cache-to-cache reports (when enabled)

perf_bench_bin.sh

Purpose: fast perf capture of the bench binary.

Usage examples:

./scripts/perf_bench_bin.sh --iterations 10000 --case linear
./scripts/perf_bench_bin.sh --cases linear,bloom --iterations 20000

Key options:

  • --iterations N
  • --case NAME or --cases NAME,NAME
  • --no-render is passed to the bench by default (override with PERF_BENCH_ARGS).

perf_bench_lake.sh

Purpose: perf capture through lake exe bench (measures lake overhead too).

Usage examples:

./scripts/perf_bench_lake.sh --iterations 10000 --case linear
./scripts/perf_bench_lake.sh --cases linear,bloom --iterations 20000

Key options match perf_bench_bin.sh.

perf_profile.sh

Purpose: heavier profiling (perf report + optional c2c) and flamegraph.

Usage examples:

./scripts/perf_profile.sh 10000
PERF_MODE=both ./scripts/perf_profile.sh 10000
PERF_MODE=c2c ./scripts/perf_profile.sh 10000

Flamegraph Tools

By default, scripts look in:

  • $HOME/.local/bin/FlameGraph

You can override with:

  • FLAMEGRAPH_DIR=/path/to/FlameGraph
  • STACKCOLLAPSE_BIN=/path/to/stackcollapse-perf.pl
  • FLAMEGRAPH_BIN=/path/to/flamegraph.pl

Environment Variables

  • PERF_RESULTS_ROOT: results directory root (default: perf)
  • PERF_RUN_LABEL: label for the run (default: HHMMSS)
  • PERF_BENCH_ARGS: extra args passed to the bench executable
  • PERF_MODE: for perf_profile.sh only (perf, c2c, both)

Notes

  • perf may require elevated permissions depending on your kernel settings.
  • If you see a permissions error, check kernel.perf_event_paranoid.