Impacto de los niveles de RAID en IOPS [cerrado]

11

Con respecto a los IOPS, he visto varias fuentes en la web que sugieren que los IOPS de un número dado de discos es simplemente el IOPS de un solo disco multiplicado por el número de discos.

Si mi comprensión de IOPS es correcta (y no estoy seguro de que lo sea), habría pensado que la realidad dependería, entre muchos otros factores, del nivel de RAID. Con RAID 1/10, todos los datos se duplican en al menos dos discos, lo que reduce la contención en un disco en particular para algunos patrones de E / S. Sin embargo, en niveles RAID rayados, como RAID 0/5/6, los datos se distribuyen en lugar de duplicarse, lo que significa que las solicitudes de lectura consecutivas podrían ser para el mismo eje, lo que llevaría al bloqueo mientras se completa el IO anterior. Las escrituras son aún más contenidas.

Debo agregar que aprecio que la realidad sea mucho más compleja debido a varias optimizaciones y otros factores. Mi pregunta es simplemente conducir si, en un nivel muy básico, mi comprensión de lo que significa IOPS está en el camino correcto. Podría ser que mi afirmación de que IOPS podría estar influenciado por los niveles de RAID de tal manera indica un malentendido básico del concepto.

dbr
fuente
44
Está simplificando esto a un punto en el que excluye el impacto de la caché de la controladora RAID, el sistema operativo, el comportamiento de la aplicación, las E / S síncronas o asíncronas y el tipo de disco. ¿Y qué es lo que buscas?
ewwhite
@ewwhite Lo siento, debería haber sido más claro. Realmente espero ver si el principio básico de mi pensamiento es correcto, en lugar de hacer predicciones del mundo real. Aprecio que en realidad las cosas están muy influenciadas por todo tipo de optimizaciones y otras complejidades. Hay una situación del mundo real en el fondo, pero como suele ser el caso cuando estás buscando algo con lo que no estás tan familiarizado, he decidido irme y aprender algo de fondo, así que me siento un poco más cómodo con los principios básicos
dbr
Tuve la tentación de preguntar si alguien tiene alguna recomendación sobre la lectura de buena calidad con respecto a la teoría y los conceptos que rodean el almacenamiento y su rendimiento, pero no lo hice, ya que pensé que podría considerarse una pregunta inapropiada para ServerFault. Parece que hay bastante poca escritura de alta calidad sobre el tema en la web que he encontrado hasta ahora, tal vez porque es un tema bastante complejo que pocos realmente entienden completamente.
dbr
El rendimiento de RAID depende mucho más del hardware del controlador y los límites de implementación que el nivel de RAID. Por ejemplo, RAID0, RAID1, RAID5 y RAID6 pueden emplear teóricamente todos los discos para lecturas largas, por lo que pueden tener exactamente la misma velocidad de lectura en un controlador ideal.
Zac67

Respuestas:

12

Para HDD , los IOPS generalmente están dominados por el tiempo de acceso del disco, que es la suma de la latencia de búsqueda + retraso rotacional + retraso de transferencia. Como estas variables dependen en gran medida de los patrones de acceso y tienen interacciones no obvias con el diseño RAID específico (es decir, el tamaño de la banda) y el controlador (es decir, sintonización de lectura anticipada), cualquier respuesta simple SERÁ INCORRECTA.

Sin embargo, tratemos de tener una cifra aproximada. En una primera aproximación, las IOPS garantizadas por una matriz de n discos deberían ser n veces las IOPS de un solo disco. Sin embargo, tanto el nivel RAID como el patrón de acceso a datos , al cambiar el peso entre la latencia de búsqueda / rotación / transferencia, cambia drásticamente esta aproximación de primer orden.

