基于性能分析的优化
基于性能分析的优化 (PGO) 是一种编译器优化技术,它根据程序的运行时性能分析结果来进行优化。
根据测试结果,PGO 有助于提高 ClickHouse 的性能。根据测试,我们在 ClickBench 测试套件上观察到 QPS 提高了 15%。更详细的结果可以在 这里 找到。性能提升取决于您的典型工作负载 - 您可能会获得更好的或更差的结果。
关于 ClickHouse 中 PGO 的更多信息,请阅读相应的 GitHub issue。
如何使用 PGO 构建 ClickHouse?
PGO 主要有两种类型:插桩 (Instrumentation) 和 采样 (Sampling)(也称为 AutoFDO)。本指南描述了 ClickHouse 中使用插桩 PGO 的方法。
- 以插桩模式构建 ClickHouse。在 Clang 中,可以通过将
-fprofile-generate选项传递给CXXFLAGS来实现。 - 在示例工作负载上运行插桩后的 ClickHouse。您需要使用您通常的工作负载。一种方法是使用 ClickBench 作为示例工作负载。插桩模式下的 ClickHouse 可能会运行缓慢,因此请做好准备,不要在性能关键的环境中使用插桩后的 ClickHouse。
- 使用
-fprofile-use编译器标志和从上一步收集的性能分析文件重新编译 ClickHouse。
有关如何应用 PGO 的更详细指南,请参阅 Clang 文档。
如果您打算直接从生产环境收集示例工作负载,我们建议尝试使用采样 PGO。