7个版本
0.1.2 | 2024年1月26日 |
---|---|
0.1.1 | 2023年11月30日 |
0.1.0 | 2023年5月3日 |
0.0.3 | 2023年3月27日 |
#373 in 性能分析
每月 34 次下载
59KB
279 行
substrate-benchmark-machine
不同的Substrate链可能具有不同的硬件要求。
因此,能够快速判断硬件是否符合链的要求是很重要的。substrate-benchmark-machine
命令通过测量关键指标并使它们具有可比性来实现这一点。
安装命令如下
cargo install --git https://github.com/btwiuse/substrate-benchmark-machine
输出
进行快速硬件检查
$ substrate-benchmark-machine
[INFO] Performing quick hardware check...
[INFO] 🏁 CPU score: 1.42 GiBs (✅ Blake2256: expected minimum 1.00 GiBs)
[INFO] 🏁 Memory score: 17.93 GiBs (✅ MemCopy: expected minimum 14.32 GiBs)
[INFO] 🏁 Disk score (seq. writes): 397.35 MiBs (❌ DiskSeqWrite: expected minimum 450.00 MiBs)
[INFO] 🏁 Disk score (rand. writes): 193.44 MiBs (❌ DiskRndWrite: expected minimum 200.00 MiBs)
[INFO] ⚠ The hardware does not meet the minimal requirements for role 'Authority'.
运行完整基准测试
$ substrate-benchmark-machine --full
[INFO] Running full machine benchmarks...
[INFO]
+----------+----------------+-------------+-------------+-------------------+
| Category | Function | Score | Minimum | Result |
+===========================================================================+
| CPU | BLAKE2-256 | 1.42 GiBs | 1.00 GiBs | ✅ Pass (141.3 %) |
|----------+----------------+-------------+-------------+-------------------|
| CPU | SR25519-Verify | 726.21 KiBs | 666.00 KiBs | ✅ Pass (109.0 %) |
|----------+----------------+-------------+-------------+-------------------|
| Memory | Copy | 18.10 GiBs | 14.32 GiBs | ✅ Pass (126.4 %) |
|----------+----------------+-------------+-------------+-------------------|
| Disk | Seq Write | 398.56 MiBs | 450.00 MiBs | ❌ Fail ( 88.6 %) |
|----------+----------------+-------------+-------------+-------------------|
| Disk | Rnd Write | 193.37 MiBs | 200.00 MiBs | ✅ Pass ( 96.7 %) |
+----------+----------------+-------------+-------------+-------------------+
From 5 benchmarks in total, 4 passed and 1 failed (10% fault tolerance).
[INFO] The hardware fails to meet the requirements
Error: One of the benchmarks had a score that was lower than its requirement
得分 是每个基准测试的平均结果。它始终遵循“越高越好”的原则。
类别 指明硬件的哪部分被进行了基准测试
- CPU 处理器密集型任务
- 内存 RAM密集型任务
- 磁盘 硬盘密集型任务
功能 是运行的具体基准测试
- BLAKE2-256 32 KiB输入的BLAKE2-256加密散列函数的吞吐量。Substrate在许多地方使用blake2_256函数。散列函数的吞吐量强烈依赖于输入大小,因此我们决定使用固定输入大小以获得可比结果。
- SR25519验证 Sr25519是Curve25519签名方案的优化版本。签名验证用于Substrate在验证交易和块时。
- 复制 从RAM中一个位置复制到另一个位置的内存的吞吐量。
- 顺序写入 以顺序方式写入数据到存储位置的数据吞吐量。确保使用与之后存储链数据相同的磁盘。
- 随机写入 以随机顺序写入数据到存储位置的数据吞吐量。这通常比顺序写入慢得多。
要使测试通过,分数需要达到最小值。这可以通过--tolerance
标志来降低。
结果表示机器是否通过了特定的测试。百分数是达到所需最小值的相对分数。此决策考虑了--tolerance
标志。例如,如果容忍度为10%,则即使达到95%也会通过测试,其表示如下:✅ 通过 ( 95.0 %)
。
解释
理想情况下,所有结果都显示为通过
,程序以代码0退出。目前,一些基准测试即使在参考硬件上也可能失败;它们仍在改进以使其更具确定性。
确保在测试机器时不要运行其他任何程序。
您可以通过多次运行来获得更可靠的结果。
参数
--tolerance
用于降低最小值要求的百分比数字。应使用它来忽略基准测试的异常值。默认值为10%。--verify-duration
验证基准测试应运行多长时间。--disk-duration
读取和写入基准测试应运行多长时间。--allow-fail
总是以代码0退出程序。--chain
/--dev
指定要使用的链配置。这将用于将结果与链的要求(WIP)进行比较。--base-path
许可证:Apache-2.0
常见问题解答
如何解决 ⚠ 硬件不满足最小要求 for 角色 'Authority'.
此错误消息可能由不同的原因引起
a) 您的节点具有低规格的硬件。
b) 您的节点满足最低要求,但
-
在节点启动时,您正在运行其他CPU/IO密集型进程。
-
快速检查没有对略微低于分数的容忍度。
为了决定您是否需要升级硬件,您应该停止齿轮节点和其他资源密集型进程,并运行完整的机器基准测试
substrate-benchmark-machine --full
如果某些基准测试仍然失败,那么您应该相应地升级硬件,直到您得到所有5 ✅'s,否则您不必这样做。
请注意,如果您得到较低的CPU分数,增加核心数量不会有所帮助,因为这仅衡量单核性能,您应该升级到更强大的处理器以获得更高的分数。
依赖关系
~88–130MB
~2.5M SLoC