J'ai réussi à obtenir des vitesses très proches des chiffres auxquels je m'attendais.
Je cherchais 400 Mo/s et 392 Mo/sec gérés . Donc je dis que le problème est résolu. Avec l'ajout ultérieur d'un périphérique de cache, j'ai géré 458 Mo /sec lu (en cache je crois).
1. Cela a d'abord été réalisé simplement en augmentant le jeu de données ZFS recordsize
valeur à 1M
zfs set recordsize=1M pool2/test
Je pense que ce changement se traduit simplement par moins d'activité sur le disque, donc des lectures et des écritures synchrones volumineuses plus efficaces. Exactement ce que je demandais.
Résultats après le changement
- bonnie++ =226 Mo en écriture, 392 Mo en lecture
- jj =260 Mo en écriture, 392 Mo en lecture
- 2 processus en parallèle =227 Mo en écriture, 396 Mo en lecture
2. J'ai encore mieux réussi lorsque j'ai ajouté un périphérique de cache (SSD de 120 Go). L'écriture est un peu plus lente, je ne sais pas pourquoi.
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
igor 63G 208325 48 129343 28 458513 35 326.8 16
L'astuce avec le périphérique de cache consistait à définir l2arc_noprefetch=0
dans /etc/modprobe.d/zfs.conf . Il permet à ZFS de mettre en cache les données de streaming/séquentielles. Ne faites cela que si votre périphérique de cache est plus rapide que votre baie, comme la mienne.
Après avoir bénéficié du changement de taille d'enregistrement sur mon ensemble de données, j'ai pensé que cela pourrait être une manière similaire de gérer les mauvaises performances zvol.
Je suis tombé sur plusieurs personnes mentionnant avoir obtenu de bonnes performances avec un volblocksize=64k
, alors j'ai essayé. Pas de chance.
zfs create -b 64k -V 120G pool/volume
Mais ensuite j'ai lu que ext4 (le système de fichiers avec lequel je testais) prend en charge les options pour RAID comme stride
et stripe-width
, que je n'ai jamais utilisé auparavant. J'ai donc utilisé ce site pour calculer les paramètres nécessaires :https://busybox.net/~aldot/mkfs_stride.html et formaté à nouveau le zvol.
mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/zvol/pool/volume
J'ai couru bonnie++
pour faire un benchmark simple et les résultats étaient excellents. Je n'ai malheureusement pas les résultats avec moi, mais ils étaient au moins 5 à 6 fois plus rapides pour les écritures, si je me souviens bien. Je mettrai à jour cette réponse si je compare à nouveau.