Logiciels en ligne de commande

sysbench : Lancer des benchmark sous Linux

Table des matières

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


Si on a généré des fichiers avec des options particulières, il faudra faire le test avec ces options à nouveau :
Code BASH :
sysbench --file-total-size=100M --file-test-mode=rndrw fileio run


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
Cette page a été vue 423 fois