Bonjour,
Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation.
J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC).
Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci:
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13
==> iostat: 1330 Mo/s
Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s
Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ?
Merci. -- * *Emmanuel DECAEN
Bonjour.
Bonne question...
Juste au niveau de fio, que donne un test en écriture séquentielle ? 29 janvier 2020 14:44 "Emmanuel DECAEN" <Emmanuel.Decaen@xsalto.com (mailto:Emmanuel.Decaen@xsalto.com?to=%22Emmanuel%20DECAEN%22%20Emmanuel.Decaen@xsalto.com)> a écrit: Bonjour,
Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation.
J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC).
Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci:
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13 ==> iostat: 1330 Mo/s Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ?
Merci. -- Emmanuel DECAEN
Bonjour,
Le 30/01/2020 à 09:42, Maxime G. a écrit :
Bonne question... Juste au niveau de fio, que donne un test en écriture séquentielle ?
En écriture séquentielle, le ratio est de l'ordre de 1,3.
$ fio --name=seqfile --ioengine=libaio --iodepth=32 --rw=write --bs=16k --direct=1 --size=16G --numjobs=8 --group_reporting [...] write: IOPS=50.4k, BW=788MiB/s (827MB/s)(128GiB/166288msec)
$ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.55 0.00 22.43 15.65 0.00 61.38 Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.20 1488.47 0.00 109.80 0.00 3.97 0.00 0.27 85.33 4.29 3.46 4.00 75.54 0.42 62.32 [...] (8 lignes similaires) sdj 0.23 1444.97 0.00 109.81 0.00 3.55 0.00 0.25 88.29 4.67 3.91 4.00 77.82 0.43 61.79
$ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 198G 54.4T 2 12.8K 9.40K 1.07G raidz2 198G 54.4T 2 12.8K 9.40K 1.07G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.25K 750 109M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.22K 887 109M ------------------------------------------ ----- ----- ----- ----- ----- -----
Fio : 827 Mo/s Iostat: 1090 Mo/s
Soit un ratio d'environ 1.3, bien loin du ratio de 6 pour l'écriture aléatoire.
29 janvier 2020 14:44 "Emmanuel DECAEN" <Emmanuel.Decaen@xsalto.com <mailto:Emmanuel.Decaen@xsalto.com?to=%22Emmanuel%20DECAEN%22%20Emmanuel.Decaen@xsalto.com>> a écrit:
Bonjour, Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation. J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC). Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci: $ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec) ==> fio : 227 Mo/s Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93 Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13 ==> iostat: 1330 Mo/s Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M ==> zfs iostat: 1300 Mo/s Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ? Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ? Merci. -- Emmanuel DECAEN
Merci.
Il y a du mieux mais c'est évidemment trop facile pour les couches. Et avec dd en aléatoire ? 30 janvier 2020 13:28 "Emmanuel DECAEN" <Emmanuel.Decaen@xsalto.com (mailto:Emmanuel.Decaen@xsalto.com?to=%22Emmanuel%20DECAEN%22%20Emmanuel.Decaen@xsalto.com)> a écrit: Bonjour,
Le 30/01/2020 à 09:42, Maxime G. a écrit :Bonne question...Juste au niveau de fio, que donne un test en écriture séquentielle ? En écriture séquentielle, le ratio est de l'ordre de 1,3.
$ fio --name=seqfile --ioengine=libaio --iodepth=32 --rw=write --bs=16k --direct=1 --size=16G --numjobs=8 --group_reporting [...] write: IOPS=50.4k, BW=788MiB/s (827MB/s)(128GiB/166288msec) $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.55 0.00 22.43 15.65 0.00 61.38 Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.20 1488.47 0.00 109.80 0.00 3.97 0.00 0.27 85.33 4.29 3.46 4.00 75.54 0.42 62.32 [...] (8 lignes similaires) sdj 0.23 1444.97 0.00 109.81 0.00 3.55 0.00 0.25 88.29 4.67 3.91 4.00 77.82 0.43 61.79 $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 198G 54.4T 2 12.8K 9.40K 1.07G raidz2 198G 54.4T 2 12.8K 9.40K 1.07G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.25K 750 109M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.22K 887 109M ------------------------------------------ ----- ----- ----- ----- ----- -----
Fio : 827 Mo/s Iostat: 1090 Mo/s
Soit un ratio d'environ 1.3, bien loin du ratio de 6 pour l'écriture aléatoire. 29 janvier 2020 14:44 "Emmanuel DECAEN" <Emmanuel.Decaen@xsalto.com (mailto:Emmanuel.Decaen@xsalto.com?to=%22Emmanuel%20DECAEN%22%20Emmanuel.Decaen@xsalto.com)> a écrit: Bonjour,
Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation.
J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC).
Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci:
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13 ==> iostat: 1330 Mo/s
Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ?
Merci. -- Emmanuel DECAEN Merci. -- Emmanuel DECAEN
Bonjour,
J'ai avancé sur l'analyse de mon côté, et j'ai des éléments complémentaires. Ce qui m'embête beaucoup, c'est l'impression que par défaut ZFS n'a un ratio correct en accès aléatoire qu'avec de blocs de 128k.
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=128k --direct=1 --size=16G --numjobs=8 --group_reporting write: IOPS=6241, BW=780MiB/s (818MB/s)(128GiB/167988msec)
$ zpool iostat -v capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 197G 54.4T 7 13.7K 35.6K 1007M raidz2 197G 54.4T 7 13.7K 35.6K 1007M ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.29K 3.80K 101M [...] (lignessuivantes similaires)
Fichier 818 Mo/s vs Disque 1007 Mo/s
Sur proxmox, 128k c'est semble-t'il le recordsize par défaut de ZFS.
$ zfs get all | grep recordsize rpool/data recordsize 128K default
Je ne me vois pas créer des systèmes de fichier avec des blocs de 128k dans les VMs juste pour ça. J'envisage donc de passer à une valeur recordsize plus raisonnable pour un type de virtualisation avec des systèmes de fichiers à bloc de 4k dans les VMs.
Qu'avez-vous choisi comme recordsize de votre côté ? 4k ? 8k ? Avez-vous opté pour une autre solution ?
Merci.
PS: Petite lecture à ce sujet : https://www.usenix.org/system/files/login/articles/login_winter16_09_jude.pd...
Le 30/01/2020 à 13:28, Emmanuel DECAEN a écrit :
Soit un ratio d'environ 1.3, bien loin du ratio de 6 pour l'écriture aléatoire.
C'est normal. Tu lis en raidzX sur n-X disques. Tu peux donc avoir jusqu'à (n-X)*133Mo/s en lecture. En écriture, tu dois écrire sur chaques disques. Tu as donc en écriture la performance du disque le moins rapide. soit environ 1*133Mo/s. Après avec les caches disques et zfs ( avec zfs, tu peux oublier les options d'écriture directe de fio) avoir 266Mo/s n'est pas étonnant.
L’écriture se fait pas en // sur plusieurs disques comme la lecture ?
Le 30 janv. 2020 à 16:24, Vincent l@51514.fr a écrit :
Le 30/01/2020 à 13:28, Emmanuel DECAEN a écrit :
Soit un ratio d'environ 1.3, bien loin du ratio de 6 pour l'écriture aléatoire.
C'est normal. Tu lis en raidzX sur n-X disques. Tu peux donc avoir jusqu'à (n-X)*133Mo/s en lecture. En écriture, tu dois écrire sur chaques disques. Tu as donc en écriture la performance du disque le moins rapide. soit environ 1*133Mo/s. Après avec les caches disques et zfs ( avec zfs, tu peux oublier les options d'écriture directe de fio) avoir 266Mo/s n'est pas étonnant. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Effectivement, si tu compares les benchs en lecture d'un seul disque à N disques aggrégés par ZFS en Raidz2, la différence sera forcément flagrante. L'écriture est également multiplexée, mais le gain ne sera pas linéaire, surtout en séquentiel vs aléatoire.
Au passage, le paramètre "ashift" dans la config du zpool est également très important pour les perfs. Quasi tous mes zpools sont configurés en ashift=12
https://github.com/zfsonlinux/zfs/wiki/faq#performance-considerations
http://www.open-zfs.org/wiki/Performance_tuning#Alignment_Shift_.28ashift.29
La compression par défaut (lz4) ne joue pas beaucoup sur les perfs.
Une ref stackoverflow pour les benchs disques : https://unix.stackexchange.com/questions/108838/how-can-i-benchmark-my-hdd
Et bien sûr l'excellent Brendan Greg (date un peu) :
- https://www.slideshare.net/brendangregg/zfsperftools2012
( son site est une vraie mine d'informations ( http://www.brendangregg.com/ ) )
Tu peux aussi poser la question directement sur la liste de diffusion très réactive de ZoL.
Rémy.
Le 30/01/2020 à 16:24, Vincent a écrit :
Le 30/01/2020 à 13:28, Emmanuel DECAEN a écrit :
Soit un ratio d'environ 1.3, bien loin du ratio de 6 pour l'écriture aléatoire.
C'est normal. Tu lis en raidzX sur n-X disques. Tu peux donc avoir jusqu'à (n-X)*133Mo/s en lecture. En écriture, tu dois écrire sur chaques disques. Tu as donc en écriture la performance du disque le moins rapide. soit environ 1*133Mo/s. Après avec les caches disques et zfs ( avec zfs, tu peux oublier les options d'écriture directe de fio) avoir 266Mo/s n'est pas étonnant. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Hello,
Tu as essayé avec bonnie++ ?
Pr
On 29 January 2020 at 14:45:43, Emmanuel DECAEN (emmanuel.decaen@xsalto.com) wrote:
Bonjour,
Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation.
J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC).
Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci:
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13
==> iostat: 1330 Mo/s
Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s
Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ?
Merci.
A mon avis tu dois avoir du cache quelque part... Sinon, est-ce que tu as activé de la compression à la volée ? As-tu calculé les débits théoriques sur les disques ?
Cordialement,
Le 29/01/2020 à 14:44, Emmanuel DECAEN a écrit :
Bonjour,
Depuis quelques semaines, je teste la solution Proxmox VE 6.1. Il y a beaucoup de choses intéressantes, mais j'avoue avoir des surprises avec la partie ZFS pour la virtualisation.
J'ai une petite maquette avec un ancien serveur Dell : - Chassis R730XD 12 slots - 256 Go de RAM - 10 disques SATA Entreprise 6 To en ZFS RAID z2 mode HBA - 2 SSD SAS 1,8 To non utilisés pour le moment (ni ZIL, ni L2ARC).
Quand je fais un test sur l'hôte de virtualisation (Proxmox) avec fio, j'obtiens ceci:
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13
==> iostat: 1330 Mo/s
Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s
Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Le fonctionnement de ZFS en RAID z2 + journal doit aboutir à un facteur 6 côté débit ?
Merci. -- * *Emmanuel DECAEN
Liste de diffusion du FRsAG http://www.frsag.org/
Bonjour,
Le 30/01/2020 à 11:22, Dernat Rémy a écrit :
A mon avis tu dois avoir du cache quelque part...
Oui, il y a le cache (mémoire) intégré à ZFS, mais pas de L2ARC. Il y a 96Go de RAM sur l'hôte de virtualisation (il y avait une erreur dans ma description initiale).
Sinon, est-ce que tu as activé de la compression à la volée ?
Oui la compression est active.
$ zfs get all | grep compression [...] rpool/data compression on inherited from rpool
As-tu calculé les débits théoriques sur les disques ?
Il s'agit de disques SATA Entreprise à 7200tr/min dont l'interface est à 6 Gbps. On peut écrire de manière soutenue à environ 190 Mo/s sur un disque monté en direct (sans ZFS).
$ fio --name=seqfile --ioengine=libaio --iodepth=32 --rw=write --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=11.6k, BW=181MiB/s (189MB/s)(32.0GiB/181426msec)
Je n'ai pas de problème particulier avec le débit disque en lui même.
Ce qui me questionne, c'est l'ordre de grandeur entre le débit sur le système de fichier et le débit effectif résultant sur le sous-système disque selon le type d'écriture: -> en écriture aléatoire : fichier 2 Gbps --> ZFS --> disques 11 Gbps -> en écriture séquentielle : fichier 8 Gbps --> ZFS --> disques 10 Gbps
Est-ce que tu as des ordres de grandeur similaires en écriture aléatoire vs séquentielle sur ton infra ?
Merci.
Bonjour Emmanuel,
On Wed, Jan 29, 2020 at 02:44:23PM +0100, Emmanuel DECAEN wrote:
Bonjour,
[…]
$ fio --name=randfile --ioengine=libaio --iodepth=32 --rw=randwrite --bs=16k --direct=1 --size=4G --numjobs=8 --group_reporting [...] write: IOPS=13.8k, BW=216MiB/s (227MB/s)(32.0GiB/151568msec)
==> fio : 227 Mo/s
Côté iostat sur l'intervalle de temps: $ iostat -xm 60 avg-cpu: %user %nice %system %iowait %steal %idle 0.29 0.00 30.98 9.80 0.00 58.93
Device r/s w/s rMB/s wMB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util sda 0.05 2185.70 0.00 133.04 0.00 5.00 0.00 0.23 21.00 3.34 2.71 4.00 62.33 0.35 77.37 [...] (8 lignes similaires) sdj 0.02 2169.40 0.00 133.04 0.00 4.70 0.00 0.22 48.00 3.45 2.90 4.00 62.80 0.36 77.13
==> iostat: 1330 Mo/s
Côté zpool iostat sur l'intervalle de temps: $ zpool iostat -v 60 capacity operations bandwidth pool alloc free read write read write ------------------------------------------ ----- ----- ----- ----- ----- ----- rpool 73.2G 54.5T 0 19.4K 2.33K 1.30G raidz2 73.2G 54.5T 0 19.4K 2.33K 1.30G ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.93K 204 133M [...] (8 lignes similaires) ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.92K 68 133M
==> zfs iostat: 1300 Mo/s
Le débit est cohérent entre iostat et zfs iostat. Comment expliquer la différence entre l'écriture faite par fio à 227 Mo/s et celle relevée par les iostat à 1300 Mo/s ?
Je pense qu'on ne peut pas répondre à cette question seulement avec les informations que tu donnes. Je m'explique :
De ce que je comprend, tu génères des données avec fio sur un interval de temps de 60s et pendant ce temps là tu mesures en deux autres points les débits. On trouve respectivement 227 Mo/s et 1300 Mo/s (cette dernière valeur pour les deux points de mesures iostat).
Partant de là ça voudrait dire que d'un côté on a généré 227*60=13620 Mo de données avec fio et qu'on en aurait écrit sur le disque 78000 Mo… C'est quoi les 64380 Mo en trop ?
Je veux bien qu'il y ait un surplus de données à écrire sur les disques en raison des parités calculées pour le raidz2 mais en aucun cas le facteur est de 6. Ici il serait plutôt autour de 20% (2 disques sur 10) soit 1.2…
Est-ce que tu pourrais générer des courbes de toutes ces mesures sur un temps plus long que le temps d'exécution brut de fio (un petit peu avant et un peu après) ?
@+,
Olivier.