diff options
author | Joe Wilm <joe@jwilm.com> | 2016-10-08 21:30:21 -0700 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2016-10-08 21:30:21 -0700 |
commit | b80abe9a54acaea65c5ed4e676a9fbc8e211fd40 (patch) | |
tree | 3f3080db9549194652012001c36ee4721098bed1 | |
parent | b91c90dc34cfb2a1381f3bc3da85a7c223ac480f (diff) |
Add script for creating flamegraph with perf
Resolves #8
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | scripts/README.md | 20 | ||||
-rwxr-xr-x | scripts/create-flamegraph.sh | 19 | ||||
-rwxr-xr-x | scripts/ubuntu-install-perf.sh | 11 |
4 files changed, 51 insertions, 0 deletions
@@ -1 +1,2 @@ target +FlameGraph diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000..39897c30 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,20 @@ +scripts +======= + +There are two scripts included at the time this README was written, and they +both support flamegraph generation on Ubuntu. The first script installs the +required dependencies: + +```sh +scripts/ubuntu-install-perf.sh +``` + +The second script will run Alacritty while recording call stacks. After the +Alacritty process exits, a flamegraph will be generated and its URI printed. + +```sh +scripts/create-flamegraph.sh +``` + +**NOTE**: The _create-flamegraph.sh_ script is intended to be run from the +alacritty project root. diff --git a/scripts/create-flamegraph.sh b/scripts/create-flamegraph.sh new file mode 100755 index 00000000..8c03aa28 --- /dev/null +++ b/scripts/create-flamegraph.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Make sure FlameGraph scripts are available +if [ ! -e ./FlameGraph ] +then + git clone https://github.com/BrendanGregg/FlameGraph +fi + +if [ ! -e target/release/alacritty ] +then + echo "Must build alacritty first: cargo build --release" + exit 1 +fi + +# This will block while alacritty runs +perf record -g -F 99 target/release/alacritty +perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl --width 1920 > alacritty.svg + +echo "Flame graph created at file://$(pwd)/alacritty.svg" diff --git a/scripts/ubuntu-install-perf.sh b/scripts/ubuntu-install-perf.sh new file mode 100755 index 00000000..85670039 --- /dev/null +++ b/scripts/ubuntu-install-perf.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +set -v + +# Get kernel info +UNAME=$(uname -r) + +# Install linux tools for the perf binary +sudo apt-get install -y \ + linux-tools-common \ + linux-tools-generic \ + linux-tools-$UNAME |