プロファイルガイド最適化
プロファイルガイド最適化 (PGO) は、プログラムがランタイムプロファイルに基づいて最適化されるコンパイラ最適化技術です。
テストによれば、PGOはClickHouseのパフォーマンスを向上させるのに役立ちます。テストでは、ClickBenchテストスイートでQPSに最大15%の改善が見られました。詳細な結果は こちら で確認できます。パフォーマンスの利点は、あなたの通常のワークロードに依存します - より良い結果が得られる場合もあれば、悪い結果になる場合もあります。
ClickHouseにおけるPGOに関する詳細情報は、対応するGitHub issue で読むことができます。
PGOを用いてClickHouseをビルドする方法
PGOには主に2種類あります: 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を使用することをお勧めします。