GNU/Linux >> Tutoriels Linux >  >> Linux

Lecture séquentielle lente du pool ZFS

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.


Linux
  1. L'histoire Linux de ma famille

  2. Dépannage du Wi-Fi lent sous Linux

  3. Mes 3 versions Linux préférées

  4. Connexions Windows lentes

  5. presse-papiers linux lire/écrire en C

Commande de lecture bash

Comment lire un fichier ligne par ligne dans Bash

Comment configurer un pool de stockage ZFS sur Ubuntu

Pourquoi mmap() est plus rapide que les E/S séquentielles ?

Renommer la base de données MySQL

Pourquoi ma rsync est-elle si lente ?