- Убедитесь, что ваша хост-машина соответствует предварительным требованиям QPL
- deflate_qpl включен по умолчанию при сборке через cmake. Если вы случайно изменили этот параметр, ещё раз проверьте флаг сборки: ENABLE_QPL=1
- Общие требования приведены в общих инструкциях по сборке ClickHouse
Список файлов
benchmark_sample в qpl-cmake приведены примеры запуска бенчмарка с помощью скриптов Python:
client_scripts содержит скрипты Python для запуска типового бенчмарка, например:
client_stressing_test.py: Скрипт Python для стресс-тестирования запросов с [1~4] экземплярами сервера.queries_ssb.sql: В этом файле перечислены все запросы для Star Schema Benchmarkallin1_ssb.sh: Этот shell-скрипт автоматически выполняет весь процесс бенчмарка в одном запуске.
database_files означает, что в этом каталоге будут храниться файлы базы данных в соответствии с кодеком lz4/deflate/zstd.
Автоматический запуск бенчмарка для схемы «звезда»:
./output/
Если возникнет ошибка, вручную запустите бенчмарк, как указано в разделах ниже.
Определение
Окружение
- CPU: Sapphire Rapid
- Требования к ОС см. в разделе System Requirements for QPL
- Настройку IAA см. в разделе Accelerator Configuration
- Установите модули Python:
Сгенерируйте сырые данные
dbgen, чтобы сгенерировать данные объёмом 100 миллионов строк со следующими параметрами:
-s 20
Файлы вида *.tbl будут созданы в каталоге ./benchmark_sample/rawdata_dir/ssb-dbgen:
Настройка базы данных
Connected to ClickHouse server, которое означает, что клиент успешно установил соединение с сервером.
Выполните три шага ниже, описанные в Star Schema Benchmark
- Создание таблиц в ClickHouse
- Вставка данных. В качестве входных данных здесь следует использовать
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tbl. - Преобразование “звездообразной схемы” в денормализованную “плоскую схему”
Бенчмарк на одном экземпляре
- Перед запуском бенчмарка отключите C6 и установите для регулятора частоты CPU режим
performance
- Чтобы исключить влияние привязки памяти при работе на разных сокетах, мы используем
numactl, чтобы привязать сервер к одному сокету, а клиент — к другому. - Под одним экземпляром понимается один сервер, подключенный к одному клиенту
QPS_Final и соберите статистику
Бенчмарк с несколькими экземплярами
- Чтобы снизить влияние ограничений по памяти при слишком большом числе потоков, рекомендуем запускать бенчмарк с несколькими экземплярами.
- Под несколькими экземплярами понимаются несколько (2 или 4) серверов, подключённых к соответствующим клиентам.
- Ядра одного сокета необходимо разделить поровну и распределить между серверами.
- Для нескольких экземпляров необходимо создать новую папку для каждого кодека и выполнить вставку данных, следуя шагам, аналогичным сценарию с одним экземпляром.
- На стороне клиента при создании таблицы и вставке данных необходимо запускать ClickHouse с назначенным портом.
- На стороне сервера необходимо запускать ClickHouse с конкретным XML-файлом конфигурации, в котором задан порт. Все пользовательские XML-файлы конфигурации для нескольких экземпляров уже находятся в ./server_config.
- [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 в client_stressing_test.py обозначает количество экземпляров. Если нужно больше экземпляров, замените его на значение 3 или 4. Этот скрипт поддерживает до 4 экземпляров/
Теперь, как и ожидается, должны выводиться три журнала:
QPS_Final и соберите статистику.
Настройка бенчмарка для 4 экземпляров аналогична приведённой выше настройке для 2 экземпляров.
Мы рекомендуем использовать данные бенчмарка для 2 экземпляров в качестве итогового отчёта для проверки.