GNU/Linux >> Linux Esercitazione >  >> Linux

Lettura sequenziale lenta del pool ZFS

Sono riuscito a ottenere velocità molto vicine ai numeri che mi aspettavo.

Stavo cercando 400 MB/sec e gestito 392 MB/sec . Quindi dico che il problema è risolto. Con la successiva aggiunta di un dispositivo cache, sono riuscito a gestire 458 MB /sec letto (credo memorizzato nella cache).

1. Inizialmente ciò è stato ottenuto semplicemente aumentando il set di dati ZFS recordsize valore a 1M

zfs set recordsize=1M pool2/test

Credo che questo cambiamento si traduca solo in una minore attività del disco, quindi letture e scritture sincrone di grandi dimensioni più efficienti. Esattamente quello che stavo chiedendo.

Risultati dopo la modifica

  • bonnie++ =226 MB in scrittura, 392 MB in lettura
  • gg =260 MB in scrittura, 392 MB in lettura
  • 2 processi in parallelo =227 MB in scrittura, 396 MB in lettura

2. Sono riuscito ancora meglio quando ho aggiunto un dispositivo cache (SSD da 120 GB). La scrittura è un po' più lenta, non so perché.

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

Il trucco con il dispositivo cache era impostare l2arc_noprefetch=0 in /etc/modprobe.d/zfs.conf . Consente a ZFS di memorizzare nella cache dati di streaming/sequenziali. Fallo solo se il tuo dispositivo cache è più veloce del tuo array, come il mio.

Dopo aver beneficiato della modifica della dimensione del record sul mio set di dati, ho pensato che potesse essere un modo simile per gestire le scarse prestazioni zvol.

Mi sono imbattuto in diverse persone che hanno affermato di aver ottenuto buone prestazioni utilizzando un volblocksize=64k , quindi l'ho provato. Senza fortuna.

zfs create -b 64k -V 120G pool/volume

Ma poi ho letto che ext4 (il filesystem con cui stavo testando) supporta opzioni per RAID come stride e stripe-width , che non ho mai usato prima. Quindi ho usato questo sito per calcolare le impostazioni necessarie:https://busybox.net/~aldot/mkfs_stride.html e ho formattato nuovamente lo zvol.

mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/zvol/pool/volume

Ho eseguito bonnie++ fare un semplice benchmark e i risultati sono stati eccellenti. Sfortunatamente non ho i risultati con me, ma erano almeno 5-6 volte più veloci per le scritture, se ricordo bene. Aggiornerò di nuovo questa risposta se eseguo nuovamente il benchmark.


Linux
  1. Freebsd – Offlinere un pool Zfs in modo rapido e sicuro come un tutto monolitico?

  2. appunti di linux leggi/scrivi in ​​C

  3. Perché mmap() è più veloce dell'IO sequenziale?

  4. Rinominare il database MySQL

  5. Come sostituire un disco in un pool ZFS non ridondante?

Risoluzione dei problemi di WiFi lento su Linux

Bash ha letto Comando

Come leggere un file riga per riga in Bash

Come configurare un pool di archiviazione ZFS su Ubuntu

Wifi improvvisamente estremamente lento

Perché il mio pool ZFS non si espande utilizzando ZFS su Linux?