新闻来源:Arm 社区
BOLT 是一种链接后优化技术,能够为多种工作负载带来性能提升。BOLT 一般可以通过 CoreSight 和 perf 实现来改善某些典型工作负载的性能。然而,CoreSight 需要采集分支的 perf 数据,不便于在生产环境中部署。
BOLT Instrumentation 是一种替代方法,它通过 instrument 和运行二进制文件来收集 Profile 数据,然后基于该数据来优化可执行二进制文件。由于其不依赖 CoreSight 和 perf,因此只需要 llvm-bolt 工具就可以支持。
本文将为你介绍如何在 MongoDB 上启用 BOLT Instrumentation,并取得基准测试结果。
测试环境
我们为基准测试预留了两个阿里云 ECS 实例。终端运行 ycsb,服务器则运行 MongoDB。服务器上连接了 200G 的 ESSD AutoPL 云盘,具有更高的带宽,可确保驱动器不会出现瓶颈。
图:MongoDB BOLT Instrumentation 测试环境
运行 ycsb 分为加载和运行两个步骤。期间将发送四千万条记录和五百万次操作。运行以下命令:
启用 BOLT Instrumentation 的步骤
构建默认 MongoDB:
收集 Profile 数据:
优化可执行文件:
测试结果
基准测试结果显示,MongoDB 在 INSERT 方面性能提高了 58%,在 READ 和 UPDATE 方面性能提高了 52%。启用 BOLT 后,延迟也显著降低。
INSERT:
READ 和 UPDATE(比例为 1:1):
吞吐量提升
使用 BOLT 后,INSERT 的吞吐量提高了 58%,READ 和 UPDATE 的吞吐量提高了 52%:
图:BOLT 的吞吐量提升结果
延迟改进
使用 BOLT 后,INSERT 平均延迟改进了 37%,READ 平均延迟改进了 35%,UPDATE 平均延迟改进了 34%:
图:BOLT 延迟改进结果
perf 数据
perf 数据表明,L1-icache-misses、branch-misses 和 iTLB-load-misses 显著下降。使用以下命令采集 perf 数据:
图:BOLT 的 perf 数据结果
总结
BOLT Instrumentation 使 MongoDB 的 READ 和 UPDATE 测试性能提升了 52%,延迟也得到显著下降。此外,BOLT Instrumentation 无需依赖硬件计数器和 perf,因此更易于部署。