about summary refs log tree commit diff
path: root/tools/perf-flamegraph.nix
blob: b472b746ff14bd8dcee9f6e540886443145f0652 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
# Script that collects perf timing for the execution of a command and writes a
# flamegraph to stdout
{ pkgs, ... }:

pkgs.writeShellScriptBin "perf-flamegraph" ''
  set -euo pipefail

  ${pkgs.linuxPackages.perf}/bin/perf record -g --call-graph dwarf -F max "$@"
  ${pkgs.linuxPackages.perf}/bin/perf script \
    | ${pkgs.flamegraph}/bin/stackcollapse-perf.pl \
    | ${pkgs.flamegraph}/bin/flamegraph.pl
''