From cfdc7f4c63b49ffc892d9e6515dd6d48fed244e2 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Thu, 17 Dec 2020 09:23:40 -0700 Subject: [PATCH 1/2] Add nightly benchmark script. This commit adds a script for executing a nightly benchmark and posting the results to Slack. --- scripts/bench.sh | 34 ++++++++++++++++++++++++++++++++++ scripts/etc/gloat/gh.1d.yml | 7 +++++++ 2 files changed, 41 insertions(+) create mode 100644 scripts/bench.sh create mode 100644 scripts/etc/gloat/gh.1d.yml diff --git a/scripts/bench.sh b/scripts/bench.sh new file mode 100644 index 000000000..4414ed530 --- /dev/null +++ b/scripts/bench.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# This script runs benchmarks and posts them to Slack's #nightly channel. +# The caller of the script should `git pull` on the pilosa repo before executing. +# +# Environment variables: +# - PILOSA_SRC: Path to pilosa src directory. +# - SLACK_OAUTH_TOKEN: Token used to post to Slack. + +# Require environment variables. +: "${PILOSA_SRC:?Must set PILOSA_SRC environment variable}" +: "${SLACK_OAUTH_TOKEN:?Must set SLACK_OAUTH_TOKEN environment variable}" + +# Build pilosa into GOBIN. +make -C $PILOSA_SRC install + +# Retrieve current SHA. +SHA=$(git -C $PILOSA_SRC rev-parse HEAD) + +# Format current date. +DATE=$(date '+%Y%m%d') + +# Execute RBF/Roaring benchmark. +RBF_PATH=gloat/data/1d/rbf/${DATE}.tar.gz +TXSRC=rbf gloat run -v -o $RBF_PATH "${BASH_SOURCE%/*}/etc/gloat/gh.1d.yml" + +ROARING_PATH=gloat/data/1d/roaring/${DATE}.tar.gz +TXSRC=roaring gloat run -v -o $ROARING_PATH "${BASH_SOURCE%/*}/etc/gloat/gh.1d.yml" + +# Generate graph from results. +gloat graph -layout 3,2 -size 2048,1024 -name utime,stime,heap_alloc,heap_inuse,heap_objects,num_gc -series rbf,roaring -o /tmp/output.png $RBF_PATH $ROARING_PATH + +# Post graph to Slack with SHA. +curl -F file=@/tmp/output.png -F channels=C01HBFKRLGH -F "initial_comment=RBF vs Roaring, $DATE ($SHA)" -H "Authorization: Bearer $SLACK_OAUTH_TOKEN" https://slack.com/api/files.upload diff --git a/scripts/etc/gloat/gh.1d.yml b/scripts/etc/gloat/gh.1d.yml new file mode 100644 index 000000000..93658c44a --- /dev/null +++ b/scripts/etc/gloat/gh.1d.yml @@ -0,0 +1,7 @@ +name: "GitHub Import Load Testing (1 day)" + +main: "pilosa server --data-dir ${TMPDIR} --txsrc ${TXSRC}" +load: "molecula-consumer-github -i events -d id --record-type event --batch-size=100000 --start-time 2020-01-01T00:00:00Z --end-time 2020-01-01T23:00:00Z --cache-dir .githubarchive" + +health_url: "http://localhost:10101/status" +debug_url: "http://localhost:10101/debug" From d635ece5a932a385a23ccf174da4c21cd6729186 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Fri, 18 Dec 2020 09:33:50 -0700 Subject: [PATCH 2/2] Add workflow name to benchmark --- scripts/bench.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/bench.sh b/scripts/bench.sh index 4414ed530..ae89987d9 100644 --- a/scripts/bench.sh +++ b/scripts/bench.sh @@ -20,15 +20,19 @@ SHA=$(git -C $PILOSA_SRC rev-parse HEAD) # Format current date. DATE=$(date '+%Y%m%d') +WORKFLOW_PATH="${BASH_SOURCE%/*}/etc/gloat/gh.1d.yml" +WORKFLOW_NAME="$(gloat workflow name $WORKFLOW_PATH)" +TITLE="RBF vs Roaring, $WORKFLOW_NAME, $DATE ($SHA)" + # Execute RBF/Roaring benchmark. RBF_PATH=gloat/data/1d/rbf/${DATE}.tar.gz -TXSRC=rbf gloat run -v -o $RBF_PATH "${BASH_SOURCE%/*}/etc/gloat/gh.1d.yml" +TXSRC=rbf gloat run -v -o $RBF_PATH $WORKFLOW_PATH ROARING_PATH=gloat/data/1d/roaring/${DATE}.tar.gz -TXSRC=roaring gloat run -v -o $ROARING_PATH "${BASH_SOURCE%/*}/etc/gloat/gh.1d.yml" +TXSRC=roaring gloat run -v -o $ROARING_PATH $WORKFLOW_PATH # Generate graph from results. -gloat graph -layout 3,2 -size 2048,1024 -name utime,stime,heap_alloc,heap_inuse,heap_objects,num_gc -series rbf,roaring -o /tmp/output.png $RBF_PATH $ROARING_PATH +gloat graph -layout 5,2 -size 2048,2048 -title "$TITLE" -name utime,stime,heap_alloc,heap_inuse,heap_objects,num_gc,rchar,wchar,syscr,syscw -series rbf,roaring -o /tmp/output.png $RBF_PATH $ROARING_PATH # Post graph to Slack with SHA. -curl -F file=@/tmp/output.png -F channels=C01HBFKRLGH -F "initial_comment=RBF vs Roaring, $DATE ($SHA)" -H "Authorization: Bearer $SLACK_OAUTH_TOKEN" https://slack.com/api/files.upload +curl -F file=@/tmp/output.png -F channels=C01HBFKRLGH -F "initial_comment=$TITLE" -H "Authorization: Bearer $SLACK_OAUTH_TOKEN" https://slack.com/api/files.upload