90fd044766
- snowbridge-pezpallet-* → pezsnowbridge-pezpallet-* (201 refs) - pallet/ directories → pezpallet/ (4 locations) - Fixed pezpallet.rs self-include recursion bug - Fixed sc-chain-spec hardcoded crate name in derive macro - Reverted .pezpallet_by_name() to .pallet_by_name() (subxt API) - Added BizinikiwiConfig type alias for zombienet tests - Deleted obsolete session state files Verified: pezsnowbridge-pezpallet-*, pezpallet-staking, pezpallet-staking-async, pezframe-benchmarking-cli all pass cargo check
99 lines
3.6 KiB
Markdown
99 lines
3.6 KiB
Markdown
# The FRAME Benchmarking CLI
|
|
|
|
This crate contains commands to benchmark various aspects of Bizinikiwi and the hardware.
|
|
The goal is to have a comprehensive suite of benchmarks that cover all aspects of Bizinikiwi and the hardware that its
|
|
running on.
|
|
There exist fundamentally two ways to use this crate. A node-integrated CLI version, and a freestanding CLI. If you are
|
|
only interested in pezpallet benchmarking, then skip ahead to the [Freestanding CLI](#freestanding-cli).
|
|
|
|
# Node Integrated CLI
|
|
|
|
Mostly all Bizinikiwi nodes will expose some commands for benchmarking. You can refer to the `pezstaging-node-cli` crate as
|
|
an example on how to integrate those. Note that for solely benchmarking pallets, the freestanding CLI is more suitable.
|
|
|
|
## Usage
|
|
|
|
Here we invoke the root command on the `pezstaging-node-cli`. Most Bizinikiwi nodes should have a similar output, depending
|
|
on their integration of these commands.
|
|
|
|
```sh
|
|
$ cargo run -p pezstaging-node-cli --profile=production --features=runtime-benchmarks -- benchmark
|
|
|
|
Sub-commands concerned with benchmarking.
|
|
|
|
USAGE:
|
|
bizinikiwi benchmark <SUBCOMMAND>
|
|
|
|
OPTIONS:
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
|
|
SUBCOMMANDS:
|
|
block Benchmark the execution time of historic blocks
|
|
machine Command to benchmark the hardware.
|
|
overhead Benchmark the execution overhead per-block and per-extrinsic
|
|
pezpallet Benchmark the extrinsic weight of FRAME Pallets
|
|
storage Benchmark the storage speed of a chain snapshot
|
|
```
|
|
|
|
All examples use the `production` profile for correctness which makes the compilation *very* slow; for testing you can
|
|
use `--release`.
|
|
For the final results the `production` profile and reference hardware should be used, otherwise the results are not
|
|
comparable.
|
|
|
|
# Freestanding CLI
|
|
|
|
The freestanding is a standalone CLI that does not rely on any node integration. It can be used to benchmark pallets of
|
|
any FRAME runtime that does not utilize 3rd party host functions.
|
|
It currently only supports pezpallet benchmarking, since the other commands still rely on a node.
|
|
|
|
## Installation
|
|
|
|
Installing from local source repository:
|
|
|
|
```sh
|
|
cargo install --locked --path bizinikiwi/utils/pezframe/omni-bencher --profile=production
|
|
```
|
|
|
|
## Usage
|
|
|
|
The exposed pezpallet sub-command is identical as the node-integrated CLI. The only difference is that it needs to be prefixed
|
|
with a `v1` to ensure drop-in compatibility.
|
|
|
|
First we need to ensure that there is a runtime available. As example we will build the zagros runtime:
|
|
|
|
```sh
|
|
cargo build -p zagros-runtime --profile production --features runtime-benchmarks
|
|
```
|
|
|
|
Now the benchmarking can be started with:
|
|
|
|
```sh
|
|
frame-omni-bencher v1 \
|
|
benchmark pezpallet \
|
|
--runtime target/release/wbuild/zagros-runtime/zagros-runtime.compact.compressed.wasm \
|
|
--pezpallet "pallet_balances" --extrinsic ""
|
|
```
|
|
|
|
For the exact arguments of the `pezpallet` command, please refer to the [pezpallet] sub-module.
|
|
|
|
# Commands
|
|
|
|
The sub-commands of both CLIs have the same semantics and are documented in their respective sub-modules:
|
|
|
|
- [block] Compare the weight of a historic block to its actual resource usage
|
|
- [machine] Gauges the speed of the hardware
|
|
- [overhead] Creates weight files for the *Block*- and *Extrinsic*-base weights
|
|
- [pezpallet] Creates weight files for a Pezpallet
|
|
- [storage] Creates weight files for *Read* and *Write* storage operations
|
|
|
|
License: Apache-2.0
|
|
|
|
<!-- LINKS -->
|
|
|
|
[pezpallet]: ../../../frame/benchmarking/README.md
|
|
[machine]: src/machine/README.md
|
|
[storage]: src/storage/README.md
|
|
[overhead]: src/overhead/README.md
|
|
[block]: src/block/README.md
|