Собрать 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 Benchmarkallin1_ssb.sh
: Этот скрипт оболочки автоматически выполняет весь рабочий процесс бенчмарка.
database_files
означает, что он будет хранить файлы базы данных согласно кодекам lz4/deflate/zstd.
Запустить бенчмарк автоматически для Star Schema:
После завершения, пожалуйста, проверьте все результаты в этой папке:./output/
В случае сбоя, пожалуйста, вручную запустите бенчмарк в следующих разделах.
Определение
[CLICKHOUSE_EXE] означает путь к исполняемой программе clickhouse.
Окружение
- CPU: Sapphire Rapid
- Требования к ОС смотрите в Системные требования для QPL
- Установка IAA смотрите в Конфигурация ускорителей
- Установите модули python:
[Самопроверка для IAA]
Ожидаемый вывод будет таким:
Если вы не видите никакого вывода, это означает, что IAA не готова к работе. Пожалуйста, проверьте установку IAA снова.
Генерация сырых данных
Используйте dbgen
для генерации данных объемом 100 миллионов строк с параметрами:
-s 20
Ожидается, что файлы, такие как *.tbl
, будут находиться в ./benchmark_sample/rawdata_dir/ssb-dbgen
:
Настройка базы данных
Настройка базы данных с кодеком LZ4
Здесь вы должны увидеть сообщение Подключено к серверу ClickHouse
в консоли, что означает, что клиент успешно установил соединение с сервером.
Завершите три шага, упомянутые в Star Schema Benchmark
- Создание таблиц в ClickHouse
- Вставка данных. Здесь следует использовать
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tbl
в качестве входных данных. - Преобразование "звездной схемы" в денормализованную "плоскую схему"
Настройка базы данных с кодеком IAA Deflate
Завершите три шага так же, как и для lz4 выше.
Настройка базы данных с кодеком ZSTD
Завершите три шага так же, как и для lz4 выше.
[самопроверка] Для каждого кодека (lz4/zstd/deflate) выполните следующий запрос, чтобы убедиться, что базы данных были успешно созданы:
Ожидаемый вывод будет таким:
[Самопроверка для кодека IAA Deflate]
При первом выполнении вставки или запроса из клиента ожидается, что консоль сервера clickhouse напечатает этот лог:
Если вы никогда не найдете это, но увидите другой лог, как ниже:
Это означает, что устройства IAA не готовы, вам нужно проверить установку IAA снова.
Бенчмарк с одним экземпляром
- Прежде чем начать бенчмарк, пожалуйста, отключите C6 и установите губернатор частоты CPU на
performance
- Чтобы исключить влияние памяти на многопоточность, мы используем
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, который уже используется первым экземпляром.
Бенчмаркинг с 2 экземплярами
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, вы обнаружите, что 3 запроса не входят: Q1.2/Q1.3/Q3.4. Это связано с тем, что использование ЦПУ% очень низкое < 10% для этих запросов, что означает, что не удается продемонстрировать различия в производительности.