# Common podman run args for perf container _perf_run_args := "--rm -ti \ --security-opt=label=disable \ -v chunkah-perf-cargo:/root/.cargo \ -e CARGO_PROFILE_RELEASE_DEBUG=true \ chunkah-perf" # Build performance analysis container image _buildperfimg: ${BUILDAH:-buildah} build --layers=true -t chunkah-perf -f Containerfile ../.. # Profile chunkah with flamegraph (outputs flamegraph.svg) profile image="quay.io/fedora/fedora-minimal:latest": _buildperfimg #!/bin/bash set -euo pipefail podman pull --policy=missing {{ image }} cache_id=$(realpath "$PWD" | sha256sum | cut -f1 -d' ') podman run --privileged -v "${PWD}/../..:/build:z" \ --mount=type=image,src={{ image }},target=/chunkah \ -v chunkah-perf-target-${cache_id}:/build/target {{ _perf_run_args }} \ sh -c 'cargo flamegraph -o /build/flamegraph.svg -- build --prune /sysroot/ > /dev/null' echo "Flamegraph written to flamegraph.svg" # Benchmark chunkah with hyperfine benchmark image="quay.io/fedora/fedora-coreos:stable": _buildperfimg #!/bin/bash set -euo pipefail podman pull --policy=missing {{ image }} cache_id=$(realpath "$PWD" | sha256sum | cut -f1 -d' ') podman run -v "${PWD}/../..:/build:z" \ --mount=type=image,src={{ image }},target=/chunkah \ -v chunkah-perf-target-${cache_id}:/build/target {{ _perf_run_args }} \ sh -c 'cargo build --release && hyperfine --warmup 3 "target/release/chunkah build --prune /sysroot/ > target/out.ociarchive"'