Azure Native Qumulo ahora disponible en la UE, el Reino Unido y Canadá: Más información

El camino a todo flash (Parte 2)

Escrito por:

Por Daniel Pehush y Gunter Zink

La misión: el motor que elegimos.

In Nuestro último post en esta serie., hablamos acerca de cómo nuestro equipo se propuso construir el nodo de todo el ancho de banda más alto posible, usando componentes listos para usar. Hubo varias cosas que considerar una vez que la tecnología de hardware estuvo finalmente lista para nuestra visión definida por software.

Después de analizar las CPU disponibles, elegimos el CPU Intel Xeon Gold 6126, que tiene núcleos 12 / hilos 24 en 2.6 GHz base y 3.7 GHz máx. Turbo, con un TDP de 125 vatios. Este fue elegido por su mayor frecuencia, menor número de núcleos y potencia nominal.

La siguiente clave fue equilibrar el diseño en términos de ancho de banda, ancho de banda de front-end de red, ancho de banda de back-end y ancho de banda de E / S de disco local; todo optimizado para el Arquitectura de software Qumulo.

En un clúster de cuatro nodos de Qumulo, un sistema cliente dado se conecta a través de NFS o SMB a uno de los nodos. Con este esquema de conexión, el porcentaje de 75 de las lecturas para este cliente proviene de otros nodos del clúster a través de la red de back-end, y el porcentaje de 25 de los datos proviene de los discos en el nodo al que está conectado ese cliente.

Cuando un cliente escribe en un solo nodo, entonces esos datos son código de borrado y se distribuye a los otros tres nodos del clúster a través de la red de back-end. El ancho de banda necesario para el back-end tiende a ser igual a la red de front-end (asumiendo escrituras grandes). Cuando muchos clientes están conectados a todos los nodos del clúster, lo ideal es que tengamos la misma red de front-end, red de back-end y ancho de banda de IO del disco local.

Al observar los componentes y predecir dónde se encontrarían los cuellos de botella en el rendimiento, un objetivo fácil era la red.

¡Consideramos colocar tres NIC de doble puerto en un solo servidor! Esa idea estaba un poco fuera, ya que habríamos producido una caja con un balance de red desigual para el tráfico de front-end o back-end, y necesitamos desarrollar software para transferir el tráfico a la tercera NIC, dependiendo de qué canal de red lo necesitaba. . Sin embargo, se hizo evidente que no valía la pena el esfuerzo de desarrollo del software y se descartó rápidamente como idea.

Decidimos que un ardiente ayuno, plataforma all-flash se necesitan dos NIC 100GbE PCIe x16 de doble puerto. Esto no solo fue lo suficientemente bueno para un lanzamiento rápido inicial, sino que también permitió un margen de rendimiento ya que el software se optimizó en el futuro, evitando que el hardware sea el limitador de ancho de banda para la plataforma.

Rendimiento por los números.

Ahora, repasemos algunos de los jugosos números de rendimiento del hardware.

Para un carril PCIe Gen3, el máximo teórico es 8GT / s o 985 MB / s, el NIC es una tarjeta Gen16 de ancho x3, 16 carril físico total, con un máximo teórico de 15,760 MB / s. Para una NIC 100GbE de doble puerto, cada puerto es capaz de 100Gbps, lo que equivale a 12,500 MB / s. Tenemos dos puertos para un ancho de banda total de 25,000 MB / s. Ese es el ancho de banda de Ethernet, en el lado de PCIe, la NIC es una tarjeta Gen16 de ancho x3, con un máximo teórico de 15,760 MB / s. Obviamente, estos no coinciden, pero es el mejor disponible en el mercado antes de que PCIe Gen4 se extienda ampliamente. Por lo tanto, el ancho de banda PCIe a la tarjeta NIC es el verdadero cuello de botella aquí.

Debido al software y algunos de los gastos generales en los protocolos, redondeamos el máximo teórico de una única línea PCIe3 Gen de 985 MB / s a ​​800 MB / s por cada par de recepción y transmisión.

Usando nuestros números redondeados para tener en cuenta la sobrecarga, nuestro ancho de banda PCIe a la NIC es 12.8 GB / s. En nuestro software, dividimos el tráfico de back-end y el tráfico de front-end, por lo que nuestro límite de ancho de banda de front-end para la conectividad del cliente es 12.8 GB / sy nuestra red de back-end para el ancho de banda de conectividad intra-clúster es 12.8 GB / s.

