Skip to content

dbg: test

dbg: test #20

name: Flamegraph Reporter LEVM
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
on:
push:
branches: ["main", "levm/perf/automate_flamegraph"]
workflow_dispatch:
jobs:
generate-flamegraph:
name: Generate Flamegraph
runs-on: ubuntu-latest
strategy:
matrix:
name: ["levm", "revm"]
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rustup toolchain install
uses: dtolnay/rust-toolchain@stable
- name: Cache Extra Binaries
id: cache-binaries
uses: actions/cache@v4
with:
path: |
${{ env.HOME }}/.cargo/bin/addr2line
${{ env.HOME }}/.cargo/bin/flamegraph
${{ env.HOME }}/.cargo/bin/inferno-*
${{ env.HOME }}/ethrex/ethrex/cmd/ef_tests/levm/vectors
key: ${{ runner.os }}-${{ env.RUST_VERSION }}-extra-binaries
- name: Change perf settings
run: |
sudo sysctl kernel.perf_event_paranoid=-1
sudo sysctl -w kernel.kptr_restrict=0
sudo chmod +r /proc/kallsyms
sudo perf list hw
- name: Check addr2line installation
id: check-addr2line
run: |
if [ -f "$HOME/.cargo/bin/addr2line" ]; then
echo "$HOME/.cargo/bin/addr2line found"
echo "addr2line_exists=true" >> $GITHUB_OUTPUT
else
echo "$HOME/.cargo/bin/addr2line NOT found"
echo "addr2line_exists=false" >> $GITHUB_OUTPUT
fi
- name: Checkout gimli addr2line
if: steps.check-addr2line.outputs.addr2line_exists != 'true'
uses: actions/checkout@v4
with:
repository: gimli-rs/addr2line
path: "addr2line"
- name: Build gimli addr2line
if: steps.check-addr2line.outputs.addr2line_exists != 'true'
working-directory: ./addr2line
run: |
# Little hack we need else it throws error building
echo "[workspace]" >> ./Cargo.toml
cargo install --force --features="bin" addr2line
- name: Install flamegraph tools
run: |
if [ ! -f "$HOME/.cargo/bin/flamegraph" ]; then
cargo install --force flamegraph
else
echo "$HOME/.cargo/bin/flamegraph already found"
fi
if [ ! -f "$HOME/.cargo/bin/inferno-collapse-perf" ]; then
cargo install --force inferno
else
echo "$HOME/.cargo/bin/inferno-collapse-perf already found"
fi
- name: Download EF Tests
run: |
if [ ! -f "$HOME/ethrex/ethrex/cmd/ef_tests/levm/vectors" ]; then
cd crates/vm/levm
make download-evm-ef-tests
fi
- name: Generate Flamegraph data for ${{ matrix.name }}
run: |
start_time=$(date +%s)
if [ "${{ matrix.name }}" == "levm" ]; then
rm -rf target/debug/ef_tests_levm
CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" \
-p ef_tests-levm -- --tests stSolidityTest,stCallCodes
elif [ "${{ matrix.name }}" == "revm" ]; then
rm -rf target/debug/ef_tests_levm
CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph -c "record -o perf.data -F997 --call-graph dwarf,16384 -g" \
-p ef_tests-levm -- --revm --tests stSolidityTest,stCallCodes
fi
end_time=$(date +%s)
elapsed_time=$((end_time - start_time))
echo "time_${{ matrix.name }}=${elapsed_time}" >> $GITHUB_OUTPUT
- name: Upload artifact - ${{ matrix.name }}
uses: actions/upload-artifact@v4
with:
name: flamegraph_${{ matrix.name }}.svg
path: ./flamegraph_${{ matrix.name }}.svg
test-output:
name: Test Output
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: [generate-flamegraph]
steps:
- name: echo Output
run: |

Check failure on line 128 in .github/workflows/flamegraph_reporter_levm.yaml

View workflow run for this annotation

GitHub Actions / Flamegraph Reporter LEVM

Invalid workflow file

The workflow is not valid. .github/workflows/flamegraph_reporter_levm.yaml (Line: 128, Col: 14): Unrecognized named-value: 'time_levm'. Located at position 1 within expression: time_levm
echo ${{ time_levm }}
echo ${{ time_revm }}
# upload-static-page:
# name: Upload artifacts for static page
# runs-on: ubuntu-latest
# environment:
# name: github-pages
# url: ${{ steps.deployment.outputs.page_url }}
# needs: [generate-flamegraph]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Download ethrex flamegraph artifact
# uses: actions/download-artifact@v4
# with:
# name: flamegraph_levm.svg
# path: flamegraph_levm.svg
# - name: Download reth flamegraph artifact
# uses: actions/download-artifact@v4
# with:
# name: flamegraph_revm.svg
# path: flamegraph_revm.svg
# - name: Update static page locally with new data
# shell: bash
# run: |
# cp -r flamegraph_levm.svg pages/
# cp -r flamegraph_revm.svg pages/
# sed -i "s/{{LAST_UPDATE}}/$(TZ='Etc/GMT+3' date +'%Y-%m-%dT%H:%M:%S')/g" pages/index.html
# sed -i "s/{{ETHREX_TIME}}/${{ needs.generate-flamegraph.outputs.time_levm }}/g" pages/index.html
# sed -i "s/{{RETH_TIME}}/${{ needs.generate-flamegraph.outputs.time_revm }}/g" pages/index.html
# - name: Setup Pages
# uses: actions/configure-pages@v5
# - name: Upload artifact
# uses: actions/upload-pages-artifact@v3
# with:
# path: "pages/"
# - name: Deploy to GitHub Pages
# id: deployment
# uses: actions/deploy-pages@v4