3 votes

Vitesses de lecture et d'écriture lentes sur FreeBSD ZFS

Mon serveur de stockage domestique, qui se compose actuellement de 6 disques Seagate de 3 To, de 12 Go de RAM DDR3 et d'un Core i3 540, a des performances vraiment médiocres lorsqu'il lit ou écrit dans le raidz2 que j'ai mis en place.

L'utilisation /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10 :

10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)

et inversement :

10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)

ce qui se traduit par une vitesse d'écriture de 46 Mo/s et une vitesse de lecture de 95 Mo/s. Cela semble un peu lent. Ou est-ce tout à fait normal ?

Remerciements

Tobias Timpe

4voto

Matt Simerson Points 399

Avec la commande ci-dessus, vous ne testez pas les performances d'écriture du disque. Vous testez un ensemble de facteurs, mais surtout la latence du contrôleur et du disque. Pour tester les performances de lecture du disque, vous devez faire des pieds et des mains pour exclure la mise en cache du disque de vos tests, ce qui n'est pas trivial avec ZFS car cela implique de désactiver le cache ARC. Il est beaucoup plus facile de tester les performances en écriture : écrivez des fichiers beaucoup plus volumineux, de préférence d'une taille supérieure à la mémoire vive intégrée de votre système.

J'ai exécuté cette commande sur mon serveur de fichiers ZFS domestique (Core i3-4130T avec WDC WD80 en miroir) :

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000
10240000000 bytes transferred in 55 secs (186900359 bytes/sec)

Ce n'est pas excellent, mais c'est un bien meilleur test des performances d'écriture réelles. Un résultat intéressant est que j'ai atteint 187MB/s alors que la performance nominale de mes disques est de 178MB/s. C'est un peu étrange car les tests de référence habituels représentent une fraction élevée des performances nominales. Le dépassement peut s'expliquer par la compression du disque par ZFS.

Mes disques sont dans un miroir ZFS (la performance de lecture 2x est plus utile pour moi que l'efficacité du stockage), mais en supposant que vos disques sont également à 5400 RPM, vous devriez vous attendre à des performances d'écriture comparables.

Pour comprendre pourquoi, même un décompte beaucoup plus important à l'aide de dd n'est pas un bon test, vérifiez ceci :

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000
1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)

En augmentant simplement la taille des blocs à 1M, les performances de mon disque sont maintenant incroyables. Jusqu'à ce que vous réalisiez que lire à partir de /dev/zero signifie que la source de données n'a pas d'entropie et est hautement compressible. dd n'est pas le meilleur outil pour tester les performances d'un disque.

Il existe d'autres outils dans le catalogue des logiciels portés de FreeBSD (j'ai utilisé bonnie et iozone dans le passé) qui peuvent vous donner plus d'informations sur les performances de vos disques. Si vous êtes vraiment curieux, regardez-les. Sinon, un test de performance BEAUCOUP plus efficace pour un serveur de fichiers domestique est de copier le contenu d'un DVD ou d'un blu-ray entre deux disques et de chronométrer cette copie.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X