Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Оптимизация на основе профиля

Оптимизация на основе профиля (PGO) — это метод оптимизации компилятора, при котором программа оптимизируется на основе профиля времени выполнения.

Согласно результатам тестов, PGO помогает повысить производительность ClickHouse. По результатам тестов прирост QPS в наборе тестов ClickBench достигает 15%. Более подробные результаты доступны здесь. Выигрыш в производительности зависит от вашей типичной рабочей нагрузки — результаты могут быть как лучше, так и хуже.

Подробнее о PGO в ClickHouse можно прочитать в соответствующем issue на GitHub.

Как собрать ClickHouse с PGO?

Существует два основных вида PGO: инструментирование и сэмплирование (также известное как AutoFDO). В этом руководстве описывается инструментирование PGO для ClickHouse.

  1. Соберите ClickHouse в режиме instrumented. В Clang это можно сделать, передав параметр -fprofile-generate в CXXFLAGS.
  2. Запустите instrumented ClickHouse на типичной рабочей нагрузке. Здесь следует использовать вашу обычную рабочую нагрузку. Один из вариантов — использовать ClickBench в качестве примера такой нагрузки. ClickHouse в режиме instrumented может работать медленно, поэтому учитывайте это и не запускайте его в средах, критичных к производительности.
  3. Скомпилируйте ClickHouse еще раз, используя флаги компилятора -fprofile-use и профили, собранные на предыдущем шаге.

Более подробное руководство по применению PGO приведено в документации Clang.

Если вы собираетесь собирать типичную рабочую нагрузку непосредственно в production-среде, рекомендуем попробовать сэмплирование PGO.

Navigation