Entonces, ¿cuál es nuestro ancho de banda IO de la unidad NVMe?

Decidimos hacer dos SKU para proporcionar a nuestros clientes opciones de densidad de almacenamiento: una con unidades 12, que utiliza la mitad de las ranuras en el chasis elegido; y uno con unidades 24, que utiliza todas las ranuras. Cada NVMe SSD tiene cuatro líneas de PCIe Gen3, lo que significa que el ancho de banda con nuestro número redondeado es 3.6 GB / s. Cada unidad disponible en el mercado hoy en día no es capaz de saturar este bus, pero el estándar para conectar dispositivos U.2 es tal que permita la utilización de SSD NVMe más rápidos en el futuro. Si bien 3.6 GB / s es lo que cada unidad puede ofrecer, la placa base que elegimos no tiene los carriles PCIe disponibles para dirigir todas las unidades con ancho de banda completo a la CPU.

Aquí es donde entran los switches PCIe.

En la placa base, utilizamos cuatro puertos ocultos integrados: un conmutador PCIe de cuatro puertos que es una tarjeta x4 y dos conmutadores PCIe de ocho puertos que son tarjetas x8. Cada puerto de uno de estos dispositivos es x4 lanes de PCIe Gen3 para un dispositivo NVMe, por lo que estos dispositivos se conectan con ancho de banda completo a nuestros dispositivos de almacenamiento de datos. La historia del otro lado no está tan sencillamente unida. Los puertos de ocultación están conectados directamente a la CPU y tienen un ancho de banda completo desde la CPU hasta el SSD de NVMe. El conmutador de cuatro puertos es carriles x8, y los conmutadores de ocho puertos son carriles x8 que producen 6.4 GB / s.

La forma en que están cableadas las cosas resultó de la siguiente manera para la versión del disco 12:

  • El ancho de banda de un NVMe SSD es 3.6 GB / s
  • El ancho de banda de cuatro NVMe SSD es 14.4 GB / s
  • Un conmutador x8 PCIe puede devolver a la CPU 6.4 GB / s de ancho de banda

Hay más ancho de banda para los dispositivos de almacenamiento que los conmutadores, por lo que los conmutadores limitan el ancho de banda.

Configuración de la unidad 12:

  • Un conmutador x8 PCIe con unidades 4 NVME
  • Un conmutador x8 PCIe con unidades 4 NVME
  • Un conmutador x8 PCIe con unidades 4 NVME
  • Ancho de banda máximo de IO: 3 x 6.4GB / s = 19.2 GB / s

Configuración de la unidad 24:

  • Cuatro puertos de Occulink a 4 NVMe SSD
  • Un conmutador x8 PCIe con 4 NVMe SSD
  • Un conmutador x8 PCIe con 8 NVMe SSD
  • Un conmutador x8 PCIe con 8 NVMe SSD
  • Ancho de banda máximo de IO: 19.2 GB / s

Con la configuración anterior, si está haciendo los cálculos, determinaría que el ancho de banda del hardware sería más alto para la configuración de la unidad 24 que para la configuración de la unidad 12. Si bien esto es cierto, nuestro software utiliza unidades de manera uniforme. El conmutador de ocho puertos x8 a ancho de banda de la CPU PCIe es el factor limitante, ya que es el 6.4 GB / s de ancho de banda.

En la configuración de la unidad 12, el ancho de banda máximo disponible para cualquier dispositivo NVMe es 1.6 GB / s. Los números de 1.6 GB / s provienen del hecho de que un conmutador x8 tiene un valor de ancho de banda para la CPU de 6.4 GB / s que se divide entre dispositivos 4 NVMe (6.4 / 4 = 1.6). El mismo principio de utilizar unidades de disco es igual de cierto con nuestra configuración de unidades 24, pero ahora tenemos una división de 6.4 GB / s entre unidades 8, por lo tanto, 800 MB / s por unidad. Por lo tanto, nuestro software limita el ancho de banda del hardware, y el ancho de banda de Max IO termina siendo el mismo para la configuración de la unidad 12 y la configuración de la unidad 24.

Ambas configuraciones de All-Flash están limitadas por los carriles x16 de PCIe Gen3 que van a nuestras NIC 100GbE. Tal es el estado actual de la tecnología de hardware para las plataformas basadas en x86.

¡Estén atentos para la tercera parte de esta serie!

Artículos Relacionados

Ir al Inicio