- Certifique-se de que sua máquina host atenda aos pré-requisitos exigidos pelo QPL
- deflate_qpl é habilitado por padrão durante a compilação com CMake. Caso você o altere acidentalmente, verifique novamente a flag de compilação: ENABLE_QPL=1
- Para os requisitos gerais, consulte as instruções gerais de compilação do ClickHouse
Lista de arquivos
benchmark_sample em qpl-cmake traz exemplos de como executar benchmarks com scripts Python:
client_scripts contém scripts Python para executar benchmarks típicos, por exemplo:
client_stressing_test.py: Script Python para teste de estresse de consultas com [1~4] instâncias de servidor.queries_ssb.sql: O arquivo lista todas as consultas do Star Schema Benchmarkallin1_ssb.sh: Este script shell executa automaticamente todo o fluxo de benchmark em um único processo.
database_files indica que os arquivos do banco de dados serão armazenados de acordo com o codec lz4/deflate/zstd.
Execute automaticamente o benchmark para esquema em estrela:
./output/
Caso haja alguma falha, execute manualmente o benchmark conforme as seções abaixo.
Definição
clickhouse.
Ambiente
- CPU: Sapphire Rapid
- Para os requisitos do sistema, consulte System Requirements for QPL
- Para a configuração do IAA, consulte Accelerator Configuration
- Instale os módulos Python:
Gerar dados brutos
dbgen para gerar dados com 100 milhões de linhas usando os parâmetros:
-s 20
Espera-se que arquivos como *.tbl sejam gerados em ./benchmark_sample/rawdata_dir/ssb-dbgen:
Configuração do banco de dados
Connected to ClickHouse server no console, o que significa que o cliente configurou com sucesso a conexão com o servidor.
Conclua as três etapas abaixo mencionadas em Star Schema Benchmark
- Criar tabelas no ClickHouse
- Inserir dados. Aqui, use
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tblcomo dados de entrada. - Converter o “star schema” em um “flat schema” desnormalizado
lz4 acima.
[self-check]
Para cada codec (lz4/zstd/deflate), execute a consulta abaixo para confirmar que os bancos de dados foram criados com sucesso:
Benchmark com uma única instância
- Antes de iniciar o benchmark, desative o C6 e defina o governador de frequência da CPU como
performance
- Para eliminar o impacto da vinculação de memória entre soquetes, usamos
numactlpara fixar o servidor em um soquete e o cliente em outro. - Instância única significa um único servidor conectado a um único cliente
QPS_Final e colete as estatísticas
Benchmark com múltiplas instâncias
- Para reduzir o impacto da limitação de memória causada pelo excesso de threads, recomendamos executar o benchmark com múltiplas instâncias.
- Múltiplas instâncias significa usar vários servidores (2 ou 4), cada um conectado ao seu respectivo cliente.
- Os núcleos de um socket precisam ser divididos igualmente e atribuídos aos respectivos servidores.
- Para múltiplas instâncias, é necessário criar uma nova pasta para cada codec e inserir os dados seguindo etapas semelhantes às de uma instância única.
- No lado do cliente, você precisa iniciar o ClickHouse com a porta atribuída durante a criação da tabela e a inserção de dados.
- No lado do servidor, você precisa iniciar o ClickHouse com o arquivo de configuração XML específico no qual a porta foi atribuída. Todos os arquivos de configuração XML personalizados para múltiplas instâncias foram fornecidos em ./server_config.
- [TBL_FILE_NAME] representa o nome de um arquivo cujo nome corresponde à expressão regular: *. tbl em
./benchmark_sample/rawdata_dir/ssb-dbgen. --port=9001indica a porta atribuída à instância do servidor, que também está definida em config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml. Para mais instâncias, você precisa substituí-lo pelos valores 9002/9003, que correspondem às instâncias s3/s4, respectivamente. Se você não a definir, a porta padrão será 9000, que já foi usada pela primeira instância.
2, de client_stressing_test.py representa o número de instâncias. Para usar mais instâncias, você precisa substituí-lo pelo valor 3 ou 4. Este script oferece suporte a até 4 instâncias/
Agora, três logs devem ser exibidos, como esperado:
QPS_Final e colete as estatísticas.
A configuração do benchmark para 4 instâncias é semelhante à das 2 instâncias acima.
Recomendamos usar os dados do benchmark de 2 instâncias como relatório final para análise.