Mesurer vraiment la vitesse de tes disques

Après des mois de tests, j’ai abandonné CrystalDiskMark.

Diskspd de Microsoft fait mieux le travail. Le résultat est moins joli à regarder, mais les chiffres sont plus proches de la réalité. Et au final, c’est ce qui compte.

L’installation en 30 secondes

Ouvre PowerShell et colle ça :

$client = New-Object System.Net.WebClient
$client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip")
Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD
cd \diskspd\amd64

C’est fait. Maintenant tu peux mesurer.

Le test de base

Voici ma commande pour un test rapide et représentatif :



## Pour SQL Server

Si tu as un serveur SQL, les tests changent. Le disque des logs et celui des données tempdb ont des besoins différents.

### Disque pour les logs de transaction
```
.\diskspd -b60K -d60 -h -L -o32 -t4 -s -w100 -c1G f:\diskspdtest\io.dat > ..\Log-DiskF.txt
```

100% d'écritures séquentielles. C'est exactement ce que fait SQL avec ses logs.

### Disque pour tempdb
```
.\diskspd -b512K -d120 -h -L -o32 -t4 -si -w100 -c1G f:\diskspdtest\io.dat > ..\Temp-DiskF.txt
```

Des blocs plus gros, un test plus long. Tempdb travaille différemment.

### Test de lecture pure
```
.\diskspd -b2M -d60 -o32 -h -L -t4 -W -w0 f:\diskspdtest\io.dat > ..\Read-DiskF.txt

Sur mon poste avec un NVMe, ça donne des résultats qui correspondent à ce que je vois vraiment quand je travaille.

Décoder les paramètres

Le truc avec diskspd, c’est que chaque paramètre compte. Voici ce que j’utilise :

-b : Taille de bloc (ici 4K, parfait pour SQL Server)
-d : Durée en secondes (30-60 secondes suffisent)
-o : Profondeur de file d’attente par thread
-t : Nombre de threads
-h : Désactive les caches (essentiel pour tester vraiment)
-r : Test aléatoire (sinon c’est séquentiel)
-w : Pourcentage d’écritures (25 = 25% écritures, 75% lectures)
-Z : Taille du tampon avec données aléatoires
-L : Capture la latence (indispensable)
-c : Crée le fichier de test

N’oublie pas de créer ton dossier de test sur chaque disque :

md f:\diskspdtest 

Pour SQL Server

Si tu as un serveur SQL, les tests changent. Le disque des logs et celui des données tempdb ont des besoins différents.

Disque pour les logs de transaction

.\diskspd -b60K -d60 -h -L -o32 -t4 -s -w100 -c1G f:\diskspdtest\io.dat > ..\Log-DiskF.txt

100% d’écritures séquentielles. C’est exactement ce que fait SQL avec ses logs.

Disque pour tempdb

.\diskspd -b512K -d120 -h -L -o32 -t4 -si -w100 -c1G f:\diskspdtest\io.dat > ..\Temp-DiskF.txt

Des blocs plus gros, un test plus long. Tempdb travaille différemment.

Test de lecture pure


.\diskspd -b2M -d60 -o32 -h -L -t4 -W -w0 f:\diskspdtest\io.dat > ..\Read-DiskF.txt

Blocs de 2MB, zéro écriture. Les valeurs de write seront à 0, c’est normal.

Ce qui compte vraiment

Il existe des centaines de combinaisons possibles. Le secret ? Tester ce qui correspond à ton usage réel.

Veeam a ses propres tests pour la sauvegarde. SQL Server a ses patterns spécifiques. Ne teste pas au hasard : teste ce que tu fais vraiment.

Deux exemples du terrain

VMware avec une carte RAID mal configurée

Avant : performances catastrophiques


Après : multiplication par 10

C’est énorme. Mais ça montre surtout qu’une mauvaise config coûte cher.

Proxmox avec RAID ZFS

Mon HP MicroServer Gen11. Serveur de préparation, quasi inactif. Pourtant, deux tests diskspd ont suffi pour charger le système.

Par contre en échange d’une charge processeur

Comprendre la latence

Je m’inspire de Paul Randal pour interpréter les résultats :

  • Excellent : < 1ms
  • Très bon : < 5ms
  • Bon : 5-10ms
  • Médiocre : 10-20ms
  • Mauvais : 20-100ms
  • Catastrophique : 100-500ms

La latence, c’est ce que tes utilisateurs ressentent. Les IOPS impressionnent sur les fiches techniques, mais la latence tue l’expérience.


Sources

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *