#!/bin/bash # Notes for fixing this script if it's broken: # - if you see an error about "can't find perf_6.1" you need to install `linux-perf` from the # version of Debian that matches the host (e.g. apt-get -t bookworm-backports install linux-perf) # - if you see an error about `addr2line` you may need to install binutils set -euo pipefail source script/lib/deploy-helpers.sh if [[ $# != 1 ]]; then echo "Usage: $0 " exit 1 fi environment=$1 target_zed_kube_cluster # 5s in production is ~200Mb..., in staging you probably want to bump this up. echo "Running perf on collab, collecting 5s of data..." kubectl -n $environment exec -it deployments/collab -- perf record -p 1 -g -m 64 --call-graph dwarf -- sleep 5 run="collab-$environment-$(date -Iseconds)" echo "Processing data and downloading to '$run.perf'..." kubectl -n $environment exec -it deployments/collab -- perf --no-pager script > "$run.perf" which inferno-flamegraph 2>/dev/null || (echo "installing inferno..."; cargo install inferno) inferno-collapse-perf "$run.perf" | inferno-flamegraph > "$run.svg" open "./$run.svg"