🧪 Benchmarking a Server for Substrate/Polkadot
Automatic Installation
source <(curl -s https://raw.githubusercontent.com/validexisinfra/polkadot/main/install-benchmark.sh)
Manual Installation
Installing Rust and Dependencies
sudo apt update && sudo apt install -y build-essential clang cmake pkg-config libssl-dev git curl unzip protobuf-compiler libclang-dev llvm-dev && curl https://sh.rustup.rs -sSf | sh -s -- -y && source $HOME/.cargo/env && rustup update stable && rustup target add wasm32-unknown-unknown && rustup component add rust-src
curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env
rustup update stable
rustup target add wasm32-unknown-unknown
rustup component add rust-src
Install the benchmarking tool
cargo install frame-omni-bencher
Check that the installed version is available
frame-omni-bencher --version
Clone Polkadot SDK
git clone https://github.com/paritytech/polkadot-sdk.git
cd polkadot-sdk
Run build with the feature flag included
cargo build --features runtime-benchmarks --release
Locate the generated .wasm
.wasm
find target/ -name "*.wasm"
Download the frame-weight template
mkdir -p scripts
curl https://raw.githubusercontent.com/paritytech/polkadot-sdk/refs/tags/polkadot-stable2412/substrate/.maintain/frame-weight-template.hbs \
--output scripts/frame-weight-template.hbs
Run the benchmarking tool to measure extrinsic weights
frame-omni-bencher v1 benchmark pallet \
--runtime target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm \
--pallet pallet_balances \
--extrinsic "*" \
--template scripts/frame-weight-template.hbs \
--output weights.rs
Result
Benchmark results will be saved in weights.rs
This file contains execution weights for the pallet's extrinsics, useful for evaluating node performance or preparing validator applications.
Run hardware benchmark
To benchmark server hardware performance:
cargo run --release --features=runtime-benchmarks --bin polkadot -- benchmark machine
This command evaluates system performance and prints results in the console.
Previous🔧 Installing a Polkadot Node Using KagomeNext📘 Monitoring Polkadot Nodes with Prometheus and Alertmanager
Last updated