diff --git a/.github/workflows/performance_benchmarks.yaml b/.github/workflows/performance_benchmarks.yaml new file mode 100644 index 000000000..bccd0207d --- /dev/null +++ b/.github/workflows/performance_benchmarks.yaml @@ -0,0 +1,77 @@ +name: Run performance benchmarks manually + +on: + workflow_dispatch: + +jobs: + performance_benchmarks: + name: "Performance benchmarks" + runs-on: [self-hosted, Linux, X64, Diff, Gen7] + env: + THREADS: 24 + MEMGRAPH_ENTERPRISE_LICENSE: ${{ secrets.MEMGRAPH_ENTERPRISE_LICENSE }} + MEMGRAPH_ORGANIZATION_NAME: ${{ secrets.MEMGRAPH_ORGANIZATION_NAME }} + + steps: + - name: Set up repository + uses: actions/checkout@v3 + with: + # Number of commits to fetch. `0` indicates all history for all + # branches and tags. (default: 1) + fetch-depth: 0 + + - name: Build release binaries + run: | + # Activate toolchain. + source /opt/toolchain-v4/activate + + # Initialize dependencies. + ./init + + # Build only memgraph release binaries. + cd build + cmake -DCMAKE_BUILD_TYPE=Release .. + make -j$THREADS + + - name: Get branch name (merge) + if: github.event_name != 'pull_request' + shell: bash + run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV + + - name: Get branch name (pull request) + if: github.event_name == 'pull_request' + shell: bash + run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF} | tr / -)" >> $GITHUB_ENV + + - name: Run benchmarks + run: | + cd tests/mgbench + ./benchmark.py vendor-native --num-workers-for-benchmark 12 --export-results benchmark_result.json pokec/medium/*/* + + ./benchmark.py vendor-native --num-workers-for-benchmark 1 --export-results benchmark_supernode.json supernode + + ./benchmark.py vendor-native --num-workers-for-benchmark 1 --export-results benchmark_high_write_set_property.json high_write_set_property + + - name: Upload benchmark results + run: | + cd tools/bench-graph-client + virtualenv -p python3 ve3 + source ve3/bin/activate + pip install -r requirements.txt + ./main.py --benchmark-name "mgbench" \ + --benchmark-results-path "../../tests/mgbench/benchmark_result.json" \ + --github-run-id "${{ github.run_id }}" \ + --github-run-number "${{ github.run_number }}" \ + --head-branch-name "${{ env.BRANCH_NAME }}" + + ./main.py --benchmark-name "supernode" \ + --benchmark-results-path "../../tests/mgbench/benchmark_supernode.json" \ + --github-run-id "${{ github.run_id }}" \ + --github-run-number "${{ github.run_number }}" \ + --head-branch-name "${{ env.BRANCH_NAME }}" + + ./main.py --benchmark-name "high_write_set_property" \ + --benchmark-results-path "../../tests/mgbench/benchmark_high_write_set_property.json" \ + --github-run-id "${{ github.run_id }}" \ + --github-run-number "${{ github.run_number }}" \ + --head-branch-name "${{ env.BRANCH_NAME }}"