feat: simple performance bench for foyer-memory #520
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ================= THIS FILE IS AUTOMATICALLY GENERATED ================= | |
# | |
# Please run generate.sh and commit after editing the workflow templates. | |
# | |
# ======================================================================== | |
name: CI | |
on: | |
pull_request: | |
branches: [main] | |
env: | |
RUST_TOOLCHAIN: stable | |
RUST_TOOLCHAIN_NIGHTLY: nightly-2024-03-17 | |
CARGO_TERM_COLOR: always | |
CACHE_KEY_SUFFIX: 20240410-2 | |
jobs: | |
misc-check: | |
name: misc check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Run typos check | |
uses: crate-ci/typos@master | |
- name: Install yq | |
run: | | |
wget https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/${BINARY}.tar.gz -O - | tar xz && sudo mv ${BINARY} /usr/bin/yq | |
env: | |
YQ_VERSION: v4.16.1 | |
BINARY: yq_linux_amd64 | |
BUF_VERSION: 1.0.0-rc6 | |
- name: Install jq | |
uses: dcarbone/[email protected] | |
- name: Check if CI workflows are up-to-date | |
run: | | |
./.github/template/generate.sh --check | |
- name: Check if Grafana dashboards are minimized | |
run: | | |
./scripts/minimize-dashboards.sh --check | |
- name: Run ShellCheck | |
uses: ludeeus/action-shellcheck@master | |
rust-test: | |
name: rust test with codecov | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install rust toolchain@v1 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
components: rustfmt, clippy, llvm-tools-preview | |
- name: Cache Cargo home | |
uses: actions/cache@v2 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ env.CACHE_KEY_SUFFIX }}-rust-test | |
- name: Install cargo-binstall | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash | |
- name: Install cargo tools | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
cargo binstall -y cargo-sort cargo-hakari | |
- name: Run rust cargo-sort check | |
run: | | |
cargo sort -w -c | |
- name: Run hakari check | |
run: | | |
cargo hakari generate --diff | |
cargo hakari manage-deps --dry-run | |
- name: Run rust format check | |
run: | | |
cargo fmt --all -- --check | |
- name: Run rust clippy check | |
run: | | |
cargo clippy --all-targets --features tokio-console -- -D warnings | |
cargo clippy --all-targets --features deadlock -- -D warnings | |
cargo clippy --all-targets -- -D warnings | |
- if: steps.cache.outputs.cache-hit != 'true' | |
uses: taiki-e/install-action@cargo-llvm-cov | |
- if: steps.cache.outputs.cache-hit != 'true' | |
uses: taiki-e/install-action@nextest | |
- name: Run rust test with coverage (igored tests) | |
run: | | |
cargo llvm-cov --no-report nextest --run-ignored ignored-only --no-capture --workspace | |
- name: Run rust test with coverage | |
run: | | |
cargo llvm-cov --no-report nextest | |
- name: Generate codecov report | |
run: | | |
cargo llvm-cov report --lcov --output-path lcov.info | |
- uses: codecov/codecov-action@v3 | |
if: matrix.os == 'ubuntu-latest' | |
with: | |
verbose: true | |
deadlock: | |
name: run with single worker thread and deadlock detection | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install rust toolchain@v1 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
- name: Cache Cargo home | |
uses: actions/cache@v2 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ env.CACHE_KEY_SUFFIX }}-deadlock | |
- name: Run foyer-storage-bench with single worker thread and deadlock detection | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "--cfg tokio_unstable" | |
RUST_LOG: info | |
TOKIO_WORKER_THREADS: 1 | |
run: |- | |
cargo build --all --features deadlock | |
mkdir -p $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/deadlock | |
timeout 2m ./target/debug/foyer-storage-bench --dir $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/deadlock --capacity 256 --region-size 16 --lookup-range 1000 --w-rate 1 --r-rate 1 --ticket-insert-rate-limit 10 --time 60 | |
asan: | |
name: run with address saniziter | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install rust toolchain@v1 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_NIGHTLY }} | |
- name: Cache Cargo home | |
uses: actions/cache@v2 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ env.CACHE_KEY_SUFFIX }}-asan | |
- name: Run Unit Tests With Address Sanitizer | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "-Zsanitizer=address --cfg tokio_unstable" | |
RUST_LOG: info | |
run: |- | |
cargo +${{ env.RUST_TOOLCHAIN_NIGHTLY }} test --lib --bins --tests --target x86_64-unknown-linux-gnu -- --nocapture | |
- name: Run foyer-storage-bench With Address Sanitizer | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "-Zsanitizer=address --cfg tokio_unstable" | |
RUST_LOG: info | |
run: |- | |
cargo +${{ env.RUST_TOOLCHAIN_NIGHTLY }} build --all --target x86_64-unknown-linux-gnu | |
mkdir -p $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/asan | |
timeout 2m ./target/x86_64-unknown-linux-gnu/debug/foyer-storage-bench --dir $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/asan --capacity 256 --region-size 16 --lookup-range 1000 --w-rate 1 --r-rate 1 --ticket-insert-rate-limit 10 --time 60 | |
lsan: | |
name: run with leak saniziter | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install rust toolchain@v1 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_NIGHTLY }} | |
- name: Cache Cargo home | |
uses: actions/cache@v2 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ env.CACHE_KEY_SUFFIX }}-lsan | |
- name: Run Unit Tests With Leak Sanitizer | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "-Zsanitizer=leak --cfg tokio_unstable" | |
RUST_LOG: info | |
run: |- | |
cargo +${{ env.RUST_TOOLCHAIN_NIGHTLY }} test --lib --bins --tests --target x86_64-unknown-linux-gnu -- --nocapture | |
- name: Run foyer-storage-bench With Leak Sanitizer | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "-Zsanitizer=leak --cfg tokio_unstable" | |
RUST_LOG: info | |
run: |- | |
cargo +${{ env.RUST_TOOLCHAIN_NIGHTLY }} build --all --target x86_64-unknown-linux-gnu | |
mkdir -p $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/lsan | |
timeout 2m ./target/x86_64-unknown-linux-gnu/debug/foyer-storage-bench --dir $GITHUB_WORKSPACE/foyer-data/foyer-storage-bench/lsan --capacity 256 --region-size 16 --lookup-range 1000 --w-rate 1 --r-rate 1 --ticket-insert-rate-limit 10 --time 60 | |
deterministic-test: | |
name: run deterministic test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install rust toolchain@v1 | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN }} | |
components: rustfmt, clippy | |
- name: Cache Cargo home | |
uses: actions/cache@v2 | |
id: cache | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ env.CACHE_KEY_SUFFIX }}-deterministic-test | |
- if: steps.cache.outputs.cache-hit != 'true' | |
uses: taiki-e/install-action@nextest | |
- name: Run rust clippy check (madsim) | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "--cfg tokio_unstable --cfg madsim" | |
RUST_LOG: info | |
TOKIO_WORKER_THREADS: 1 | |
run: |- | |
cargo clippy --all-targets | |
- name: Run nexmark test (madsim) | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: "--cfg tokio_unstable --cfg madsim" | |
RUST_LOG: info | |
TOKIO_WORKER_THREADS: 1 | |
run: |- | |
cargo nextest run --all | |
concurrency: | |
group: environment-${{ github.ref }} | |
cancel-in-progress: true | |
# ================= THIS FILE IS AUTOMATICALLY GENERATED ================= | |
# | |
# Please run generate.sh and commit after editing the workflow templates. | |
# | |
# ======================================================================== | |