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.52020年3月24日

#602 in 魔法豆

Download history 1688/week @ 2024-04-16 1838/week @ 2024-04-23 1853/week @ 2024-04-30 1484/week @ 2024-05-07 1926/week @ 2024-05-14 1868/week @ 2024-05-21 2236/week @ 2024-05-28 2096/week @ 2024-06-04 1700/week @ 2024-06-11 1949/week @ 2024-06-18 2258/week @ 2024-06-25 525/week @ 2024-07-02 1386/week @ 2024-07-09 1873/week @ 2024-07-16 1762/week @ 2024-07-23 1420/week @ 2024-07-30

6,508 每月下载量
用于 18 个crate(9 个直接使用)

Apache-2.0GPL-3.0-or-later…

6MB
88K SLoC

FRAME基准测试CLI

本crate包含用于基准测试Substrate及其硬件各个方面的命令。
目标是拥有一个全面的基准测试套件,涵盖Substrate及其运行的硬件的所有方面。
使用此crate主要有两种方式:节点集成的CLI版本和独立的CLI版本。如果您只对pallet基准测试感兴趣,请跳转到独立的CLI

节点集成CLI

大多数Substrate节点都会公开一些用于基准测试的命令。您可以参考staging-node-clicrate作为如何集成的示例。注意,如果仅用于基准测试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 测量硬件的速度
  • overheadBlockExtrinsic基本权重创建权重文件
  • pallet 为Pallet创建权重文件
  • storageReadWrite存储操作创建权重文件

许可证:Apache-2.0

依赖关系

~87–135MB
~2.5M SLoC