Examinando el sistema Read Prefetch de Qumulo y cómo es tan efectivo

Recientemente iniciamos el nuevo año fiscal aquí en Qumulo. Durante el inicio de la empresa, se presentó este gráfico, que muestra la latencia promedio de lectura para los clientes de Qumulo en todo el mundo durante el último año.

Latencia de lectura de datos NFS y SMB en milisegundos

Como puede ver, las latencias de lectura de los protocolos NFS y SMB se han reducido sustancialmente. A medida que los clientes actualizaban su software Qumulo durante 2018, observaban que su rendimiento de lectura se hacía cada vez más rápido.

La velocidad de la memoria por el costo del disco duro.

Si bien el sistema de almacenamiento de archivos en la nube híbrida rentable de Qumulo almacena la mayoría de los datos en unidades de disco duro relativamente lentas, a continuación se puede ver que la mayoría de los datos se entrega a los clientes a la velocidad de la SSD y la memoria. La mayoría de las operaciones de lectura para los clientes de Qumulo tienen una latencia inferior a milisegundos.

gráfico que compara la latencia de lectura típica de 64 kilobytes leídos de varios medios frente a la latencia de lectura del cliente de Qumulo en milisegundos

¿Cómo obtienen nuestros clientes una latencia de lectura NFS baja y una latencia de lectura SMB baja? Gran parte de este rápido rendimiento es el resultado de nuestro innovador sistema de búsqueda previa de lectura. Pero, antes de entrar en nuestro software, echemos un vistazo al hardware para comprender lo que vamos a hacer.

Características del hardware de medios de almacenamiento.

Un clúster típico de Qumulo, digamos 4 nodos de QC208, tendría 104 discos duros (HDD), 56 unidades de estado sólido (SSD) y 600 gigabytes de memoria (RAM). Nuestros clientes tienen una gran cantidad de datos y necesitan que los datos estén protegidos de forma segura en el disco. También quieren tener un acceso rápido a esos datos.

Características del hardware de los medios de almacenamiento HDD y SSD

A continuación se muestra un diagrama que muestra el tiempo que se tarda en leer los datos de los distintos medios de almacenamiento que se encuentran en el clúster de Qumulo típico.

Leer 1 MB de un solo disco duro lleva de 10 a 20 milisegundos

La forma más rápida de leer datos desde el almacenamiento de Qumulo es leer datos de RAM. Pero, solo podemos mantener una pequeña fracción de los datos del grupo en la memoria en un momento dado. ¿Cómo podemos ser inteligentes acerca de lo que ponemos en la memoria RAM, y cuando lo ponemos allí? ¿Cómo podemos anticipar lo que un usuario va a leer y llevarlo allí antes de que lo soliciten?

Un patrón de lectura simple sin captación previa

Para responder a las preguntas anteriores, echemos un vistazo a un patrón de lectura simple de un solo cliente para un solo archivo que no tiene optimización.

patrón de lectura sin captación previa

Cada lectura es relativamente lenta. Esto ilustra un escenario en el que cada lectura proviene de un disco duro y toma muchos milisegundos. Puede leer un archivo 50MB en 1 segundo en este escenario, o 50 MB / s.

Recogida previa para un patrón de lectura lenta en serie

El siguiente diagrama muestra lo que sucedería si leyera con este mismo patrón, pero el software de Qumulo resuelve lo que leerá a continuación y lo coloca en la RAM, de modo que cuando lo solicite lo recupere muy rápidamente. Ahora lee el archivo en 0.5 segundos y obtiene 100MB / s por segundo. Eso es decente

Recogida previa para un patrón de lectura lenta en serie

Obtención previa de patrones de lectura optimizados por el cliente

Pero, los clientes de Windows, Mac y Linux no tienden a leer los archivos en serie. Tienden a leer archivos en grandes lotes paralelos. El siguiente diagrama muestra ese escenario. Tres lecturas se inician casi al mismo tiempo. La tercera lectura es exitosa, pero aún tomó algo de tiempo. Pero, las siguientes siete lecturas ahora están todas en la memoria y se leen aproximadamente en orden y las lecturas toman menos de un milisegundo. Ahora puedes leer ese archivo 50MB en una décima de segundo. Eso es 500 MB / s. Se está haciendo rápido.

Obtención previa de patrones de lectura optimizados por el cliente

Prefetching y predicción de archivos

El siguiente diagrama muestra lo que sucede cuando Qumulo anticipa el siguiente archivo que lee. En ese caso, podemos extraer todos los datos del archivo 2 de nuestras unidades de disco 104 a la RAM y puede leer ese segundo archivo en milisegundos 0.03. Eso significa que ahora estás leyendo el archivo (y cualquier archivo futuro) a una velocidad de 1.6GB / s. ¡Eso está ardiendo rápido!

Prefetching y predicción de archivos

Las cosas no siempre son perfectas como en el ejemplo anterior. A veces un patrón de lectura es completamente aleatorio. En ese caso, nada es prefijado.

desplazamiento de archivo vs tiempo

Nuestro prefetcher se apaga y no desperdicia RAM valiosa. Sin embargo, no se preocupe, aún puede beneficiarse de nuestra "promoción de lectura a caché SSD", pero ese tema es para otro día.

Cómo obtener un gran rendimiento de lectura de Qumulo

  • Cuando lea dentro de un archivo, léalo en orden, comenzando desde el principio
  • Dentro de un directorio:
    • Lea los archivos en su orden numérico (archivo1.txt, archivo2.txt, etc.)
    • O bien, lea los archivos en el orden en que se devuelven a través de "ls -U"
  • Leer en trozos grandes, cuando sea posible
  • Cuando trabaje con archivos pequeños (especialmente archivos de menos de unos pocos megabytes), lea el archivo completo

Contáctanos aquí si quieres programar una reunión o solicitar una demostración. Y suscríbase a nuestro blog para obtener mejores prácticas y recursos más útiles.

Comparta este artículo