sysbench : Lancer des benchmark sous Linux
Table des matières
Sysbench est un outil conçu pour évaluer les performances du CPU, de l'IO et de la mémoire du système.
En utilisant différents benchmarks, on pourra optimiser les systèmes en comparant les valeurs entre deux modifications.
Dans cet article, nous allons voir comment installer et utiliser sysbench.
Sur Fedora, RHEL et dérivées (EPEL nécessaire) :
Sur Debian, Ubuntu et dérivés :
Sur Gentoo et dérivés :
Une fois installé, la commande sera suivant la syntaxe :
L'évaluation des performances du CPU avec un seul thread offre un aperçu de la puissance de calcul brute d'un seul cœur. Ce test est particulièrement utile lorsqu'on souhaite évaluer les performances des applications à thread unique ou établir une référence pour les performances du CPU dans des conditions standard.
Pour faire un test sur 1 seul coeur, sur 10 secondes (ce sont les valeurs par défaut pour les bench CPU) :
Voici le résultat sur mon Pi4 :
De nombreuses applications modernes exploitent le multi-threading pour optimiser les performances et réduire le temps de traitement. Un benchmark multi-thread peut être utile pour comprendre comment le système peut gérer efficacement des processus concurrents.
L'option --threads permet de définir le nombre de threads à exécuter, et l'option --time permettra de lancer le test sur un temps plus long que 10 secondes :
Voici le résultat sur mon Pi4 :
On aura des options de test supplémentaires. pour les lister :
L'évaluation des performances de la mémoire mesure l'efficacité du mouvement des données au sein de la mémoire du système et la manière dont elle gère de grandes charges de données. Ce test est important pour les applications qui sont gourmandes en mémoire et aide à identifier les problèmes potentiels liés au débit des données et à la vitesse d'accès à la mémoire.
Pour faire un test mémoire, sur 10 secondes (ce sont les valeurs par défaut pour les bench CPU) :
Voici le résultat sur mon Pi4 :
On aura des options de test supplémentaires. pour les lister :
L'exécution d'un bench au niveau du système de fichiers évalue les performances d'entrée/sortie du stockage. Qu'on utilise des SSD, des HDD ou tout autre type de support de stockage, comprendre les vitesses de lecture/écriture et la latence peut influencer les perfs de la base de données, les temps de chargement des applications etc.
Il faudra prévoir un peu de place sur le système de fichiers à tester et on créera un dossier temporaire de travail.
Pour cela, on génère les fichiers de travail :
Cela va créer des fichiers test_file.XX où XX va de 0 à 127 par défaut pour 2Go.
On pourra changer le comportement avec les options, par exemple pour une taille totale de 100M :
Ensuite on lance les tests.
Pour un test de lecture/écriture aléatoire (rw = Read/Write) :
Ce qui donne sur le Pi4 :
Pour un test de écriture séquentiel (wr = WRite) :
Ce qui donne sur le Pi4 :
Pour nettoyer les fichiers générés, on supprime manuellement les fichiers ou on peut le faire via la commande :
Introduction
Sysbench est un outil conçu pour évaluer les performances du CPU, de l'IO et de la mémoire du système.
En utilisant différents benchmarks, on pourra optimiser les systèmes en comparant les valeurs entre deux modifications.
Dans cet article, nous allons voir comment installer et utiliser sysbench.
Installation
Sur Fedora, RHEL et dérivées (EPEL nécessaire) :
Code BASH :
sudo dnf install sysbench
Sur Debian, Ubuntu et dérivés :
Code BASH :
sudo apt install sysbench
Sur Gentoo et dérivés :
Code BASH :
sudo emerge -av app-benchmarks/sysbench
Une fois installé, la commande sera suivant la syntaxe :
Code BASH :
sysbench [OPTIONS] ... [NOM_DU_TEST] commande
Utilisation
Bench CPU
L'évaluation des performances du CPU avec un seul thread offre un aperçu de la puissance de calcul brute d'un seul cœur. Ce test est particulièrement utile lorsqu'on souhaite évaluer les performances des applications à thread unique ou établir une référence pour les performances du CPU dans des conditions standard.
Pour faire un test sur 1 seul coeur, sur 10 secondes (ce sont les valeurs par défaut pour les bench CPU) :
Code BASH :
sysbench cpu run
Voici le résultat sur mon Pi4 :
Code :
CPU speed:
events per second: 1949.80
General statistics:
total time: 10.0003s
total number of events: 19505
Latency (ms):
min: 0.51
avg: 0.51
max: 0.87
95th percentile: 0.52
sum: 9994.29
Threads fairness:
events (avg/stddev): 19505.0000/0.00
execution time (avg/stddev): 9.9943/0.00
De nombreuses applications modernes exploitent le multi-threading pour optimiser les performances et réduire le temps de traitement. Un benchmark multi-thread peut être utile pour comprendre comment le système peut gérer efficacement des processus concurrents.
L'option --threads permet de définir le nombre de threads à exécuter, et l'option --time permettra de lancer le test sur un temps plus long que 10 secondes :
Code BASH :
sysbench --threads=$(nproc) --time=60 cpu run
Voici le résultat sur mon Pi4 :
Code :
CPU speed:
events per second: 7811.31
General statistics:
total time: 60.0005s
total number of events: 468709
Latency (ms):
min: 0.51
avg: 0.51
max: 1.33
95th percentile: 0.52
sum: 239892.62
Threads fairness:
events (avg/stddev): 117177.2500/293.82
execution time (avg/stddev): 59.9732/0.00
On aura des options de test supplémentaires. pour les lister :
Code BASH :
sysbench cpu help
Bench RAM
L'évaluation des performances de la mémoire mesure l'efficacité du mouvement des données au sein de la mémoire du système et la manière dont elle gère de grandes charges de données. Ce test est important pour les applications qui sont gourmandes en mémoire et aide à identifier les problèmes potentiels liés au débit des données et à la vitesse d'accès à la mémoire.
Pour faire un test mémoire, sur 10 secondes (ce sont les valeurs par défaut pour les bench CPU) :
Code BASH :
sysbench memory run
Voici le résultat sur mon Pi4 :
Code :
Total operations: 26298659 (2628969.73 per second)
25682.28 MiB transferred (2567.35 MiB/sec)
General statistics:
total time: 10.0001s
total number of events: 26298659
Latency (ms):
min: 0.00
avg: 0.00
max: 0.32
95th percentile: 0.00
sum: 4724.46
Threads fairness:
events (avg/stddev): 26298659.0000/0.00
execution time (avg/stddev): 4.7245/0.00
On aura des options de test supplémentaires. pour les lister :
Code BASH :
sysbench memory help
Bench I/O disque
L'exécution d'un bench au niveau du système de fichiers évalue les performances d'entrée/sortie du stockage. Qu'on utilise des SSD, des HDD ou tout autre type de support de stockage, comprendre les vitesses de lecture/écriture et la latence peut influencer les perfs de la base de données, les temps de chargement des applications etc.
Il faudra prévoir un peu de place sur le système de fichiers à tester et on créera un dossier temporaire de travail.
Pour cela, on génère les fichiers de travail :
Code BASH :
sysbench fileio prepare
Cela va créer des fichiers test_file.XX où XX va de 0 à 127 par défaut pour 2Go.
On pourra changer le comportement avec les options, par exemple pour une taille totale de 100M :
Code BASH :
sysbench --file-total-size=100M fileio prepare
Ensuite on lance les tests.
Pour un test de lecture/écriture aléatoire (rw = Read/Write) :
Code BASH :
sysbench --file-test-mode=rndrw fileio run
Ce qui donne sur le Pi4 :
Code :
File operations:
reads/s: 71.08
writes/s: 47.39
fsyncs/s: 160.62
Throughput:
read, MiB/s: 1.11
written, MiB/s: 0.74
General statistics:
total time: 10.1271s
total number of events: 2699
Latency (ms):
min: 0.01
avg: 3.71
max: 285.96
95th percentile: 14.73
sum: 10003.83
Threads fairness:
events (avg/stddev): 2699.0000/0.00
execution time (avg/stddev): 10.0038/0.00
Pour un test de écriture séquentiel (wr = WRite) :
Code BASH :
sysbench --file-test-mode=seqwr fileio run
Ce qui donne sur le Pi4 :
Code :
File operations:
reads/s: 0.00
writes/s: 666.01
fsyncs/s: 856.77
Throughput:
read, MiB/s: 0.00
written, MiB/s: 10.41
General statistics:
total time: 10.0570s
total number of events: 15191
Latency (ms):
min: 0.01
avg: 0.66
max: 469.59
95th percentile: 0.45
sum: 9989.13
Threads fairness:
events (avg/stddev): 15191.0000/0.00
execution time (avg/stddev): 9.9891/0.00
Pour nettoyer les fichiers générés, on supprime manuellement les fichiers ou on peut le faire via la commande :
Code BASH :
sysbench fileio cleanup