{{tag>sysadmin hardware software linux hdd benchmark todo}}
====== Hdd: Benchmark et tests de débits E/S ======
===== Généralités =====
Pour évaluer un support de stockage, on utilise couramment les **IOPS** ((**I**npout/**O**utput **P**er **S**econd)).
Les tests proposent en général deux types de mesures qui reflètent l'usage courant :
* Lecture séquentielle : qui est employée sur les grands volumes de données ;
* Lecture directe (Random access)
{{random_vs_sequential_access.png}}
Ci-dessous quelques ordres de grandeurs sur les débits attendus selon les technologies de disques.
==== Disque dur / HDD (mécanique) ====
Débits des disques dur mécaniques actuels en fonction de la vitesse de rotation.
^ Tour par minutes (RPM) ^ Débit |
| 5400 | 100 à 150 Mo/s |
| 7200 | 150 à 200 Mo/s |
| 10000 | 200 à 250 Mo/s |
| 15000 | 250 à 300 Mo/s |
Ce qui peut affecter la vitesse d’un disque mécanique (HDD) :
* La **vitesse de rotation** (en tours par minute ou RPM) : Facteur principal des performances d’un HDD ;
* **Densité** de données : Les disques durs avec une densité de données plus élevée peuvent avoir des débits plus élevés ;
* **Cache** : La taille du cache peut affecter les performances en lecture/écriture ;
* Technologies de disque : Les innovations technologiques, telles que le **SMR** (**S**hingled **M**agnetic **R**ecording), peuvent également influencer les débits.
==== SSD ====
Le tableau des débits en lecture et écriture des SSD en fonction du type de SSD.
^ Type de SSD ^ Débit en lecture ^ Débit en écriture |
| SATA | 500 à 550 Mo/s | 450 à 500 Mo/s |
| NVMe PC 3.0 | 1 500 à 3 500 Mo/s | 1 500 à 3 000 Mo/s |
| NVMe PC 4.0 | 5 000 à 7 500 Mo/s | 4 000 à 7 000 Mo/s |
| NVMe PC 5.0 | 14 000 Mo/s | 12 000 Mo/s |
Les SSD U.2 et M.2 peuvent utiliser l’interface NVMe et offrent des performances similaires aux SSD NVMe mentionnés ci-dessus, selon la version PCIe utilisée.
Les facteurs sur la vitesse d’un SSD :
* Type de mémoire flash : Les **types de mémoire flash NAND** (**SLC**, **MLC**, **TLC**, **QLC**) affectent les débits et la durabilité. Par exemple, la mémoire **SLC** est plus rapide et plus durable, mais aussi plus chère que la **TLC** ou **QLC**;
* **Contrôleur** : Le contrôleur du SSD joue un rôle crucial dans la gestion des données et peut influencer considérablement les performances ;
* **Cache DRAM** : Les SSD avec cache DRAM tendent à avoir des performances meilleures en raison de l’amélioration de la gestion des données en transit ;
* Charge de travail : Les performances peuvent varier en fonction de la charge de travail, notamment entre des charges de travail séquentielles et aléatoires.
===== GNU/Linux =====
==== Quelques outils ====
* hdparm
* dd
* ioping
* iostat
* fio
==== Procédure ====
hdparm permet de déterminer quels modes de transferts sont supportés le périphérique:
hdparm -I /dev/sdb
Le retour de la commande est de la forme:
/dev/sdb:
ATA device, with non-removable media
Model Number: TOSHIBA MQ04UBB400
Serial Number: 996AT0EZT
Firmware Revision: JS000U
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2
.6, SATA Rev 3.0
...
Commands/features:
...
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
Dans cet exemple le périphérique supporte différents modes de transports (série et différentes version de sata), les débit disponibles supportés par le système sont de 1,5Gb/s et 3Gb/s.
Pour tester le débit effectif:
hdparm -tT /dev/sdb
Ce test lit et écrit dans les caches de lecture/écriture du système sans faire d'accès direct au disque. Il mesure pour l'essentiel la bande passante disponible entre processeur et la mémoire cache sur le système.
==== dd ====
Tests d'écriture /lecture directe via dd
dd if=/dev/zero of=test.raw oflag=direct bs=1M count=512 conv=fdatasync
Entre les tests de lecture consécutif, vider le cache mémoire pour obliger la lecture depuis les disques:
sudo sync
echo 1 | sudo tee /proc/sys/vm/drop_caches
#lecture
dd if=test.raw of=/dev/null
===== Windows =====
* [[https://crystalmark.info/en/download/|CrystalDiskMark]]
* AS SSD Benchmark
* Parkdale
* Les commandes **winsat** et **diskspd**
La commande **winsat** (**Win**dows **S**ystem **A**ssessment **T**ool) est un outil intégré à Windows qui permet d’évaluer les performances de différents composants matériels du système. Elle permet d’effectuer un test de débit d’un lecteur de disque même si ce n’est pas la façon la plus précise, elle apporte des éléments de réponse.
winsat disk -drive c
**DISKSPD**, est un utilitaire en ligne de commande qui permet de mesurer précisément les performances des disques en simulant divers types de charges de travail. DISKSPD est un outil en ligne de commande de génération d’E/S pour le micro-benchmarking qui offre des fonctionnalités avancées pour tester la vitesse de lecture, d’écriture, la latence, et les IOPS de votre stockage.
diskspd -c1G -d10 -w0 -r -b4k -o32 -t4 C:\disk\testfile.dat
===== Références =====
* https://wiki.mikejung.biz/Benchmarking
* https://unixmen.com/how-to-measure-disk-performance-with-fio-and-ioping/
* https://linuxconfig.org/how-to-benchmark-disk-performance-on-linux
* https://www.malekal.com/mesurer-la-vitesse-de-transfert-de-son-disque-dur-ssd-tester-performances/
* https://fr.wikipedia.org/wiki/IOPS