Synology [Tuto] Faire un test de vitesse d'écriture sur ses Volumes en SSH ( Benchmark )

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 232
1 577
278
/var/run/docker.sock
Bonjour,

Certains NAS Synology, comme le DS3615xs ( et sûrement d'autres modèles ), permettent de faire un test de ses disques dur ou SSD ( dit "benchmark" ), directement depuis le Gestionnaires de Stockage, de cette façon :
8o2vwt8.png


Malheureusement, ce n'est pas disponible sur tous les NAS Synology, par exemple, le DS918+ n'y a pas le droit :
fDLXDay.png


Nous allons donc ici, apprendre a faire ce test d'une autre manière, en SSH.

Pour faire cette manip, il vous faudra vous connecter en SSH à votre NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.

Cette manipulation, va copier un fichier dans un répertoire que nous allons lui indiquer, c'est pour cette raison que ce tuto est un bench de "Volume" et non de disques / SSDs. Si vous êtes en basic alors 1 volume = 1 disque dur, aucune différence, mais si vous êtes en RAID ou SHR, alors un volume est un ensemble de disques !

1/ La commande dd est ses paramètres
Voici la commande à exécuter, nous allons la détailler en dessous :
Code:
sudo dd bs=1M count=256 if=/dev/zero of=/volumeX/share/testx conv=fdatasync

dd => Commande Unix, permettant la copie de fichier, plus d'info ici
bs=1M => Block Size, donc taille de bloc. Ici on a choisi 1M, soit 1Mo.
count=256 => Le nombre de bloc a copier, ici 256
if=/dev/zero => L'emplacement du fichier a copier, ici avec /dev/zero, nous allons copier des "zero" binaire sur le disque.
of=/volumeX/share/testx => L'emplacement de destination de notre fichier. Qui s’appellera testx, penser a le supprimer une fois le test fini ;)
conv=fdatasync => Ce paramètre demande une vérification des données sur le disque avant "validation"

Donc dans cette commande, on demande de copier 256 bloc de 1Mo dans /volumeX/share/testx, soit un fichier de 256Mo.
volumeX/share/ est la seule partie a adapter suivant votre cas !

2/ Exemples
Exemple :
J'ai un dossier partagé "test" sur le volume 10 de mon NAS. J'aimerai faire un test d’écriture d'un fichier de 256Mo en bloc de 1Mo dessus :
Code:
sudo dd bs=1M count=256 if=/dev/zero of=/volume10/test/testx conv=fdatasync

La commande me retourne ceci :
Code:
256+0 records in
256+0 records out
268435456 bytes (268 MB) copied, 0.700357 s, 383 MB/s
Mon volume 10 a donc une vitesse d'écriture de 383Mo/s

Exemple 2 :
J'aimerai maintenant, faire un test avec 10 blocs de 256Mo, toujours dans mon dossier test sur volume10.
Code:
sudo dd bs=256M count=10 if=/dev/zero of=/volume10/test/testx conv=fdatasync

La commande me retourne ceci :
Code:
10+0 records in
10+0 records out
2684354560 bytes (2.7 GB) copied, 6.73086 s, 399 MB/s
Sur ce test mon volume10 a donc une vitesse d'écriture de 399Mo/s
 
  • J'aime
Réactions: cooper et MilesTEG
Bonjour,

En prenant le planificateur de tache de synology et utilisant l'utilisateur root et en inscrivant ce code :

sudo dd bs=256M count=10 if=/dev/zero of=/volume10/test/testx conv=fdatasync > /volume1/test/volume1.log 2>&1 &
ça fonctionne aussi sans passer par SSH
Vous trouverez un fichier volume1.log ayant inscrit le résultat dans le dossier partagé test

Sinon, pour rectifier l'erreur, ce test de performance ne concerne que le débit du disque system vu qu'en raid, le volume est plus performant
 
  • J'aime
Réactions: cooper
bon, Pour ceux qui veulent autre chose, on peu mettre cette commande en ssh, mode root

Code:
docker run -it --rm e7db/diskmark

le résultat pour mon ds1817+ est :

Code:
Configuration:
- Target: /disk
  - Drive: Unknown (Unknown, Unknown)
  - Filesystem: btrfs (, 37T)
- Profile: auto (default)
  - I/O: direct (synchronous)
  - Data: random
  - Size: 1G
  - Runtime: 5s

The benchmark is running, please wait...

Sequential 1M Q8T1:
<= Read:  481 MB/s, 481 IO/s
=> Write: 324 MB/s, 324 IO/s

Sequential 1M Q1T1:
<= Read:  500 MB/s, 500 IO/s
=> Write: 121 MB/s, 121 IO/s

Random 4K Q32T1:
<= Read:  19 MB/s, 5112 IO/s
=> Write: 26 MB/s, 6872 IO/s

Random 4K Q1T1:
<= Read:  24 MB/s, 6167 IO/s
=> Write: 5 MB/s, 1394 IO/s

✅ The benchmark is finished.

le résultat sur mon ds923+ :

Code:
Configuration:
- Target: /disk
  - Drive: Unknown (Unknown, Unknown)
  - Filesystem: btrfs (, 58T)
- Profile: auto (default)
  - I/O: direct (synchronous)
  - Data: random
  - Size: 1G
  - Runtime: 5s

The benchmark is running, please wait...

Sequential 1M Q8T1:
<= Read:  339 MB/s, 339 IO/s
=> Write: 207 MB/s, 208 IO/s

Sequential 1M Q1T1:
<= Read:  298 MB/s, 299 IO/s
=> Write: 119 MB/s, 119 IO/s

Random 4K Q32T1:
<= Read:  56 MB/s, 14405 IO/s
=> Write: 20 MB/s, 5188 IO/s

Random 4K Q1T1:
<= Read:  5 MB/s, 1333 IO/s
=> Write: 3 MB/s, 859 IO/s

✅ The benchmark is finished.
 
Un grand merci d'avoir pris le temps de réaliser ce tuto très clair que j'ai découvert suite à une discussion sur un autre sujet.

Questions, stp :
La commande docker ne fonctionne pas pour moi, mais j'imagine qu'il faut docker ou ça rien à voir ?

Et : ça fait une moyenne lecture / ecriture, pas possible d'avoir l'info séparée ?

sudo dd bs=1024M count=30 if=/dev/zero of=/volume2/XXX/1_Clients/XXX/test/testx conv=fdatasync
30+0 records in
30+0 records out
32212254720 bytes (32 GB, 30 GiB) copied, 26.2919 s, 1.2 GB/s

sudo dd bs=512M count=20 if=/dev/zero of=/volume2/XXX/1_Clients/XXX/test/testx conv=fdatasync
20+0 records in
20+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 9.32674 s, 1.2 GB/s

sudo dd bs=1M count=10000 if=/dev/zero of=/volume2/XXX/1_Clients/XXX/test/testx conv=fdatasync
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 8.44372 s, 1.2 GB/s


Je suis un peu déçu des résultats, le RAID F1 (j'ai 4 SSD) n'est pas aussi performant qu'un RAID 6 (ou le débit de chaque disque est quasi additionné), je pensais que je montrai au moins à 2Go/s.