プロファイルガイド最適化
プロファイルガイド最適化 (PGO) は、プログラムの実行時プロファイルに基づいて最適化されるコンパイラ最適化技術です。
テストによると、PGOはClickHouseのパフォーマンスを向上させるのに役立ちます。テストによれば、ClickBenchテストスイートでQPSが最大15%改善されることが見られます。より詳細な結果はこちらでご覧いただけます。パフォーマンスの利点は、通常のワークロードに依存します - 結果が良くなることもあれば悪くなることもあります。
ClickHouseにおけるPGOに関する詳細情報は、対応するGitHubのイシューでお読みいただけます。
PGOを用いてClickHouseをビルドする方法は?
PGOには二つの主要な種類があります: Instrumentation と Sampling(AutoFDOとしても知られています)。このガイドでは、ClickHouseにおけるInstrumentation PGOについて説明します。
- InstrumentedモードでClickHouseをビルドします。Clangでは、
CXXFLAGS
に-fprofile-generate
オプションを渡すことで実行できます。 - サンプルワークロードでInstrumented ClickHouseを実行します。ここでは、通常のワークロードを使用する必要があります。サンプルワークロードとしてClickBenchを使用することが考えられます。InstrumentationモードのClickHouseは遅く動作する可能性があるため、その準備をして、パフォーマンスが重要な環境でInstrumented ClickHouseを実行しないでください。
-fprofile-use
コンパイラフラグと前のステップから収集したプロファイルを使用して、ClickHouseを再度コンパイルします。
PGOを適用する方法についてのより詳細なガイドはClangのドキュメントにあります。
生産環境から直接サンプルワークロードを収集する予定がある場合は、Sampling PGOの使用を試みることをお勧めします。