Comment évaluer les performances d’un disque sous Linux
Vous venez d’acheter le dernier et le meilleur SDD ? Ou mis à niveau la carte mémoire microSD de votre téléphone ? Avant de commencer à utiliser votre nouveau matériel, vous pouvez exécuter une vérification des performances du disque. La vitesse d’écriture et de lecture est-elle conforme aux spécifications du fabricant ? Comment vos performances se comparent-elles à celles des autres ? La clé USB de 1 To que vous avez achetée sur un site d’enchères en Chine est-elle vraiment aussi rapide que l’annonce l’indiquait ? Découvrons-le !
Dans ce tutoriel, vous allez apprendre :
- Quels sont les outils de mesure des performances de disque CLI (Command Line Interface : your Bash ou autre environnement de terminal) disponibles ?
- Quel outil de mesure des performances de disque GUI (Graphical User Interface : your desktop environment) recommandons-nous ?
- Comment mesurer efficacement les performances d’un disque de manière simple
- Découvrez et apprenez à l’aide de divers exemples de mesure des performances des disques
- Comment se faire une idée de la qualité du matériel disque/flash que vous possédez
Comment évaluer les performances d’un disque sous Linux
Configuration logicielle requise et conventions utilisées
| Catégorie | Exigences, conventions ou version du logiciel utilisé |
|---|---|
| Système | N’importe quel GNU/Linux |
| Logiciel | N/A |
| Autre | Accès privilégié à votre système Linux en tant que root ou via la commande sudo. |
Comment évaluer les performances d’un disque sous Linux – Outils CLI
Pour commencer, branchez votre disque sur votre machine. S’il s’agit d’un SSD (Solid State Drive) ou d’un HDD (Hard Disk Drive), vous voudrez éteindre votre ordinateur, insérer le lecteur et redémarrer le système. Pour les cartes SD, vous utiliserez généralement un lecteur de carte SD que vous pouvez insérer via un port USB dans votre ordinateur. Pour les clés USB/clés USB, il suffit de les insérer via un port USB dans votre ordinateur.
Ensuite, accédez à votre terminal/invite de commande (sur Ubuntu
par exemple, vous pouvez le faire en cliquant simplement sur Activités en haut à gauche de l’écran > tapez Terminal et cliquez sur l’icône Terminal).
Sur la ligne de commande, tapez lsblk :
lsblk | grep sdc
sdc 8:32 1 119.3G 0 disk
Ici, nous exécutons lsblk : vous pouvez lire ceci comme ls blk : c’est-à-dire faire une liste similaire à ls ('Directory listing') sur tous les volumes en vrac (blk).
Comme vous pouvez le voir, un lecteur 119.3G est disponible. Ce disque est commercialisé sous le nom de 128 Go, et c’est une marque majeure. Il n’est pas rare qu’un disque de 128 Go n’affiche que ~115-120G dans lsblk. En effet, lsblk vous donnera le résultat en Gibibyte (1 Gibibyte=1073700000 octets) alors que les fabricants de disques vendent leurs disques en utilisant la norme « Gigabyte » (un Gigabyte=1000000000 octets).
Nous pouvons voir dans ce cas que cela fonctionne presque parfaitement lorsque nous regardons la taille basée sur l’octet :
lsblk -b | grep sdc
sdc 8:32 1 128043712512 0 disk
Et 119,3 (selon lsblk)=119,3 x 1073700000=128092410000. Ainsi, lorsque vous achetez le prochain disque, lisez les petits caractères au dos et vérifiez s’ils utilisent la norme « 1000 » octets par kilo-octet ou la norme « 1024 octets » par kilo-octet. Presque toujours, ce sera le premier.
Certains fabricants de SD incluent même la taille d’une zone spéciale réservée pour le nivellement de l’usure sur la carte SD comme espace disque principal, mais cet espace n’est pas accessible à l’utilisateur, et vous pouvez vous retrouver par exemple avec seulement 115G s’affichant comme utilisable. Acheteur, méfiez-vous.
Lorsque vous exécutez lsblk pour la première fois, vous voudrez prendre le temps de regarder les différents disques disponibles. Le moyen le plus simple de localiser un volume spécifique, par exemple une clé USB qui vient d’être insérée, est de rechercher une taille qui correspond approximativement à la taille du disque inséré.
Maintenant que nous savons que notre nouveau disque est étiqueté sdc (Linux utilise sda, sdb, sdc etc. en fonction des disques détectés au démarrage et/ou insérés), nous savons également où se trouve le descripteur de fichier de périphérique pour ce périphérique (il est toujours dans /dev) :
ls /dev/sdc
/dev/sdc
De plus, s’il y avait déjà des partitions sur le disque, cela s’afficherait différemment, comme ceci :
lsblk -b | grep sdc
sdc 8:32 1 128043712512 0 disk
└─sdc1 8:33 1 128042663936 0 part
Vous pouvez voir comment il a le disque (/dev/sdc – indiqué par 'disk'), et la première partition (/dev/sdc1 – indiquée par 'part'). Logiquement, la partition est légèrement plus petite que la taille totale du disque en raison de l’alignement/de l’espace réservé pour la table de partition, etc.
Enfin, si vous disposez d’autres types de périphériques de stockage/disque, par exemple un lecteur NVMe, cela peut se présenter par exemple comme suit :
lsblk | grep nvme
nvme0n1 259:0 0 701.3G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
├─nvme0n1p2 259:2 0 732M 0 part /boot
└─nvme0n1p3 259:3 0 700G 0 part
Ici, nous avons un lecteur NVMe qui héberge 3 partitions (p1, p2, p3) et les deux premières sont de petites partitions de démarrage et la troisième est notre principale partition de données. Comme cette partition est en cours d’utilisation, nous ne pourrons pas y avoir d’accès exclusif ou non monté. Cela deviendra pertinent lorsque nous aborderons certains des outils ci-dessous.
Armé de ces informations, il est désormais facile d’exécuter une vérification de base des performances du disque sur ce disque à l’aide de hdparm :
sudo hdparm -Ttv /dev/sdc1
/dev/sdc1:
multcount = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 15567/255/63, sectors = 250083328, start = 2048
Timing cached reads: 36928 MB in 1.99 seconds = 18531.46 MB/sec
Timing buffered disk reads: 276 MB in 3.02 seconds = 91.37 MB/sec
Nous pouvons utiliser hdparm pour effectuer des minutages à des fins de benchmark et de comparaison, en utilisant les options -T (effectuer des minutages des lectures de cache) et -t (effectuer des minutages de lectures de périphériques).
Comme vous pouvez le voir, nos lectures en cache arrivent extrêmement rapidement (comme on peut s’y attendre, elles sont mises en cache), et elles ne sont pas nécessairement un bon nombre à utiliser, à moins que vous ne testiez spécifiquement les performances du cache.
Le nombre le plus utile est celui des lectures de disque tampon, qui s’élèvent à 91,37 Mo/s. Pas mal car le fabricant de ce disque n’a même pas annoncé la vitesse d’écriture.
Comme l’indique le manuel pour hdparm (options -Tt), Pour des résultats significatifs, cette opération doit être répétée 2 à 3 fois sur un système autrement inactif (pas d’autres processus actifs) avec au moins quelques mégaoctets de mémoire libre, nous devons exécuter un autre test pour être sûrs de nos résultats.
Un test répété, cette fois avec uniquement des lectures tamponnées et une sortie un peu plus verbeuse (obtenue en ajoutant l’option '-v') :
sudo hdparm -tv /dev/sdc1
/dev/sdc1:
multcount = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 15567/255/63, sectors = 250083328, start = 2048
Timing buffered disk reads: 276 MB in 3.01 seconds = 91.54 MB/sec
Comme nous pouvons le voir, le nombre rapporté par hdparm est assez fiable.
Jusqu’à présent, nous n’avons discuté que des vitesses de lecture. Jetons maintenant un coup d’œil aux vitesses d’écriture. Pour cela, nous utiliserons dd.
La façon la plus sûre de le faire est de créer d’abord un système de fichiers (en dehors du cadre de cet article - pour faciliter la tâche, vous pouvez utiliser un outil d’interface graphique comme GParted), puis de mesurer les performances avec dd
. Notez que le type de système de fichiers (par exemple ext4, FAT32, ...) affectera les performances, la convivialité et la sécurité de votre disque.
sudo su
cd /tmp
mkdir mnt
mount /dev/sdc1 ./mnt # Assumes there is at least 1 partition defined on /dev/sdc. In this case there is, and it is an ext4 partition.
sync
echo 3 > /proc/sys/vm/drop_caches
dd if=/dev/zero of=/tmp/mnt/temp oflag=direct bs=128k count=1G # Our actual performance test
rm -f /tmp/mnt/temp
Le test de performance montrera ce qui suit :
dd if=/dev/zero of=/tmp/mnt/temp oflag=direct bs=128k count=16k
16384+0 records in
16384+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 32.1541 s, 66.8 MB/s
Comme nous pouvons le voir, notre disque dur de 128 Go fonctionne raisonnablement bien avec une vitesse d’écriture de 66,8 Mo/s. vérifions deux fois la taille (fichier de 4 Go) en utilisant l’option count=32k :
dd if=/dev/zero of=/tmp/mnt/temp oflag=direct bs=128k count=32k
32768+0 records in
32768+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 66.7746 s, 64.3 MB/s
Regardons donc tout ce que nous avons fait ici.
Tout d’abord, nous avons élevé les privilèges au niveau sudo/root sudo su, puis nous avons créé un dossier mnt dans /tmp. Ce sera notre « point de montage » à partir duquel nous accéderons à notre disque de 128 Go (après l’avoir monté à l’aide de mount /dev/sdc1 ./mnt qui mappe effectivement la première partition sdc1au dossier ./mnt (/tmp/mnt)).
Après cela, nous nous sommes assurés que tous les caches de fichiers de notre système étaient synchronisés/vides à l’aide de sync. Il s’agit également d’une commande pratique à exécuter avant de monter et de retirer vos clés USB, car elle garantit que toutes les données qui étaient écrites sur votre clé USB sont vidées sur le disque au lieu de rester en mémoire. Si vous démontez un disque dans le bureau/l’interface graphique, il exécutera une synchronisation pour vous en arrière-plan avant de démonter le lecteur et de vous dire par la suite que le disque est enregistré pour être supprimé.
Ensuite, nous nous assurons que tous les caches système restants sont supprimés de la mémoire en exécutant echo 3 > /proc/sys/vm/drop_caches. Bien que les deux dernières commandes puissent être laissées de côté, d’autant plus que nous utilisons /dev/zero comme périphérique d’entrée (un périphérique virtuel qui continue à produire des zéros à chaque fois qu’on y accède), il est agréable d’avoir le système « super propre et prêt » pour effectuer un test de performance du disque ! Fondamentalement, nous nous assurons qu’il y aura le moins de mise en cache possible.
Ensuite, nous avons notre principal test de performance avec dd. La syntaxe de dd est assez simple, mais différente de la plupart des autres outils en ligne de commande. Examinons-le en détail :
if=/dev/zero: Utilise le périphérique /dev/zero comme fichier d’entréeof=/tmp/mnt/temp: Utilisez le fichier 'temp', situé sur la partition(/disk) que nous venons de monter sous /tmp/mnt comme fichier de sortieoflag=direct: définit l’indicateur de sortie 'direct' en s’assurant que nous 'utilisons des E/S directes pour les données', ce qui éliminera la plupart, sinon la totalité, de la mise en cache du système d’exploitation.bs=128k: écrivez jusqu’à 128k octets à la fois. La valeur par défaut de 512 est beaucoup trop petite et n’entraînerait pas l’optimisation de la vitesse de débit possiblecount=16k: copie les blocs d’entrée de 16k, ce qui représente un total d’environ 2,1 Go ou 2,0 Gio. Vous pouvez ajuster cette variable en fonction de la taille de votre disque et de vos exigences de précision des performances du disque (plus c’est mieux : plus fiable)
Et enfin, nous supprimons le fichier dans lequel nous avons écrit avec rm -f /tmp/mnt/temp.
Notez que si votre disque était vide, et seulement si vous êtes sûr qu’il est complètement vide et ne contient aucune donnée précieuse, vous pouvez faire quelque chose du genre :
of=/dev/sdc1 ou même of=/dev/sdc pour exécuter un test de vitesse de disque à accès exclusif/non monté.C’est une façon très pure de tester les performances du disque, mais ( !) Soyez très prudent lorsque vous l’utilisez, car tout périphérique ou partition spécifié dans of=... sera certainement écrasé par ce qui provient de n’importe quel if=... que vous spécifiez. Prends soin de toi.
Comment évaluer les performances d’un disque sous Linux – Outil GUI
Maintenant que vous savez comment exécuter un test de performance de disque à partir de la ligne de commande, à l’aide des outils de terminal/CLI hdparm (pour la lecture) et dd (pour l’écriture), examinons maintenant l’utilisation d’un outil plus visuel/graphique dans l’environnement de bureau.
Si vous utilisez Ubuntu, le système d’exploitation de bureau Linux le plus courant, le système d’exploitation intègre d’excellentes performances de disque utilitaire. C’est également l’un des rares outils de test graphique des performances de disque disponibles sous Linux. La plupart des autres outils sont basés sur la ligne de commande ou n’ont pas d’équivalent Linux à leurs homologues Microsoft Windows. Par exemple, il n’existe pas d’équivalent graphique pour l’utilitaire de performances de disque Windows CrystalDiskMark.
Cliquez simplement sur Activités en haut à gauche de l’écran et tapez disques qui vous montreront l’icône des disques (montrant une image d’un disque dur). Cliquez dessus pour ouvrir l’utilitaire Disques, qui dispose d’un outil de référence de disque intégré.
Une fois ouvert, utilisez un simple clic pour sélectionner votre disque sur le côté gauche de la fenêtre de dialogue, puis cliquez sur les 3 points verticaux près du coin supérieur droit de la fenêtre de dialogue (à gauche du bouton de réduction). À partir de là, sélectionnez l’option Disque de benchmark... pour ouvrir l’outil de benchmarking pour le lecteur sélectionné. La fenêtre « Benchmark » s’ouvre.
Cliquez sur Démarrer le benchmark... pour ouvrir la boîte de dialogue de configuration nommée Paramètres du benchmark. À partir de là, je vous recommande de définir les options suivantes :
taux de transfert:
- Nombre d’échantillons : 10
- Taille de l’échantillon (Mio) : 1000 (c’est aussi le maximum)
- Effectuer le benchmark d’écriture : coché (lisez d’abord les notes ci-dessous avant de commencer le benchmark !)
Temps d’accès :
- Nombre d’échantillons : 1000
Cliquez ensuite sur Démarrer l’analyse comparative... pour démarrer le test. Jetons un coup d’œil aux paramètres que nous avons effectués ici.
La taille maximale de l’échantillon est de 1000 Mio, et cela (1 048 576 000 octets) est un excellent nombre à tester, mais cela aurait été formidable si nous avions été autorisés à sélectionner des tailles comme 2 Go et 4 Go comme nous l’avons fait dans notre test d’écriture de l’utilitaire de disque de ligne de commande dd ci-dessus. Nous allons prendre 10 échantillons, c’est-à-dire 10 exécutions de la lecture et de l’écriture de 1 Go.
Cet utilitaire graphique de mesure des performances du disque est très intelligent en ce sens qu’il ne détruira pas les données sur votre disque, comme par exemple dd peut le faire si vous spécifiez à tort le paramètre of= comme étant un disque ou une partition au lieu d’un fichier.
La façon dont il le fait est – lorsque vous choisissez d’effectuer un benchmark d’écriture (comme nous l’avons fait ici) – c’est en lisant les données du disque en mode d’accès exclusif (nous y reviendrons bientôt), puis en réécrivant les mêmes données au même endroit ! À moins qu’une erreur d’écriture très étrange ne se produise, il est peu probable que cela endommage les données de votre disque (bien que ce ne soit pas garanti !). Si vous passez votre curseur sur le paramètre de référence d’écriture Effect, vous pouvez en savoir un peu plus à ce sujet.
L’accès exclusif signifie simplement que la sélection de l’option d’écriture garantira que votre disque est démonté avant le test, ce qui le rendra disponible uniquement pour cet utilitaire sans que vous puissiez y accéder de n’importe où ailleurs pendant que le test est en cours. Ceci est nécessaire pour que le test d’écriture s’exécute correctement. C’est ce que vous voudriez dans tous les cas ; C’est-à-dire que vous ne voulez pas accéder à votre disque (ou copier des données vers/depuis le disque) pendant que le test est en cours, car cela pourrait fausser considérablement les résultats.
Nous demandons également de prendre 1000 échantillons de temps d’accès, c’est-à-dire le temps qu’il faut au système d’exploitation pour accéder au disque. Pour les cartes SD, ce sera assez faible, par exemple notre carte de 128 Go a donné un temps d’accès moyen de seulement 0,71 ms sur 1000 échantillons, alors qu’un disque plus lent peut entraîner des temps d’accès de 20 à 100 ms.
Différence de performance entre la carte SD et le disque dur
La capture d’écran ci-dessus montre les différences nettes de sortie entre le test de la carte SD de 128 Go et un disque dur de 3 To.
Conclusion
Armé des compétences nécessaires pour mesurer les performances de lecture et d’écriture de disque, quel sera votre prochain test de performance de disque ? N’hésitez pas à nous le faire savoir dans les commentaires ci-dessous, et si vous finissez par tester ou évaluer les SSD, NVMe, SD ou autres stockages flash modernes, veuillez publier certains des résultats que vous voyez !