Hagamos algunos ejemplos, suponiendo 100 IOPS por cada disco individual (un valor típico para discos de 7200 RPM) y matrices de 4 discos (excepto RAID1, a menudo limitado solo a 2 vías):

  • un solo disco es de 100 IOPS, tanto de lectura como de escritura (nota: debido a la fusión de escritura, los IOPS de escritura son generalmente más altos que los IOPS de lectura, pero ignoremos eso por simplicidad)
  • RAID0 (trazado de líneas de 4 vías) tiene hasta 4 veces el IOPS aleatorio y hasta 4 veces el IOPS secuencial. La palabra clave aquí es "hasta": debido a la naturaleza de las bandas y la alineación de datos, si los sectores a los que se accede aleatoriamente residen predominantemente en un solo disco, terminará con IOPS mucho más bajos.
  • RAID1 (duplicación de 2 vías) es más complejo para el perfil. Como diferentes discos pueden buscar datos diferentes, tiene hasta 2 veces más IOPS de lectura aleatoria, pero los mismos IOPS de escritura aleatoria 1x (o ligeramente más bajo, debido a la sobrecarga). Si todas las cosas se alinean bien (es decir, lecturas secuenciales grandes pero no 100%, un controlador RAID que utiliza el concepto / manejo de fragmentos / franjas incluso en modo espejo, lectura anticipada que funciona correctamente, etc.) las lecturas secuenciales pueden ser hasta 2 veces la única valor de disco, mientras que las escrituras secuenciales permanecen limitadas en 1x el disco único (es decir: sin aceleración)
  • RAID10 (duplicación de 4 vías) es, en cuanto al rendimiento, a mitad de camino entre la división RAID0 de 4 vías y la duplicación de 2 vías. Tiene hasta 4 veces más IOPS de lectura aleatoria y hasta 2 veces más IOPS de escritura aleatoria. Para las transferencias secuenciales, se aplica la advertencia RAID1: a veces tiene hasta 4 veces más IOPS de lectura secuencial, pero solo 2 veces más IOPS de escritura secuencial. Tenga en cuenta que algunas implementaciones de RAID10 (es decir, Linux MDRAID) proporcionan diferentes diseños para las matrices RAID10, con diferentes perfiles de rendimiento .
  • RAID5 (paridad rayada) tiene hasta 4 veces más IOPS de lectura aleatoria, mientras que IOPS de escritura aleatoria, dependiendo de una serie de factores como qué tan grande es la escritura con respecto al tamaño de banda, la disponibilidad de un caché de banda grande, el algoritmo de reconstrucción de banda en sí (lectura-reconstrucción-escritura vs lectura-modificación-escritura), etc., puede estar entre 0.5x (o menos) y 2x las IOPS de un solo disco. Las cargas de trabajo secuenciales son más predecibles, con 3 veces el IOPS de un solo disco (tanto para lectura como para escritura)
  • RAID6 (paridad doble rayada) se comporta de manera muy similar a su hermano RAID5, pero con un rendimiento de escritura más bajo. Tiene hasta 4 veces más IOPS de lectura aleatoria de un solo disco, pero su rendimiento de escritura aleatoria es incluso menor que RAID5, con los mismos valores absolutos (0.5x - 2x) pero con un promedio de palabras reales más bajo. Las lecturas y escrituras secuenciales están limitadas a 2X las IOPS de un solo disco.

Permítanme repetir: lo anterior son aproximaciones simples y casi rotas. De todos modos, si quieres jugar con una calculadora RAID IOPS (muy incompleta), échale un vistazo aquí .

Ahora, vuelve al mundo real. En las cargas de trabajo del mundo real, RAID10 es a menudo la opción más rápida y preferida , manteniendo un alto rendimiento incluso frente a una matriz degradada . RAID5 y RAID6 no deben usarse en cargas de trabajo sensibles al rendimiento, a menos que sean centradas en la lectura o de naturaleza secuencial. Vale la pena señalar que los controladores RAID serios tienen una gran memoria caché de escritura protegida contra pérdida de energía principalmente para superar (mediante el almacenamiento en caché de bandas pesadas) el bajo rendimiento de escritura aleatoria RAID5 / 6. Nunca use RAID5 / 6 con controladores RAID sin caché , a menos que realmente no le importe la velocidad de la matriz.

Las SSD son diferentes bestias, pensó. Como tienen un tiempo de acceso promedio mucho menor, los RAID basados ​​en paridad generan una sobrecarga de rendimiento mucho menor y son una opción mucho más viable que en los HDD. Sin embargo, en una pequeña carga de trabajo centrada en escritura aleatoria, de todos modos usaría una configuración RAID10.

shodanshok
fuente
Nunca use RAID5 / 6 con controladores RAID sin caché, a menos que realmente no le importe la velocidad de la matriz. Puede salirse con la suya si realmente sabe lo que está haciendo y tiene un control estricto de su patrón de E / S. Si no está haciendo nada más que IO secuencial que coincide con el tamaño de la banda de la matriz, puede salirse con la suya utilizando RAID5 / 6 sin caché. Y la memoria caché no puede guardar el rendimiento si realiza suficientes operaciones aleatorias de escritura de bloques pequeños en una matriz RAID5 / 6, aunque el valor de "suficientes operaciones de E / S" que maten el rendimiento puede ser un gran número para un controlador RAID realmente bueno.
Andrew Henle
@AndrewHenle Claro, si solo emite lecturas / escrituras secuenciales que están alineadas con bandas, incluso un controlador sin caché en modo RAD5 / 6 puede darle buenos resultados. Sin embargo, este es un patrón de uso muy limitado (es decir, transmisión y copias de seguridad). Para la carga de trabajo de uso general, un controlador sin caché combinado con cualquier RAID de paridad será realmente lento. Algunos controladores incluso requieren una memoria caché de escritura protegida contra pérdida de energía para permitirle crear un RAID de paridad.
shodanshok
Estaba pensando más en los administradores que se preguntan por qué su almacenamiento RAID6 de 21 unidades de almacenamiento de correo corporativo con un tamaño de franja de 19 MB porque es más grande debe ser más lento es lento ...
Andrew Henle
1

Es solo una cuestión de definiciones. Puede medir IOPS en diferentes niveles en el sistema y obtendrá diferentes valores. Por ejemplo, suponga que tiene dos discos duplicados y está escribiendo lo más rápido que puede. El IOPS que se dirige a los discos será el doble del número de IOPS que un solo disco puede manejar con una carga de escritura similar. Pero las IOPS que entran en el controlador serán iguales a la cantidad de IOPS que puede manejar un solo disco.

Por lo general, lo que nos importa es la cantidad de IOPS lógicos que podemos obtener en la matriz y no nos importa particularmente lo que está sucediendo a nivel de disco. En ese caso, tiene razón y el IOPS depende del nivel RAID, el número de discos, el rendimiento de los discos individuales y, en algunos casos, las características específicas de las operaciones.

David Schwartz
fuente