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.
--
Emmanuel DECAEN


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