Bare Metal Overview
大多数基准测试跟踪工具只允许您在单一环境中运行基准测试。 您要么在本地运行基准测试,要么在 CI 中运行。 即使它们同时支持本地和 CI 执行, 您也无法比较两者之间的结果。
Bencher Bare Metal 让您两全其美。 您可以从本地机器运行基准测试,并在专用硬件上执行它们, 也可以从 CI 运行基准测试,并在_完全相同_的专用硬件上执行它们。 这使您无论从哪里运行基准测试,都能拥有一致的基准测试执行环境。
Bencher Bare Metal 在裸机硬件上运行,以消除变异性并提供更准确、更可靠的基准测试结果。
Runner
Runner 是一个在专用裸金属硬件上运行的远程基准测试执行器。 Runner 根据其关联的 Specs 轮询 Bencher API 服务器以获取待处理的 Jobs。 一旦认领了一个 Job,Runner 会拉取该 Job 指定的 Image, 解包 Image,执行基准测试命令,并将结果发送回 Bencher API 服务器。 每次只执行一个 Job,以确保基准测试不受其他工作负载的影响。
| Runner | 平台 | 范围 | 管理者 | Sandbox | 网络访问 | 层级 |
|---|---|---|---|---|---|---|
| 共享 | Bencher Cloud | 服务器 | Bencher | 必需 | 否 | Free, Team, Enterprise |
| 专用 | Bencher Cloud | 组织 | Bencher | 可选 | 否 | Enterprise |
| 自定义 | Bencher Cloud | 组织 | 用户 | 可选 | 可选 | Enterprise |
| 自托管服务器 | Bencher Self-Hosted | 服务器 | 用户 | 可选 | 可选 | Free, Team, Enterprise |
| 自托管组织 | Bencher Self-Hosted | 组织 | 用户 | 可选 | 可选 | Enterprise |
Spec
Spec 是一个硬件规格,描述了 Runner 可用的资源:
- 操作系统 (OS)
- Linux
- macOS
- Windows
- CPU 架构
- x86_64
- ARM64
- Sandbox
- Firecracker microVM
- 无 Sandbox
- CPU 数量
- 内存大小 (RAM)
- 磁盘大小
- 网络访问
Spec 的作用域为服务器级别或组织级别, 因此同一个 Spec 可以分别在同一服务器上或同一组织内的多个 Testbeds 之间共享。
使用 bencher run 时,选择 Spec 的优先级顺序如下:
--spec选项- 分配给 Testbed 的 Spec
- 默认的组织级别 Spec
- 默认的服务器级别 Spec
选定的 Spec 将被分配给当前的 Testbed。
Sandbox
Sandbox 是一种隔离机制,允许在 Runner 上安全地实现多租户。
Bencher Bare Metal 使用 Firecracker microVM 作为默认的 Sandbox 实现。
不使用 Sandbox 运行需要在 Bencher Cloud 上使用专用或自定义 Runner(请联系 Bencher Plus 支持获取更多信息)或使用 Bencher Self-Hosted。
当 Runner 配置为使用 Sandbox 时,每个 Job 都在该 Sandbox 中执行。
请参阅 runner 文档了解完整概述。
Job
Job 跟踪远程基准测试执行请求的生命周期。
可以使用 --job-timeout 选项为每个 Job 请求自定义超时时间。
但是,以下 Job 超时时间和并发限制始终会被强制执行:
| 层级 | Job 超时时间 | Job 并发数 |
|---|---|---|
| 未认领 | 1 分钟 | 每个源IP 1个 |
| Free | 5 分钟 | 每个组织 1个 |
| Team | 无限制(默认:60 分钟) | 无限制 |
| Enterprise | 无限制(默认:60 分钟) | 无限制 |
请参阅 Job 文档了解完整概述。
Image
Image 是一个 OCI 容器镜像,包含您的基准测试代码及其依赖项。 当 Runner 执行一个 Job 时,它会拉取 Image,解包 Image,并执行 Job 中指定的基准测试命令。 请参阅 Image 文档了解如何为您自己的项目创建 Image。