Passer au contenu principal
L’optimisation guidée par profil (PGO) est une technique d’optimisation du compilateur qui consiste à optimiser un programme en fonction de son profil d’exécution. D’après les tests, la PGO permet d’améliorer les performances de ClickHouse. Ils montrent des gains pouvant atteindre 15 % de QPS sur la suite de tests ClickBench. Des résultats plus détaillés sont disponibles ici. Les gains de performances dépendent de votre charge de travail habituelle : vous pouvez obtenir de meilleurs ou de moins bons résultats. Vous trouverez plus d’informations sur la PGO dans ClickHouse dans l’issue GitHub correspondante.

Comment compiler ClickHouse avec PGO ?

Il existe deux grands types de PGO : Instrumentation et Sampling (également appelé AutoFDO). Ce guide décrit le PGO par instrumentation avec ClickHouse.
  1. Compilez ClickHouse en mode instrumenté. Avec Clang, cela peut se faire en passant l’option -fprofile-generate à CXXFLAGS.
  2. Exécutez ClickHouse instrumenté sur une charge de travail représentative. Ici, vous devez utiliser votre charge de travail habituelle. L’une des approches possibles consiste à utiliser ClickBench comme charge de travail représentative. ClickHouse en mode instrumentation peut être lent : préparez-vous à cela et n’exécutez pas ClickHouse instrumenté dans des environnements sensibles aux performances.
  3. Recompilez ensuite ClickHouse avec l’option du compilateur -fprofile-use et les profils collectés à l’étape précédente.
Un guide plus détaillé sur l’utilisation de PGO est disponible dans la documentation de Clang. Si vous comptez collecter directement une charge de travail représentative depuis un environnement de production, nous vous recommandons d’utiliser le Sampling PGO.
Dernière modification le 29 juin 2026