Tengo una pregunta relacionada con este problema, pero se volvió demasiado complicado y demasiado grande, así que decidí dividir el problema en NFS y problemas locales. También he intentado preguntar sobre esto en la lista de correo zfs-debates sin mucho éxito.
Copia lenta entre directorios NFS / CIFS en el mismo servidor
Esquema: cómo estoy configurado y qué espero
- Tengo un grupo ZFS con 4 discos. ROJO de 2TB configurado como 2 espejos rayados (RAID 10). En Linux, zfsonlinux. No hay caché o dispositivos de registro.
- Los datos se equilibran en los espejos (importante para ZFS)
- Cada disco puede leer (sin formato w / dd) a 147MB / seg en paralelo, dando un rendimiento combinado de 588MB / seg.
- Espero unos 115 MB / seg. De escritura, 138 MB / seg. De lectura y 50 MB / seg. De reescritura de datos secuenciales de cada disco, según los puntos de referencia de un disco RED de 4 TB similar. Espero no menos de 100 MB / seg de lectura o escritura, ya que cualquier disco puede hacer eso en estos días.
- Pensé que vería un 100% de utilización de E / S en los 4 discos cuando estaba bajo carga o escribiendo datos secuenciales. Y que los discos estarían produciendo más de 100 MB / seg mientras que están al 100% de utilización.
- Pensé que el grupo me daría alrededor de 2x de escritura, 2x de reescritura y 4x de rendimiento de lectura en un solo disco. ¿Me equivoco?
- NUEVO Pensé que un zvol ext4 en el mismo grupo tendría aproximadamente la misma velocidad que ZFS
Lo que realmente obtengo
Creo que el rendimiento de lectura del grupo no es tan alto como esperaba
Bonnie ++ benchmark en el grupo de hace unos días
Versión 1.97 ------ Salida secuencial ------ - Entrada secuencial- --Random- Concurrencia 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Tamaño de la máquina K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP / seg.% CP igor 63G 99 99 232132 47 118787 27 336 97 257072 22 92.7 6
bonnie ++ en una sola unidad RED de 4TB por sí misma en un zpool
Versión 1.97 ------ Salida secuencial ------ - Entrada secuencial- --Random- Concurrencia 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Tamaño de la máquina K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP / seg.% CP igor 63G 101 99 115288 30 49781 14 326 97 138250 13 111,6 8
De acuerdo con esto, las velocidades de lectura y reescritura son apropiadas en función de los resultados de un solo disco RED de 4TB (son dobles). Sin embargo, la velocidad de lectura que esperaba habría sido de aproximadamente 550 MB / seg (4 veces la velocidad de la unidad de 4 TB) y al menos esperaría alrededor de 400 MB / seg. En cambio, estoy viendo alrededor de 260 MB / seg.
bonnie ++ en la piscina desde hace un momento, mientras recopila la información a continuación. No es lo mismo que antes, y nada ha cambiado.
Versión 1.97 ------ Salida secuencial ------ - Entrada secuencial- --Random- Concurrencia 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Tamaño de la máquina K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP K / seg.% CP / seg.% CP igor 63G 103 99 207518 43 108810 24342 98 302350 26 256.4 18
iostato zpool durante la escritura. Me parece bien.
ancho de banda de operaciones de capacidad grupo aloc lectura libre escritura lectura lectura escritura -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.23T 2.39T 0 1.89K 1.60K 238M espejo 631G 1.20T 0 979 1.60K 120M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 0 1007 1.60K 124M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 0 975 0 120M espejo 631G 1.20T 0 953 0 117M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 0 1.01K 0 128M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 0953 0 117M
zpool iostat durante la reescritura. Me parece bien, creo .
ancho de banda de operaciones de capacidad grupo aloc lectura libre escritura lectura lectura escritura -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.27T 2.35T 1015923 125M 101M espejo 651G 1.18T 505 465 62.2M 51.8M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 198438 24.4M 51.7M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 306384 37.8M 45.1M espejo 651G 1.18T 510457 63.2M 49.6M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 304371 37.8M 43.3M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 206 423 25.5M 49.6M
Aquí es donde me pregunto qué está pasando.
iostato zpool durante la lectura
ancho de banda de operaciones de capacidad grupo aloc lectura libre escritura lectura lectura escritura -------------------------------------------- ----- - ---- ----- ----- ----- ----- pool2 1.27T 2.35T 2.68K 32 339M 141K espejo 651G 1.18T 1.34K 20 169M 90.0K ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469 - - 748 9 92.5M 96.8K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX - - 623 10 76.8M 96.8K espejo 651G 1.18T 1.34K 11 170M 50.8K ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536 - - 774 5 95.7M 56.0K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE - - 599 6 74.0M 56.0K
iostat -x durante la misma operación de lectura. Observe cómo IO% no está al 100%.
Dispositivo: rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz await r_await w_await svctm% util sdb 0.60 0.00 661.30 6.00 83652.80 49.20 250.87 2.32 3.47 3.46 4.87 1.20 79.76 sdd 0.80 0.00 735.40 5.30 93273.20 49.20 251.98 2.60 3.51 3.51 4.15 1.20 89.04 sdf 0.50 0.00 656.70 3.80 83196.80 31.20 252.02 2.23 3.38 3.36 6.63 1.17 77.12 sda 0.70 0.00 738.30 3.30 93572.00 31.20 252.44 2.45 3.33 3.31 7.03 1.14 84.24
Configuración de conjunto de datos de prueba y zpool:
- atime está apagado
- la compresión está desactivada
- ashift es 0 (autodetección - entiendo que esto estaba bien)
- zdb dice que los discos son todos ashift = 12
- módulo - opciones zfs zvol_threads = 32 zfs_arc_max = 17179869184
- sincronización = estándar
Editar - 30 de octubre de 2015
Hice algunas pruebas más
- conjunto de datos bonnie ++ w / recordsize = 1M = 226MB de escritura, 392MB de lectura mucho mejor
- conjunto de datos dd con tamaño de registro = 1 M = 260 MB de escritura, 392 MB de lectura mucho mejor
- zvol w / ext4 dd bs = 1M = 128MB de escritura, 107MB de lectura ¿por qué tan lento?
- conjunto de datos 2 procesos en paralelo = 227 MB de escritura, 396 MB de lectura
- dd direct io no hace ninguna diferencia en el conjunto de datos y en zvol
Estoy mucho más feliz con el rendimiento con el mayor tamaño de grabación. Casi todos los archivos del grupo tienen más de 1 MB. Así que lo dejaré así. Los discos todavía no obtienen el 100% de utilización, lo que me hace preguntarme si aún podría ser mucho más rápido. Y ahora me pregunto por qué el rendimiento de zvol es tan malo, ya que es algo que uso (a la ligera).
Me complace proporcionar cualquier información solicitada en los comentarios / respuestas. También hay toneladas de información publicada en mi otra pregunta: copia lenta entre directorios NFS / CIFS en el mismo servidor
Soy plenamente consciente de que es posible que no entienda algo y que esto no sea un problema en absoluto. Gracias por adelantado.
Para que quede claro, la pregunta es: ¿por qué el conjunto de ZFS no es tan rápido como esperaba? ¿Y quizás hay algo más mal?
dd
para ver qué tipo de rendimiento obtiene. También es posible que desee probar la E / S directa a medida que aumenta la velocidad de transmisión, donde el doble almacenamiento en búfer del almacenamiento en caché puede afectar el rendimiento. FWIW, 3/4 del rendimiento teórico total de lectura de 4 discos sin procesar es bueno.
%util
números.