#benchmark #substrate #hardware #score #disk #requirements #machine

bin+lib substrate-benchmark-machine

用于基准测试substrate验证节点命令行界面

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 次下载

Apache-2.0GPL-3.0-or-later…

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