GNU/Linux >> Tutoriales Linux >  >> Linux

Lectura secuencial lenta del grupo ZFS

Logré obtener velocidades muy cercanas a los números que esperaba.

Estaba buscando 400 MB/seg y administrado 392 MB/seg . Así que digo que es problema resuelto. Con la adición posterior de un dispositivo de caché, administré 458 MB /seg leído (almacenado en caché, creo).

1. Al principio, esto se logró simplemente aumentando el conjunto de datos ZFS recordsize valor a 1M

zfs set recordsize=1M pool2/test

Creo que este cambio solo da como resultado una menor actividad en el disco, por lo tanto, lecturas y escrituras sincrónicas grandes más eficientes. Exactamente lo que estaba pidiendo.

Resultados después del cambio

  • bonnie++ =226 MB de escritura, 392 MB de lectura
  • dd =260 MB de escritura, 392 MB de lectura
  • 2 procesos en paralelo =227 MB de escritura, 396 MB de lectura

2. Me las arreglé aún mejor cuando agregué un dispositivo de caché (SSD de 120 GB). La escritura es un poco más lenta, no estoy seguro de por qué.

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

El truco con el dispositivo de caché fue configurar l2arc_noprefetch=0 en /etc/modprobe.d/zfs.conf . Permite que ZFS almacene en caché datos de transmisión/secuenciales. Solo haga esto si su dispositivo de caché es más rápido que su arreglo, como el mío.

Después de beneficiarme del cambio de tamaño de registro en mi conjunto de datos, pensé que podría ser una forma similar de lidiar con el bajo rendimiento de zvol.

Me encontré con varias personas que mencionaron que obtuvieron un buen rendimiento usando un volblocksize=64k , así que lo probé. Sin suerte.

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

Pero luego leí que ext4 (el sistema de archivos con el que estaba probando) admite opciones para RAID como stride y stripe-width , que nunca he usado antes. Así que usé este sitio para calcular la configuración necesaria:https://busybox.net/~aldot/mkfs_stride.html y formateé el zvol nuevamente.

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

Ejecuté bonnie++ para hacer un benchmark simple y los resultados fueron excelentes. Desafortunadamente, no tengo los resultados conmigo, pero fueron al menos 5-6 veces más rápidos para escrituras, según recuerdo. Actualizaré esta respuesta nuevamente si vuelvo a comparar.


Linux
  1. Error de compilación RSAKeyFind (Make):rsakeyfind.cpp:"memcmp, read, close" no se declaró en este ámbito [Resuelto]

  2. ¿Cómo reemplazar un disco en un grupo ZFS no redundante?

  3. alquitrán:lectura corta

  4. Wifi de repente extremadamente lento

  5. ¿Por qué mi rsync es tan lento?

Comando de lectura Bash

Cómo leer un archivo línea por línea en Bash

Cómo configurar un grupo de almacenamiento ZFS en Ubuntu

portapapeles de linux leer/escribir en C

¿Por qué mmap() es más rápido que IO secuencial?

Cambiar el nombre de la base de datos MySQL