Skip to content

Commit

Permalink
ci(perf): optimize the schedule (OpenXiangShan#3798)
Browse files Browse the repository at this point in the history
1. Use a conditional step after the schedule to ensure strict biweekly
execution.
2. Allow specifying a commit SHA for manual runs.
3. Retain each test's emu; if an emu exists, skip the build. This
approach both preserves the emu for reproducibility and saves build
time.
  • Loading branch information
Maxpicca-Li authored Oct 28, 2024
1 parent c3d62b6 commit 9a07878
Showing 1 changed file with 63 additions and 10 deletions.
73 changes: 63 additions & 10 deletions .github/workflows/perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,60 @@ name: Performance Regression
on:
schedule:
#run at 15:30 UTC (23:30 UTC+8) on Friday
# - cron: '30 15 * * 5'
- cron: '30 15 * * 5'
#run at 15:30 UTC (23:30 UTC+8) Every two weeks
- cron: '30 15 13,27 * *'
# - cron: '30 15 13,27 * *'
#run it manually when the workflow is in the default branch
workflow_dispatch:
inputs:
test_commit:
description: 'Commit SHA to run the workflow on'
required: false
default: ''
#only for test push
# push:
# branches: [ ci-perf-yml ]


jobs:
run:
runs-on: perf
continue-on-error: false
#At most 2 days to finish
timeout-minutes: 2880
name: Performance Regression - Checkpoints
name: Checkpoints
steps:
- uses: actions/checkout@v2
- name: Set test commit
id: set_test_commit
run: |
if [ "${{ github.event.inputs.test_commit }}" = "" ]; then
echo "Using latest commit."
echo "commit_sha=${{ github.sha }}" >> $GITHUB_OUTPUT
else
echo "Using specified commit: ${{ github.event.inputs.test_commit }}"
echo "commit_sha=${{ github.event.inputs.test_commit }}" >> $GITHUB_OUTPUT
fi
- name: Determine if this is the biweekly run
id: determine_run
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "run_biweekly=true" >> $GITHUB_OUTPUT
elif [ $(( $(date +'%V') % 2 )) -eq 1 ]; then
echo "run_biweekly=true" >> $GITHUB_OUTPUT
else
echo "run_biweekly=false" >> $GITHUB_OUTPUT
fi
- name: Checkout code at specific commit
if: steps.determine_run.outputs.run_biweekly == 'true'
uses: actions/checkout@v2
with:
ref: ${{ steps.set_test_commit.outputs.commit_sha }}
submodules: 'recursive'

- name: Set env
if: steps.determine_run.outputs.run_biweekly == 'true'
run: |
SHORT_SHA=$(git rev-parse --short HEAD)
DATE=$(git show -s --format=%cd --date=format:%y%m%d HEAD)
Expand All @@ -30,24 +66,39 @@ jobs:
echo "SPEC_DIR=/nfs/home/ci-runner/master-perf-report/cr${DATE}-${SHORT_SHA}" >> $GITHUB_ENV
echo "CKPT_HOME=/nfs/home/share/checkpoints_profiles/spec06_rv64gcb_O3_20m_gcc12.2.0-intFpcOff-jeMalloc/checkpoint-0-0-0" >> $GITHUB_ENV
echo "CKPT_JSON_PATH=/nfs/home/share/checkpoints_profiles/spec06_rv64gcb_O3_20m_gcc12.2.0-intFpcOff-jeMalloc/checkpoint-0-0-0/cluster-0-0.json" >> $GITHUB_ENV
- name: Clean up
- name: Clean Up
if: steps.determine_run.outputs.run_biweekly == 'true'
run: |
python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --clean
- name: Build EMU with DRAMsim3
if: steps.determine_run.outputs.run_biweekly == 'true'
run: |
python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \
--dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 \
--with-dramsim3 --threads 16 \
--pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin \
--llvm-profdata llvm-profdata
if [ -e "$SPEC_DIR/emu" ]; then
mkdir -p $NOOP_HOME/build
cp $SPEC_DIR/emu $NOOP_HOME/build/emu
else
python3 $GITHUB_WORKSPACE/scripts/xiangshan.py --build \
--dramsim3 /nfs/home/share/ci-workloads/DRAMsim3 \
--with-dramsim3 --threads 16 \
--pgo $GITHUB_WORKSPACE/ready-to-run/coremark-2-iteration.bin \
--llvm-profdata llvm-profdata
mkdir -p $SPEC_DIR
cp $NOOP_HOME/build/emu $SPEC_DIR/emu
fi
- name: Run SPEC CPU2006 checkpoints
if: steps.determine_run.outputs.run_biweekly == 'true'
run: |
cd $PERF_HOME
python3 xs_autorun_multiServer.py $CKPT_HOME $CKPT_JSON_PATH \
--xs $NOOP_HOME --threads 16 --dir $SPEC_DIR --resume \
-L "node033 node034 node036 node037 node038 node039 node040 node041 node042"
find $NOOP_HOME/build/ -maxdepth 1 -name "*.vcd" -exec mv {} $SPEC_DIR \;
- name: Report SPEC CPU2006 score
if: steps.determine_run.outputs.run_biweekly == 'true'
run: |
cd $PERF_HOME
python3 xs_autorun_multiServer.py $CKPT_HOME $CKPT_JSON_PATH \
Expand All @@ -59,7 +110,9 @@ jobs:
mkdir $GITHUB_WORKSPACE/result
cp $SPEC_DIR/err_ckps.json $GITHUB_WORKSPACE/result/err_ckps.json
cp $SPEC_DIR/score.txt $GITHUB_WORKSPACE/result/score.txt
- name: Upload result
if: steps.determine_run.outputs.run_biweekly == 'true'
uses: actions/upload-artifact@v4
with:
name: result
Expand Down

0 comments on commit 9a07878

Please sign in to comment.