58 个版本 (重大变更)
42.0.0 | 2024年7月19日 |
---|---|
40.0.0 | 2024年7月13日 |
39.0.0 | 2024年6月24日 |
38.0.0 | 2024年5月24日 |
2.0.0-alpha.5 | 2020年3月24日 |
#602 in 魔法豆
6,508 每月下载量
用于 18 个crate(9 个直接使用)
6MB
88K SLoC
FRAME基准测试CLI
本crate包含用于基准测试Substrate及其硬件各个方面的命令。
目标是拥有一个全面的基准测试套件,涵盖Substrate及其运行的硬件的所有方面。
使用此crate主要有两种方式:节点集成的CLI版本和独立的CLI版本。如果您只对pallet基准测试感兴趣,请跳转到独立的CLI。
节点集成CLI
大多数Substrate节点都会公开一些用于基准测试的命令。您可以参考staging-node-cli
crate作为如何集成的示例。注意,如果仅用于基准测试pallet,则独立的CLI更合适。
用法
在这里,我们使用staging-node-cli
调用根命令。大多数Substrate节点应该有类似的输出,具体取决于它们对这些命令的集成。
$ cargo run -p staging-node-cli --profile=production --features=runtime-benchmarks -- benchmark
Sub-commands concerned with benchmarking.
USAGE:
substrate 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
pallet Benchmark the extrinsic weight of FRAME Pallets
storage Benchmark the storage speed of a chain snapshot
所有示例都使用production
配置文件以确保正确性,这使得编译速度非常慢;对于测试,您可以使用--release
。为了获得最终结果,应使用production
配置文件和参考硬件,否则结果不可比。
独立CLI
独立CLI是一个不依赖任何节点集成的独立CLI。它可以用于基准测试任何不使用第三方宿主函数的FRAME运行时的pallet。
目前它只支持pallet基准测试,因为其他命令仍然依赖于节点。
安装
从本地源代码库安装
cargo install --locked --path substrate/utils/frame/omni-bencher --profile=production
用法
公开的pallet子命令与节点集成CLI相同。唯一的区别是它需要以v1
为前缀,以确保即插即用兼容性。
首先,我们需要确保有一个运行时可用。以构建Westend运行时为例
cargo build -p westend-runtime --profile production --features runtime-benchmarks
现在可以开始基准测试了
frame-omni-bencher v1 \
benchmark pallet \
--runtime target/release/wbuild/westend-runtime/westend-runtime.compact.compressed.wasm \
--pallet "pallet_balances" --extrinsic ""
有关pallet
命令的确切参数,请参阅pallet子模块。
命令
两个CLI的子命令具有相同的语义,并在各自的子模块中进行了文档化
- block 将历史区块的权重与其实际资源使用情况进行比较
- machine 测量硬件的速度
- overhead 为Block和Extrinsic基本权重创建权重文件
- pallet 为Pallet创建权重文件
- storage 为Read和Write存储操作创建权重文件
许可证:Apache-2.0
依赖关系
~87–135MB
~2.5M SLoC