Skip to content

Instantly share code, notes, and snippets.

@jribeiro
Forked from trevnorris/perf-flame-graph-notes.md
Last active August 29, 2015 14:16
Show Gist options
  • Save jribeiro/e3f7541a03d87c52a33d to your computer and use it in GitHub Desktop.
Save jribeiro/e3f7541a03d87c52a33d to your computer and use it in GitHub Desktop.

Revisions

  1. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -10,7 +10,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 libllvm3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils
    apt-get -y install make build-essential linux-tools-common elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 libllvm3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    ln -s /usr/bin/clang-3.6 /usr/bin/clang

  2. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -10,7 +10,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 libllvm3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    ln -s /usr/bin/clang-3.6 /usr/bin/clang

  3. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -12,6 +12,12 @@ apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    ln -s /usr/bin/clang-3.6 /usr/bin/clang

    ln -s /usr/bin/clang++-3.6 /usr/bin/clang++

    ln -s /usr/bin/lldb-3.6 /usr/bin/lldb

    echo 'export CC=clang' > ~/.bash_aliases
    echo 'export CXX=clang++' >> ~/.bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> ~/.bash_aliases
  4. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,10 @@
    #!/bin/bash

    sh /etc/lsb-release

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

    apt-add-repository "deb http://llvm.org/apt/utopic/ llvm-toolchain-utopic main"
    apt-add-repository "deb http://llvm.org/apt/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME} main"

    apt-get update

  5. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -2,6 +2,8 @@

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

    apt-add-repository "deb http://llvm.org/apt/utopic/ llvm-toolchain-utopic main"

    apt-get update

    apt-get -y upgrade
    @@ -47,7 +49,7 @@ rm master.tar.gz

    mv FlameGraph-master FlameGraph

    cd ~/sources
    #cd ~/sources

    #wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.6.tar.gz

  6. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 3 additions and 5 deletions.
    8 changes: 3 additions & 5 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,12 @@
    #!/bin/bash

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

    apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.5 clang-3.5 lldb-3.5 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

    apt-get install clang-3.6 lldb-3.6
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.6 clang-3.6 lldb-3.6 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    echo 'export CC=clang' > ~/.bash_aliases
    echo 'export CXX=clang++' >> ~/.bash_aliases
  7. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,10 @@ apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.5 clang-3.5 lldb-3.5 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key|sudo apt-key add -

    apt-get install clang-3.6 lldb-3.6

    echo 'export CC=clang' > ~/.bash_aliases
    echo 'export CXX=clang++' >> ~/.bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> ~/.bash_aliases
  8. @trevnorris trevnorris revised this gist Oct 30, 2014. 1 changed file with 5 additions and 3 deletions.
    8 changes: 5 additions & 3 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -6,9 +6,11 @@ apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.5 clang-3.5 lldb-3.5 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> .bash_aliases
    echo 'export CC=clang' > ~/.bash_aliases
    echo 'export CXX=clang++' >> ~/.bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> ~/.bash_aliases

    . ~/.bash_aliases

    chmod 777 /usr/share/nginx/html
    ln -s /usr/share/nginx/html www
  9. @trevnorris trevnorris revised this gist Oct 29, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,7 @@ tar xvf v0.11.13.tar.gz

    rm v0.11.13.tar.gz

    mv node-0.11.23 node
    mv node-0.11.13 node

    cd node

  10. @trevnorris trevnorris revised this gist Oct 29, 2014. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -19,11 +19,11 @@ cd sources

    wget https://github.com/joyent/node/archive/v0.11.13.tar.gz

    tar xvf master.tar.gz
    tar xvf v0.11.13.tar.gz

    rm master.tar.gz
    rm v0.11.13.tar.gz

    mv node-master node
    mv node-0.11.23 node

    cd node

  11. @trevnorris trevnorris revised this gist Oct 29, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -27,7 +27,7 @@ mv node-master node

    cd node

    ./configure
    ./configure --gdb

    make

  12. @trevnorris trevnorris revised this gist Oct 29, 2014. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.5 clang-3.5 lldb-3.5 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
    @@ -17,7 +17,7 @@ mkdir sources

    cd sources

    wget https://github.com/joyent/node/archive/master.tar.gz
    wget https://github.com/joyent/node/archive/v0.11.13.tar.gz

    tar xvf master.tar.gz

    @@ -45,12 +45,12 @@ mv FlameGraph-master FlameGraph

    cd ~/sources

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.6.tar.gz
    #wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.6.tar.gz

    tar xvf linux-3.15.6.tar.gz
    #tar xvf linux-3.15.6.tar.gz

    rm linux-3.15.6.tar.gz
    #rm linux-3.15.6.tar.gz

    cd linux-3.15.6/tools/perf/
    #cd linux-3.15.6/tools/perf/

    make -f Makefile.perf install prefix=/usr
    #make -f Makefile.perf install prefix=/usr
  13. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb apache2-utils

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
  14. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx gdb

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
  15. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -10,8 +10,8 @@ echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> .bash_aliases

    chmod 777 /usr/share/nginx/www
    ln -s /usr/share/nginx/www
    chmod 777 /usr/share/nginx/html
    ln -s /usr/share/nginx/html www

    mkdir sources

  16. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,12 +4,15 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux nginx

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> .bash_aliases

    chmod 777 /usr/share/nginx/www
    ln -s /usr/share/nginx/www

    mkdir sources

    cd sources
  17. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git tmux

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
  18. @trevnorris trevnorris revised this gist Jul 18, 2014. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -42,12 +42,12 @@ mv FlameGraph-master FlameGraph

    cd ~/sources

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.2.tar.sign
    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.6.tar.gz

    tar xvf linux-3.13.6.tar.gz
    tar xvf linux-3.15.6.tar.gz

    rm linux-3.13.6.tar.gz
    rm linux-3.15.6.tar.gz

    cd linux-3.13.6/tools/perf/
    cd linux-3.15.6/tools/perf/

    make -f Makefile.perf install prefix=/usr
  19. @trevnorris trevnorris revised this gist May 1, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -42,7 +42,7 @@ mv FlameGraph-master FlameGraph

    cd ~/sources

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.gz
    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.2.tar.sign

    tar xvf linux-3.13.6.tar.gz

  20. @trevnorris trevnorris revised this gist Mar 31, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 git
    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 libgtk2.0-dev libperl-dev python-dev git

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
  21. @trevnorris trevnorris revised this gist Mar 21, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion perf-flame-graph-notes.md
    Original file line number Diff line number Diff line change
    @@ -18,5 +18,5 @@ Alternatives:
    ```
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | v8::Internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    ```
  22. @trevnorris trevnorris revised this gist Mar 21, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion perf-flame-graph-notes.md
    Original file line number Diff line number Diff line change
    @@ -18,5 +18,5 @@ Alternatives:
    ```
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | v8::Internal:: Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | v8::Internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    ```
  23. @trevnorris trevnorris revised this gist Mar 21, 2014. 1 changed file with 8 additions and 1 deletion.
    9 changes: 8 additions & 1 deletion perf-flame-graph-notes.md
    Original file line number Diff line number Diff line change
    @@ -12,4 +12,11 @@ perf script | egrep -v "( __libc_start| LazyCompile | v8::internal::| Builtin:|
    ~/sources/FlameGraph/flamegraph.pl out.perf-folded > node-flame.svg
    ```

    The data munging is to help expose the most important bits. There is still some play that I'm working with, but right now it seems to be working.
    The data munging is to help expose the most important bits. There is still some play that I'm working with, but right now it seems to be working.

    Alternatives:
    ```
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    perf script | egrep -v "( __libc_start|node::Start\(| LazyCompile | v8::Internal:: Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | ../FlameGraph/stackcollapse-perf.pl | grep "uv_run" > out.perf-folded
    ```
  24. @trevnorris trevnorris revised this gist Mar 18, 2014. 1 changed file with 0 additions and 29 deletions.
    29 changes: 0 additions & 29 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -30,35 +30,6 @@ make

    make install

    cd deps/v8/

    make dependencies

    make native

    cd ~/sources/node/tools/wrk

    make

    cd ~/sources

    wget https://github.com/ktap/ktap/archive/master.tar.gz

    tar xvf master.tar.gz

    rm master.tar.gz

    mv ktap-master ktap

    cd ktap

    make

    make install

    # Do this to load as a kernel module
    #make load

    cd ~/sources

    wget https://github.com/brendangregg/FlameGraph/archive/master.tar.gz
  25. @trevnorris trevnorris revised this gist Mar 18, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion perf-flame-graph-notes.md
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,7 @@ sudo sysctl kernel/kptr_restrict=0
    perf record -i -g -e cycles:u -- ~/sources/node/node --perf-basic-prof script.js
    perf script | egrep -v "( __libc_start| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | sed 's/ LazyCompile:[*~]\?/ /' | ./stackcollapse-perf.pl > out.perf-folded
    perf script | egrep -v "( __libc_start| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | sed 's/ LazyCompile:[*~]\?/ /' | ~/sources/FlameGraph/stackcollapse-perf.pl > out.perf-folded
    ~/sources/FlameGraph/flamegraph.pl out.perf-folded > node-flame.svg
    ```
  26. @trevnorris trevnorris created this gist Mar 18, 2014.
    15 changes: 15 additions & 0 deletions perf-flame-graph-notes.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    The `prep-script.sh` will setup the latest Node and install the latest perf version on your Linux box.

    When you want to generate the flame graph, run the following (folder locations taken from install script):

    ```
    sudo sysctl kernel/kptr_restrict=0
    perf record -i -g -e cycles:u -- ~/sources/node/node --perf-basic-prof script.js
    perf script | egrep -v "( __libc_start| LazyCompile | v8::internal::| Builtin:| Stub:| LoadIC:|\[unknown\]| LoadPolymorphicIC:)" | sed 's/ LazyCompile:[*~]\?/ /' | ./stackcollapse-perf.pl > out.perf-folded
    ~/sources/FlameGraph/flamegraph.pl out.perf-folded > node-flame.svg
    ```

    The data munging is to help expose the most important bits. There is still some play that I'm working with, but right now it seems to be working.
    82 changes: 82 additions & 0 deletions prep-script.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,82 @@
    #!/bin/bash

    apt-get update

    apt-get -y upgrade

    apt-get -y install make build-essential elfutils libelf-dev flex bison libunwind8 libunwind8-dev libaudit-dev libdw-dev binutils-dev libnuma-dev libslang2-dev asciidoc llvm-3.4 clang-3.4 subversion libc6-dev-i386 git

    echo 'export CC=clang' > .bash_aliases
    echo 'export CXX=clang++' >> .bash_aliases
    echo 'export GYP_DEFINES="clang=1"' >> .bash_aliases

    mkdir sources

    cd sources

    wget https://github.com/joyent/node/archive/master.tar.gz

    tar xvf master.tar.gz

    rm master.tar.gz

    mv node-master node

    cd node

    ./configure

    make

    make install

    cd deps/v8/

    make dependencies

    make native

    cd ~/sources/node/tools/wrk

    make

    cd ~/sources

    wget https://github.com/ktap/ktap/archive/master.tar.gz

    tar xvf master.tar.gz

    rm master.tar.gz

    mv ktap-master ktap

    cd ktap

    make

    make install

    # Do this to load as a kernel module
    #make load

    cd ~/sources

    wget https://github.com/brendangregg/FlameGraph/archive/master.tar.gz

    tar xvf master.tar.gz

    rm master.tar.gz

    mv FlameGraph-master FlameGraph

    cd ~/sources

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.gz

    tar xvf linux-3.13.6.tar.gz

    rm linux-3.13.6.tar.gz

    cd linux-3.13.6/tools/perf/

    make -f Makefile.perf install prefix=/usr