- Assurez-vous que votre machine hôte remplit les prérequis de QPL
- deflate_qpl est activé par défaut lors de la compilation avec CMake. Si vous l’avez modifié par inadvertance, veuillez vérifier que l’indicateur de compilation est bien défini : ENABLE_QPL=1
- Pour les exigences générales, veuillez consulter les instructions générales de compilation de ClickHouse
Liste des fichiers
benchmark_sample dans qpl-cmake fournit des exemples pour exécuter le benchmark avec des scripts Python :
client_scripts contient des scripts Python pour exécuter un benchmark typique, par exemple :
client_stressing_test.py: script Python pour le test de charge des requêtes avec [1~4] instances de serveur.queries_ssb.sql: ce fichier répertorie toutes les requêtes du Star Schema Benchmarkallin1_ssb.sh: ce script shell exécute automatiquement l’ensemble du workflow du benchmark en mode all in one.
database_files signifie que les fichiers de base de données seront stockés selon le codec lz4/deflate/zstd.
Exécuter automatiquement le benchmark du Star Schema :
./output/
En cas d’échec, veuillez exécuter manuellement le benchmark comme indiqué dans les sections ci-dessous.
Définition
Environnement
- CPU : Sapphire Rapid
- Pour connaître les exigences relatives au système d’exploitation, consultez System Requirements for QPL
- Pour la configuration d’IAA, consultez Accelerator Configuration
- Installez les modules Python :
Générer des données brutes
dbgen pour générer 100 millions de lignes de données avec le paramètre :
-s 20
Les fichiers tels que *.tbl devraient être générés dans ./benchmark_sample/rawdata_dir/ssb-dbgen :
Configuration de la base de données
Connected to ClickHouse server dans la console, ce qui signifie que le client a correctement établi la connexion avec le serveur.
Suivez les trois étapes ci-dessous décrites dans Star Schema Benchmark
- Créer des tables dans ClickHouse
- Insérer les données. Utilisez ici
./benchmark_sample/rawdata_dir/ssb-dbgen/*.tblcomme données d’entrée. - Convertir le “schéma en étoile” en “schéma plat” dénormalisé
lz4
[self-check]
Pour chaque codec (lz4/zstd/deflate), exécutez la requête ci-dessous afin de vous assurer que les bases de données ont bien été créées :
Benchmark sur une seule instance
- Avant de démarrer le benchmark, veuillez désactiver C6 et régler le gouverneur de fréquence du CPU sur
performance
- Pour éliminer l’impact des contraintes mémoire entre les sockets, nous utilisons
numactlpour affecter le serveur à un socket et le client à un autre socket. - Une instance unique signifie qu’un seul serveur est connecté à un seul client
QPS_Final et relever les statistiques
Benchmark avec plusieurs instances
- Pour réduire l’impact des limitations mémoire lorsqu’un trop grand nombre de threads est utilisé, nous recommandons d’exécuter le benchmark avec plusieurs instances.
- Plusieurs instances signifie que plusieurs serveurs (2 ou 4) sont connectés chacun à leur client respectif.
- Les cœurs d’un socket doivent être répartis équitablement et attribués aux différents serveurs.
- Avec plusieurs instances, il faut créer un nouveau dossier pour chaque codec et insérer le jeu de données en suivant des étapes similaires à celles d’une instance unique.
- Côté client, vous devez lancer ClickHouse avec le port attribué lors de la création de la table et de l’insertion des données.
- Côté serveur, vous devez lancer ClickHouse avec le fichier de config XML spécifique dans lequel le port a été attribué. Tous les fichiers de config XML personnalisés pour plusieurs instances sont fournis dans ./server_config.
- [TBL_FILE_NAME] représente le nom d’un fichier correspondant à l’expression régulière : *. tbl sous
./benchmark_sample/rawdata_dir/ssb-dbgen. --port=9001désigne le port attribué à l’instance de serveur, également défini dans config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml. Pour davantage d’instances, vous devez le remplacer par la valeur 9002/9003, qui correspond respectivement aux instances s3/s4. Si vous ne le définissez pas, le port utilisé par défaut est 9000, déjà attribué à la première instance.
2 de client_stressing_test.py correspond au nombre d’instances. Pour utiliser davantage d’instances, vous devez le remplacer par la valeur 3 ou 4. Ce script prend en charge jusqu’à 4 instances/
À présent, trois logs devraient s’afficher comme prévu :
QPS_Final et recueillir les statistiques.
La configuration du benchmark pour 4 instances est similaire à celle des 2 instances ci-dessus.
Nous recommandons d’utiliser les données du benchmark sur 2 instances comme rapport final pour examen.