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...
--
Emmanuel DECAEN
Le 30/01/2020 à 13:58, Maxime G. a écrit :
> Il y a du mieux mais c'est évidemment trop facile pour les couches.
Dans un premier temps, je ne cherche pas forcément à avoir du mieux.
Je cherche surtout à comprendre le ratio pour l'aléatoire :-)
> Et avec dd en aléatoire ?
Avec le dd de données aléatoires (urandom dans un fichier) en accès
séquentiel, on reste dans le même ordre de grandeur du ratio que fio en
séquentiel.
$ dd if=/mnt/toto of=toto bs=8k oflag=direct
31495651328 bytes (31 GB, 29 GiB) copied, 47.3935 s, 665 MB/s
$ zpool iostat -v 20
capacity
operations bandwidth
pool alloc free read write
read write
------------------------------------------ ----- ----- ----- -----
----- -----
rpool 167G 54.4T 5 5.39K
21.8K 859M
raidz2 167G 54.4T 5 5.39K
21.8K 859M
ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 555
2.40K 85.9M
[...] (lignessuivantes similaires)
$ dd if=/mnt/toto of=toto bs=128k oflag=direct
31495651328 bytes (31 GB, 29 GiB) copied, 31.1648 s, 1.0 GB/s
$ zpool iostat -v 20
capacity operations
bandwidth
pool alloc free read write
read write
------------------------------------------ ----- ----- ----- -----
----- -----
rpool 160G 54.4T 7 16.4K
28.4K 1.39G
raidz2 160G 54.4T 7 16.4K
28.4K 1.39G
ata-ST6000NM0024-1HT17Z_xxxxxxxx-part3 - - 0 1.63K
2.40K 143M
[...] (lignessuivantes similaires)
>
> 30 janvier 2020 13:28 "Emmanuel DECAEN" <Emmanuel.Decaen@xsalto.com
> <mailto:Emmanuel.Decaen@xsalto.com?to=%22Emmanuel%20DECAEN%22%20
Emmanuel.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%20
Emmanuel.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
>
>