J'ai une question connexe à propos de ce problème, mais elle est devenue trop compliquée et trop grande, j'ai donc décidé de diviser le problème en NFS et en problèmes locaux. J'ai également essayé de poser des questions à ce sujet sur la liste de diffusion zfs-discuter sans grand succès.
Copie lente entre les répertoires NFS / CIFS sur le même serveur
Aperçu: comment je suis configuré et ce que j'attends
- J'ai un pool ZFS avec 4 disques. 2 To RED configurés comme 2 miroirs qui sont entrelacés (RAID 10). Sous Linux, zfsonlinux. Il n'y a pas de périphériques de cache ou de journal.
- Les données sont équilibrées entre les miroirs (important pour ZFS)
- Chaque disque peut lire (brut w / dd) à 147 Mo / s en parallèle, ce qui donne un débit combiné de 588 Mo / sec.
- J'attends environ 115 Mo / sec d'écriture, 138 Mo / sec de lecture et 50 Mo / sec de réécriture des données séquentielles de chaque disque, en fonction des repères d'un disque ROUGE similaire de 4 To. Je n'attends pas moins de 100 Mo / s en lecture ou en écriture, car n'importe quel disque peut le faire de nos jours.
- Je pensais que je verrais une utilisation d'E / S à 100% sur les 4 disques lors de la lecture ou de l'écriture de données séquentielles. Et que les disques produiraient plus de 100 Mo / s avec une utilisation à 100%.
- Je pensais que le pool me donnerait environ 2x en écriture, 2x en réécriture et 4x en lecture sur un seul disque - je me trompe?
- NOUVEAU Je pensais qu'un zvol ext4 sur le même pool serait à peu près à la même vitesse que ZFS
Ce que j'obtiens réellement
Je trouve que les performances de lecture du pool ne sont pas aussi élevées que prévu
bonnie ++ benchmark on pool il y a quelques jours
Version 1.97 ------ Sortie séquentielle ------ - Entrée séquentielle - - Aléatoire - Concurrence 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Taille de la machine K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP igor 63G 99 99 232132 47 118787 27 336 97 257072 22 92,7 6
bonnie ++ sur un seul disque RED de 4 To seul sur un zpool
Version 1.97 ------ Sortie séquentielle ------ - Entrée séquentielle - - Aléatoire - Concurrence 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Taille de la machine K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP igor 63G 101 99 115288 30 49781 14326 97 138250 13111,6 8
En fonction de cela, les vitesses de lecture et de réécriture sont appropriées sur la base des résultats d'un seul lecteur RED de 4 To (ils sont doubles). Cependant, la vitesse de lecture que j'attendais aurait été d'environ 550 Mo / s (4x la vitesse du lecteur de 4 To) et j'espérerais au moins environ 400 Mo / s. Au lieu de cela, je vois environ 260 Mo / s
bonnie ++ sur le pool à partir de maintenant, tout en rassemblant les informations ci-dessous. Pas tout à fait comme avant, et rien n'a changé.
Version 1.97 ------ Sortie séquentielle ------ - Entrée séquentielle - - Aléatoire - Concurrence 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Taille de la machine K / s% CP K / s% CP K / s% CP K / s% CP K / s% CP / s% CP igor 63G 103 99 207518 43 108810 24 342 98 302350 26 256,4 18
zpool iostat pendant l'écriture. Ça me semble bien.
bande passante des opérations de capacité pool allocation libre lecture écriture lecture écriture -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1,23 T 2,39 T 0 1,89 K 1,60 K 238 M miroir 631G 1.20T 0 979 1.60K 120M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 0 1007 1.60K 124M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 0 975 0 120M miroir 631G 1.20T 0 953 0 117M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 0 1.01K 0 128M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 0 953 0 117M
zpool iostat pendant la réécriture. Ça me semble bien, je pense .
bande passante des opérations de capacité pool allocation libre lecture écriture lecture écriture -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1,27 T 2,35 T 1015923 125M 101M miroir 651G 1.18T 505 465 62.2M 51.8M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 198 438 24,4 M 51,7 M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 306384 37,8M 45,1M miroir 651G 1.18T 510457 63.2M 49.6M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 304371 37,8M 43,3M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 206 423 25,5 M 49,6 M
C'est là que je me demande ce qui se passe
zpool iostat pendant la lecture
bande passante des opérations de capacité pool allocation libre lecture écriture lecture écriture -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.27T 2.35T 2.68K 32 339M 141K miroir 651G 1.18T 1.34K 20 169M 90.0K ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 748 9 92,5 M 96,8 K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 623 10 76.8M 96.8K miroir 651G 1.18T 1.34K 11 170M 50.8K ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 774 5 95,7M 56,0K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 599 6 74,0M 56,0K
iostat -x pendant la même opération de lecture. Notez que IO% n'est pas à 100%.
Périphérique: rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz attendent r_await w_await svctm% util sdb 0,60 0,00 661,30 6,00 83652.80 49,20 250,87 2,32 3,47 3,46 4,87 1,20 79,76 sdd 0,80 0,00 735,40 5,30 93273,20 49,20 251,98 2,60 3,51 3,51 4,15 1,20 89,04 sdf 0,50 0,00 656,70 3,80 83196.80 31,20 252,02 2,23 3,38 3,36 6,63 1,17 77,12 sda 0,70 0,00 738,30 3,30 93572,00 31,20 252,44 2,45 3,33 3,31 7,03 1,14 84,24
zpool et tester les paramètres de l'ensemble de données:
- atime est éteint
- la compression est désactivée
- ashift vaut 0 (détection automatique - si j'ai bien compris, c'était correct)
- zdb dit que les disques sont tous ashift = 12
- module - options zfs zvol_threads = 32 zfs_arc_max = 17179869184
- sync = standard
Édition - 30 octobre 2015
J'ai fait plus de tests
- ensemble de données bonnie ++ w / recordsize = 1M = 226MB en écriture, 392MB en lecture bien meilleure
- ensemble de données dd avec taille d'enregistrement = 1 Mo = 260 Mo en écriture, 392 Mo en lecture bien meilleure
- zvol w / ext4 dd bs = 1M = 128 Mo d'écriture, 107 Mo de lecture pourquoi si lent?
- ensemble de données 2 processess en parallèle = 227 Mo d'écriture, 396 Mo de lecture
- dd direct io ne fait aucune différence sur le jeu de données et sur zvol
Je suis beaucoup plus satisfait des performances avec l'augmentation de la taille des enregistrements. Presque tous les fichiers du pool dépassent largement 1 Mo. Je vais donc le laisser comme ça. Les disques n'obtiennent toujours pas une utilisation à 100%, ce qui me fait me demander si cela pourrait encore être beaucoup plus rapide. Et maintenant, je me demande pourquoi les performances de zvol sont si nulles, car c'est quelque chose que j'utilise (légèrement).
Je suis heureux de fournir toute information demandée dans les commentaires / réponses. Il y a aussi des tonnes d'informations publiées dans mon autre question: Copie lente entre les répertoires NFS / CIFS sur le même serveur
Je suis pleinement conscient que je ne comprends tout simplement pas quelque chose et que ce n'est peut-être pas du tout un problème. Merci d'avance.
Pour être clair, la question est: pourquoi le pool ZFS n'est-il pas aussi rapide que prévu? Et peut-être que quelque chose d'autre ne va pas?
dd
pour voir quel type de performance vous obtenez. Vous voudrez peut-être également essayer les E / S directes à mesure que vous atteignez des vitesses de streaming où la double mise en mémoire tampon de la mise en cache peut avoir un impact sur les performances. FWIW, 3/4 des performances théoriques totales de lecture sur 4 disques bruts sont bonnes.
%util
chiffres.