Сборка ClickHouse с DEFLATE_QPL
-
Убедитесь, что ваша хост-система удовлетворяет требуемым для QPL предварительным требованиям
-
deflate_qpl включён по умолчанию при сборке с помощью CMake. Если вы случайно изменили это, пожалуйста, проверьте флаг сборки: ENABLE_QPL=1
-
Для общих требований обратитесь к общим инструкциям по сборке ClickHouse
Запуск бенчмарка с DEFLATE_QPL
Список файлов
Папки benchmark_sample в составе qpl-cmake содержат примеры запуска бенчмарка с помощью Python-скриптов:
client_scripts содержит Python-скрипты для запуска типичного бенчмарка, например:
client_stressing_test.py: Python-скрипт для стресс‑тестирования запросов с 1–4 экземплярами сервера.queries_ssb.sql: файл, в котором перечислены все запросы для Star Schema Benchmark.allin1_ssb.sh: shell-скрипт, который автоматически выполняет весь процесс бенчмарка «all in one».
database_files означает, что там будут храниться файлы базы данных в соответствии с кодеками lz4/deflate/zstd.
Автоматический запуск бенчмарка для схемы «звезда»:
После завершения выполнения проверьте все результаты в этой папке: ./output/
Если возникнет ошибка, запустите бенчмарк вручную, как описано в разделах ниже.
Определение
[CLICKHOUSE_EXE] — это путь к исполняемому файлу ClickHouse.
Среда
- CPU: Sapphire Rapids
- Требования к ОС см. раздел System Requirements for QPL
- Настройку IAA см. раздел Accelerator Configuration
- Установите модули Python:
[Самопроверка IAA]
Ожидаемый результат будет выглядеть следующим образом:
Если вывода нет, это означает, что IAA еще не готов к работе. Пожалуйста, проверьте настройку IAA.
Генерация необработанных данных
Используйте dbgen для генерации набора данных объемом 100 миллионов строк с параметром:
-s 20
Файлы с расширением *.tbl должны быть сгенерированы в каталоге ./benchmark_sample/rawdata_dir/ssb-dbgen:
Настройка базы данных
Настройте базу данных с использованием кодека LZ4
В консоли должно появиться сообщение Connected to ClickHouse server, что означает, что клиент успешно установил соединение с сервером.
Выполните три шага, указанные в Star Schema Benchmark:
- Создайте таблицы в ClickHouse
- Вставьте данные. Для этого используйте
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tblв качестве входных данных. - Преобразуйте «звёздную схему» в денормализованную «плоскую схему»
Настройте базу данных с кодеком IAA Deflate
Выполните те же три шага, что и для lz4, описанных выше
Настройте базу данных с кодеком ZSTD
Выполните три шага так же, как для lz4 выше
[self-check] Для каждого кодека (lz4/zstd/deflate) выполните следующий запрос, чтобы убедиться, что базы данных созданы успешно:
Вы должны увидеть следующий результат:
[Самопроверка кодека IAA Deflate]
При первом выполнении операции вставки или запроса с клиента в консоли сервера ClickHouse должно появиться следующее сообщение в логе:
Если это сообщение так и не появится, но вы увидите другую запись лога, как показано ниже:
Это означает, что устройства IAA не готовы; вам нужно заново проверить их настройку.
Тестирование производительности с одним экземпляром
- Перед началом бенчмарка отключите режим C6 и переведите регулятор частоты CPU в режим
performance
- Чтобы устранить влияние ограничений пропускной способности памяти между NUMA‑сокетами, мы используем
numactl, чтобы привязать сервер к одному сокету, а клиент — к другому. - Под одиночным экземпляром подразумевается один сервер, подключенный к одному клиенту.
Теперь запустите бенчмарк для LZ4/Deflate/ZSTD соответственно:
LZ4:
Сжатие IAA (deflate):
ZSTD:
Теперь должны выводиться три лога, как и ожидалось:
Как проверить метрики производительности:
Нас интересует показатель QPS. Найдите по ключевому слову QPS_Final и соберите статистику.
Тестирование производительности с несколькими инстансами
- Чтобы снизить влияние ограничений по памяти при использовании слишком большого числа потоков, мы рекомендуем запускать тестирование производительности с несколькими инстансами.
- Конфигурация с несколькими инстансами означает использование нескольких (2 или 4) серверов, каждый из которых подключён к своему клиенту.
- Ядра одного сокета должны быть поровну разделены и соответственно закреплены за серверами.
- Для конфигурации с несколькими инстансами необходимо создать отдельную папку для каждого кодека и загрузить в неё набор данных, следуя шагам, аналогичным запуску с одним инстансом.
Есть 2 отличия:
- На стороне клиента вам нужно запускать ClickHouse с назначенным портом при создании таблицы и вставке данных.
- На стороне сервера вам нужно запускать ClickHouse с определённым xml-файлом конфигурации, в котором уже назначен порт. Все пользовательские xml-файлы конфигурации для нескольких инстансов находятся в ./server_config.
Здесь мы предполагаем, что на один сокет приходится 60 ядер и в качестве примера берём 2 инстанса. Запуск сервера для первого инстанса LZ4:
ZSTD:
Сжатие IAA Deflate:
[Запуск сервера для второго экземпляра]
LZ4:
ZSTD:
IAA Deflate:
Создание таблиц и загрузка данных для второго экземпляра
Создание таблиц:
Вставка данных:
- [TBL_FILE_NAME] обозначает имя файла, соответствующее регулярному выражению
*.tblв каталоге./benchmark_sample/rawdata_dir/ssb-dbgen. --port=9001— порт, назначенный экземпляру сервера, который также задан в config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml. Для дополнительных экземпляров его нужно заменить на значение 9002/9003, которые соответствуют экземплярам s3/s4 соответственно. Если вы его не укажете, по умолчанию будет использоваться порт 9000, который уже занят первым экземпляром.
Тестирование производительности с двумя экземплярами
LZ4:
ZSTD:
IAA deflate
Здесь последний аргумент 2 в client_stressing_test.py обозначает количество экземпляров. Для большего числа экземпляров нужно заменить его на значение 3 или 4. Этот скрипт поддерживает до 4 экземпляров.
Теперь три лога должны быть выведены, как ожидается:
Как проверить метрики производительности:
Мы фокусируемся на QPS, найдите ключевое слово QPS_Final и соберите статистику.
Конфигурация бенчмарка для 4 инстансов аналогична конфигурации для 2 инстансов выше. Мы рекомендуем использовать данные бенчмарка для 2 инстансов в качестве итогового отчёта для рассмотрения.
Советы
Каждый раз перед запуском нового сервера ClickHouse убедитесь, что не осталось запущенных фоновых процессов ClickHouse; при необходимости найдите и завершите старые процессы:
Сравнив список запросов в ./client_scripts/queries_ssb.sql с официальным Star Schema Benchmark, вы увидите, что три запроса отсутствуют: Q1.2/Q1.3/Q3.4. Это связано с тем, что загрузка CPU для этих запросов очень низкая — менее 10 %, поэтому на них нельзя продемонстрировать различия в производительности.