Browse Source

benchmark: Support names in http-flamegraph

v0.9.4-release
isaacs 12 years ago
parent
commit
79ec9dc1dd
  1. 12
      benchmark/http-flamegraph.sh

12
benchmark/http-flamegraph.sh

@ -3,6 +3,8 @@ cd "$(dirname "$(dirname $0)")"
node=${NODE:-./node} node=${NODE:-./node}
name=${NAME:-stacks}
if type sysctl &>/dev/null; then if type sysctl &>/dev/null; then
sudo sysctl -w net.inet.ip.portrange.first=12000 sudo sysctl -w net.inet.ip.portrange.first=12000
sudo sysctl -w net.inet.tcp.msl=1000 sudo sysctl -w net.inet.tcp.msl=1000
@ -18,7 +20,7 @@ sleep 1
# has to stay alive until dtrace exits # has to stay alive until dtrace exits
dtrace -n 'profile-97/pid == '$nodepid' && arg1/{ @[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' \ dtrace -n 'profile-97/pid == '$nodepid' && arg1/{ @[jstack(150, 8000)] = count(); } tick-60s { exit(0); }' \
| grep -v _ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinA \ | grep -v _ZN2v88internalL21Builtin_HandleApiCallENS0_12_GLOBAL__N_116BuiltinA \
> stacks.src & > "$name".src &
dtracepid=$! dtracepid=$!
@ -52,8 +54,8 @@ echo 'Pluck off all the stacks that only happen once.'
node -e ' node -e '
var fs = require("fs"); var fs = require("fs");
var data = fs.readFileSync("stacks.src", "utf8").split(/\n/); var data = fs.readFileSync("'"$name"'.src", "utf8").split(/\n/);
var out = fs.createWriteStream("stacks.out"); var out = fs.createWriteStream("'"$name"'.out");
function write(l) { function write(l) {
out.write(l + "\n"); out.write(l + "\n");
} }
@ -83,7 +85,7 @@ for (; i < data.length; i++)
' '
echo 'Turn the stacks into a svg' echo 'Turn the stacks into a svg'
stackvis dtrace flamegraph-svg < stacks.out > stacks.svg stackvis dtrace flamegraph-svg < "$name".out > "$name".svg
echo '' echo ''
echo 'done. Results in stacks.svg' echo 'done. Results in '"$name"'.svg'

Loading…
Cancel
Save