Déterminer les performances de votre disque ou de votre baie de stockage sous Linux peut s’avérer complexe, surtout si vous souhaitez avoir une vision claire avant de lancer des charges de travail importantes. Parfois, votre configuration semble correcte jusqu’à ce que des tests de performance révèlent des problèmes d’IOPS ou de latence. Cet article propose des méthodes concrètes et pratiques pour mesurer ces performances et ainsi connaître les capacités réelles de votre stockage. Qu’il s’agisse de vérifier si vos SSD fonctionnent comme annoncé ou si votre configuration RAID nécessite un réglage, ces méthodes vous éviteront bien des tâtonnements. Certes, les lignes de commande peuvent paraître intimidantes au premier abord, mais une fois maîtrisées, il est assez simple d’exécuter des tests de performance fiables et d’obtenir des résultats qui, pour le meilleur ou pour le pire, reflètent fidèlement le fonctionnement interne du système.
Comment mesurer les performances et la latence du stockage sous Linux
Utilisation de FIO (E/S flexibles) pour les tests de performance de disque
Tout d’abord, FIO est l’outil de référence pour tester les IOPS disque, car il simule très fidèlement les charges de travail réelles. Il est disponible sur la plupart des distributions Linux, mais son installation manuelle est parfois nécessaire. Sous RHEL ou CentOS, il peut être nécessaire d’activer le dépôt EPEL (commande : `yum install epel-release -y` ) avant d’installer fio. Sous Debian/Ubuntu, il suffit d’exécuter `apt-get install fio`. Une fois installé, sélectionnez le disque ou la partition à tester. Généralement, il suffit de monter le disque ou le LUN et d’exécuter les commandes fio dans ce répertoire.
Pourquoi c’est utile : Cela simule des opérations de lecture et d’écriture avec des tailles de blocs, des profondeurs de threads et des combinaisons spécifiques, ce qui vous donne une idée assez précise des capacités du stockage. Lorsque vous exécutez une commande classique comme :
# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75
En gros, vous demandez à fio d’effectuer des tests de lecture/écriture aléatoires avec des blocs de 4 Ko, une profondeur de file d’attente de 64 et un fichier de 8 Go. Vous devriez obtenir des résultats comme celui-ci :
- Lecture : 3 280 Mio/s, IOPS d’environ 83 000
- Écriture : 110 Mio/s, IOPS proches de 28 000
Ce type de résultat est extrêmement utile. Sur les SSD, les valeurs sont bien supérieures à celles des disques durs classiques, mais même sur les disques SATA, on obtient une base de référence correcte. Parfois, on effectue le même test en lecture seule —readwrite=randreadou en écriture seule randwritepour identifier les performances optimales de chaque disque. Attention : si vous effectuez ce test sur un système de fichiers monté, il ne prend pas en compte les effets du cache ni les autres activités système ; les résultats peuvent donc légèrement varier d’une exécution à l’autre. Il est conseillé de réaliser le test plusieurs fois et de calculer la moyenne des résultats.
Tests avec les fichiers de configuration FIO
Comme la saisie de longues commandes à la volée peut être fastidieuse, la création d’un fichier de configuration permet d’automatiser et de répéter les tests. Il suffit de créer un fichier, par exemple read.fio, dans votre dossier, et d’y ajouter un contenu comme celui-ci :
[global] rw=randread size=8G filename=/path/to/your/mount/point/testfio ioengine=libaio iodepth=4 invalidate=1 direct=1 [bgread] rw=randread iodepth=64
Remplacez `/path/to/your/mount/point` par votre répertoire réel. Ensuite, exécutez simplement `fio read.fio` pour tester la vitesse de lecture. Même principe pour les tests d’écriture : il suffit de modifier rw=randwritela section globale. C’est une méthode pratique pour réaliser des tests de performance reproductibles sans avoir à ressaisir toutes les options à chaque fois.
Mesure de la latence du disque avec Ioping
Les IOPS sont importantes, mais il est parfois encore plus crucial de connaître la durée de chaque requête. C’est là qu’intervient ioping. Vous pourriez penser que votre disque est rapide, mais constater des temps de réponse lents en cas de forte charge ; il s’agit souvent d’un problème de latence plus que de débit. Installez-le via yum ou apt-get. Sur RHEL/CentOS :
# yum install ioping -y
Et pour Debian/Ubuntu :
# apt-get install ioping
Effectuez un test rapide sur votre disque :
# ioping -c 20 /tmp/
Le résultat affichera les temps de réponse en microsecondes ( µs ) ou en millisecondes ( ms ).Plus la valeur est basse, mieux c’est ; idéalement, moins de 1 ms pour un SSD performant. Voici un exemple typique :
4 KiB <<< /tmp/ (ext4 /dev/sda1): request=1 time=1.55 ms...19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us
L’indicateur clé est la latence moyenne — ici, d’environ 0, 3 ms, ce qui est excellent pour le stockage back-end. Pour une estimation rapide du délai, divisez les microsecondes par 1 000 et vous obtiendrez un résultat en millisecondes.
Ce type de test n’est pas parfait — les performances des disques peuvent varier en fonction de leur charge, des autres processus en cours d’exécution, etc. Mais effectuer une vérification rapide au préalable peut vous en apprendre beaucoup sur l’état de votre configuration : est-elle prête pour la production ou nécessite-t-elle quelques réglages ?
Oui, Linux propose des outils qui peuvent paraître un peu obscurs au premier abord, mais avec un peu de patience, ils révèlent beaucoup de choses sur les performances réelles de votre stockage. Ne soyez pas surpris si les résultats fluctuent légèrement, ou si certaines commandes nécessitent des ajustements selon votre configuration : Linux a parfois tendance à compliquer les choses.