OpenTelemetry API 性能基准测试
本文档描述了关于如何测量和报告 OpenTelemetry SDK 性能的通用性能基准测试指南。
本次基准测试的目标是提供一个工具,用于在目标平台上获取 OpenTelemetry SDK 在给定事件吞吐量下的基本性能开销。
基准测试配置
Span 配置
- 无父 Span 或父 SpanContext。
- 默认 Span Kind 和 Status。
- 关联到一个具有属性
service.name、service.version(每个属性的值为 10 个字符的字符串)以及service.instance.id(值为唯一 UUID)的 resource。有关详细信息,请参阅 Service。 - 1 个具有有符号 64 位整数值的 attribute。
- 1 个不带任何属性的 event。
- 应启用
AlwaysOn采样器。 - 每个 Span 被创建后立即结束。
测量配置
对于具有启动成本(如 JIT 编译)的语言,建议在测量之前进行预热阶段,该阶段应在相同的 Span 配置下运行。
吞吐量测量
创建 Span
每秒每个逻辑核心可创建并通过 OTLP Exporter 导出的 Span 数量,以及所有逻辑核心的平均数量。每个 Span 包含 10 个属性,每个属性包含两个 20 个字符的字符串,一个作为属性名称,另一个作为值。
Instrumentation 成本
CPU 使用率测量
在用户指定的 Span 吞吐量下(如果用户未输入,则默认为每秒 10,000 个 Span),测量并报告 SDK 在使用默认配置的简单和批量 Span Processor 以及 OTLP Exporter 时的 CPU 使用率。基准测试应创建一个进程外 OTLP 接收器,该接收器监听导出目标,或者采用已在进程外运行的 OTLP Exporter,并立即以成功状态响应并丢弃数据。收集器不应对测量产生显著的 CPU 开销。由于基准测试不包含用户处理逻辑,因此基准测试程序的总 CPU 消耗可视为 SDK CPU 消耗的近似值。
建议每个测试迭代的运行时间至少为 15 秒。应报告平均和峰值 CPU 使用率。
内存使用率测量
在与上述 CPU 使用率部分相同的场景下,测量动态内存消耗(例如堆内存),持续时间为 15 秒。
报告
报告格式
以上所有数字应至少测量多次(建议至少 10 次)并进行报告。