Skip to content

Commit

Permalink
new(ci): added a perf CI job.
Browse files Browse the repository at this point in the history
Signed-off-by: Federico Di Pierro <[email protected]>
  • Loading branch information
FedeDP committed Jun 14, 2024
1 parent 1572c78 commit a42d9e6
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -341,3 +341,72 @@ jobs:
cd build && emcmake cmake -DUSE_BUNDLED_DEPS=True ../
emmake make -j4
emmake make run-unit-tests -j4
perf-libs-linux-amd64:
runs-on: 'ubuntu-22.04'
steps:
- name: Checkout Libs ⤵️
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0

- name: Install deps ⛓️
run: |
sudo apt update && apt install -y --no-install-recommends perf ca-certificates cmake build-essential git clang llvm pkg-config autoconf automake libtool libelf-dev wget libc-ares-dev libcurl4-openssl-dev libssl-dev libtbb-dev libjq-dev libjsoncpp-dev libgrpc++-dev protobuf-compiler-grpc libgtest-dev libprotobuf-dev linux-headers-amd64
sudo .github/install-deps.sh
- name: Build
run: |
mkdir -p build
cd build && cmake -DUSE_BUNDLED_DEPS=False ../
make unit-test-libsinsp -j4
- name: Run Perf
run: |
cd build
sudo perf record --call-graph dwarf ./libsinsp/test/unit-test-libsinsp
- name: Archive perf report (PR)
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: perf_report
retention-days: 1 # just 1 day because they are big and there can be multiple ones (ie: on each push to the PR)
path: build/perf.data

- name: Archive perf report (master)
if: github.event_name == 'push'
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: perf_report
retention-days: 14 # 14 days because this is the artifact on master; we need to retain it to be able to properly diff it
path: build/perf.data

- name: Download latest master report
if: github.event_name == 'pull_request'
uses: dawidd6/action-download-artifact@v6
with:
workflow: ci.yml
branch: master
event: push
name: perf_report

- name: Diff from master
if: github.event_name == 'pull_request'
run: |
sudo perf diff perf.data build/perf.data -d unit-test-libsinsp -b -o 0 --percentage relative -q &> perf_diff.txt
- name: Archive perf diff
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with:
name: perf_diff
path: perf_diff.txt

- name: Check > 2% threshold
if: github.event_name == 'pull_request'
run: |
awk '{if (substr($2,RSTART+RLENGTH)+0 > 2) print }' perf_diff.txt &> perf_diff_above_thresh.txt
if [ "$(wc -l perf_diff_above_thresh.txt | awk '{print $1}')" -ne "0" ]; then
exit 1
fi

0 comments on commit a42d9e6

Please sign in to comment.