debug: testing cachegrind

This commit is contained in:
Allan Jeremy 2022-06-16 14:33:39 +03:00
parent 4993afd6f0
commit ef452d2c92

View file

@ -12,89 +12,89 @@ on:
- "prototyping/**" - "prototyping/**"
jobs: jobs:
windows: # windows:
name: Run ${{ matrix.bench.title }} (Windows ${{matrix.arch}}) # name: Run ${{ matrix.bench.title }} (Windows ${{matrix.arch}})
strategy: # strategy:
fail-fast: false # fail-fast: false
matrix: # matrix:
os: [windows-latest] # os: [windows-latest]
arch: [Win32, x64] # arch: [Win32, x64]
bench: # bench:
- { # - {
script: "run-benchmarks", # script: "run-benchmarks",
timeout: 12, # timeout: 12,
title: "Luau Benchmarks", # title: "Luau Benchmarks",
cachegrindTitle: "Performance", # cachegrindTitle: "Performance",
cachegrindIterCount: 20, # cachegrindIterCount: 20,
} # }
benchResultsRepo: # benchResultsRepo:
- { name: "AllanJeremy/luau-benchmark-results", branch: "main" } # - { name: "AllanJeremy/luau-benchmark-results", branch: "main" }
runs-on: ${{ matrix.os }} # runs-on: ${{ matrix.os }}
steps: # steps:
- name: Checkout Luau # - name: Checkout Luau
uses: actions/checkout@v3 # uses: actions/checkout@v3
- name: Build Luau # - name: Build Luau
shell: bash # necessary for fail-fast # shell: bash # necessary for fail-fast
run: | # run: |
mkdir build && cd build # mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo # cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build . --target Luau.Repl.CLI --config RelWithDebInfo # cmake --build . --target Luau.Repl.CLI --config RelWithDebInfo
cmake --build . --target Luau.Analyze.CLI --config RelWithDebInfo # cmake --build . --target Luau.Analyze.CLI --config RelWithDebInfo
move build/RelWithDebInfo/* . # move build/RelWithDebInfo/* .
- name: Check dir structure # - name: Check dir structure
run: | # run: |
ls build/RelWithDebInfo # ls build/RelWithDebInfo
ls # ls
- uses: actions/setup-python@v3 # - uses: actions/setup-python@v3
with: # with:
python-version: "3.9" # python-version: "3.9"
architecture: "x64" # architecture: "x64"
- name: Install python dependencies # - name: Install python dependencies
run: | # run: |
python -m pip install requests # python -m pip install requests
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose # python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
- name: Run benchmark # - name: Run benchmark
run: | # run: |
python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt # python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt
- name: Checkout Benchmark Results repository # - name: Checkout Benchmark Results repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
repository: ${{ matrix.benchResultsRepo.name }} # repository: ${{ matrix.benchResultsRepo.name }}
ref: ${{ matrix.benchResultsRepo.branch }} # ref: ${{ matrix.benchResultsRepo.branch }}
token: ${{ secrets.BENCH_GITHUB_TOKEN }} # token: ${{ secrets.BENCH_GITHUB_TOKEN }}
path: "./gh-pages" # path: "./gh-pages"
- name: Store ${{ matrix.bench.title }} result # - name: Store ${{ matrix.bench.title }} result
uses: Roblox/rhysd-github-action-benchmark@v-luau # uses: Roblox/rhysd-github-action-benchmark@v-luau
with: # with:
name: ${{ matrix.bench.title }} # name: ${{ matrix.bench.title }}
tool: "benchmarkluau" # tool: "benchmarkluau"
output-file-path: ./${{ matrix.bench.script }}-output.txt # output-file-path: ./${{ matrix.bench.script }}-output.txt
external-data-json-path: ./gh-pages/dev/bench/data.json # external-data-json-path: ./gh-pages/dev/bench/data.json
alert-threshold: 150% # alert-threshold: 150%
fail-threshold: 1000% # fail-threshold: 1000%
fail-on-alert: false # fail-on-alert: false
comment-on-alert: true # comment-on-alert: true
github-token: ${{ secrets.GITHUB_TOKEN }} # github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Push benchmark results # - name: Push benchmark results
run: | # run: |
echo "Pushing benchmark results..." # echo "Pushing benchmark results..."
cd gh-pages # cd gh-pages
git config user.name github-actions # git config user.name github-actions
git config user.email github@users.noreply.github.com # git config user.email github@users.noreply.github.com
git add ./dev/bench/data.json # git add ./dev/bench/data.json
git commit -m "Add benchmarks results for ${{ github.sha }}" # git commit -m "Add benchmarks results for ${{ github.sha }}"
git push # git push
cd .. # cd ..
unix: unix:
name: Run ${{ matrix.bench.title }} (${{ matrix.os}}) name: Run ${{ matrix.bench.title }} (${{ matrix.os}})
@ -131,9 +131,9 @@ jobs:
python -m pip install requests python -m pip install requests
python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose
- name: Run benchmark # - name: Run benchmark
run: | # run: |
python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt # python bench/bench.py | tee ${{ matrix.bench.script }}-output.txt
- name: Install valgrind - name: Install valgrind
if: ${{ matrix.os }} == "ubuntu-latest" if: ${{ matrix.os }} == "ubuntu-latest"
@ -144,54 +144,54 @@ jobs:
if: ${{ matrix.os }} == "ubuntu-latest" if: ${{ matrix.os }} == "ubuntu-latest"
run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle}}Cold" 1 | tee -a ${{ matrix.bench.script }}-output.txt run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle}}Cold" 1 | tee -a ${{ matrix.bench.script }}-output.txt
- name: Run ${{ matrix.bench.title }} (Warm Cachegrind) # - name: Run ${{ matrix.bench.title }} (Warm Cachegrind)
if: ${{ matrix.os }} == "ubuntu-latest" # if: ${{ matrix.os }} == "ubuntu-latest"
run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle }}" ${{ matrix.bench.cachegrindIterCount }} | tee -a ${{ matrix.bench.script }}-output.txt # run: sudo bash ./scripts/run-with-cachegrind.sh python ./bench/bench.py "${{ matrix.bench.cachegrindTitle }}" ${{ matrix.bench.cachegrindIterCount }} | tee -a ${{ matrix.bench.script }}-output.txt
- name: Checkout Benchmark Results repository # - name: Checkout Benchmark Results repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
repository: ${{ matrix.benchResultsRepo.name }} # repository: ${{ matrix.benchResultsRepo.name }}
ref: ${{ matrix.benchResultsRepo.branch }} # ref: ${{ matrix.benchResultsRepo.branch }}
token: ${{ secrets.BENCH_GITHUB_TOKEN }} # token: ${{ secrets.BENCH_GITHUB_TOKEN }}
path: "./gh-pages" # path: "./gh-pages"
- name: Store ${{ matrix.bench.title }} result # - name: Store ${{ matrix.bench.title }} result
uses: Roblox/rhysd-github-action-benchmark@v-luau # uses: Roblox/rhysd-github-action-benchmark@v-luau
with: # with:
name: ${{ matrix.bench.title }} # name: ${{ matrix.bench.title }}
tool: "benchmarkluau" # tool: "benchmarkluau"
output-file-path: ./${{ matrix.bench.script }}-output.txt # output-file-path: ./${{ matrix.bench.script }}-output.txt
external-data-json-path: ./gh-pages/dev/bench/data.json # external-data-json-path: ./gh-pages/dev/bench/data.json
alert-threshold: 150% # alert-threshold: 150%
fail-threshold: 200% # fail-threshold: 200%
fail-on-alert: true # fail-on-alert: true
comment-on-alert: true # comment-on-alert: true
comment-always: true # comment-always: true
github-token: ${{ secrets.GITHUB_TOKEN }} # github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Store ${{ matrix.bench.title }} result (CacheGrind) # - name: Store ${{ matrix.bench.title }} result (CacheGrind)
uses: Roblox/rhysd-github-action-benchmark@v-luau # uses: Roblox/rhysd-github-action-benchmark@v-luau
if: ${{ matrix.os }} == "ubuntu-latest" # if: ${{ matrix.os }} == "ubuntu-latest"
with: # with:
name: ${{ matrix.bench.title }} (CacheGrind) # name: ${{ matrix.bench.title }} (CacheGrind)
tool: "roblox" # tool: "roblox"
output-file-path: ./${{ matrix.bench.script }}-output.txt # output-file-path: ./${{ matrix.bench.script }}-output.txt
external-data-json-path: ./gh-pages/dev/bench/data.json # external-data-json-path: ./gh-pages/dev/bench/data.json
alert-threshold: 150% # alert-threshold: 150%
fail-threshold: 1000% # fail-threshold: 1000%
fail-on-alert: false # fail-on-alert: false
comment-on-alert: true # comment-on-alert: true
github-token: ${{ secrets.GITHUB_TOKEN }} # github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Push benchmark results # - name: Push benchmark results
if: github.event_name == 'push' # if: github.event_name == 'push'
run: | # run: |
echo "Pushing benchmark results..." # echo "Pushing benchmark results..."
cd gh-pages # cd gh-pages
git config user.name github-actions # git config user.name github-actions
git config user.email github@users.noreply.github.com # git config user.email github@users.noreply.github.com
git add ./dev/bench/data.json # git add ./dev/bench/data.json
git commit -m "Add benchmarks results for ${{ github.sha }}" # git commit -m "Add benchmarks results for ${{ github.sha }}"
git push # git push
cd .. # cd ..