Dell EMC Ready Solution para almacenamiento HPC PixStor: nivel NVMe

Summary: Blog sobre un componente de solución de almacenamiento HPC, que incluye la arquitectura junto con la evaluación de rendimiento.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Autoría de Mario Gallegos del Laboratorio de innovación en HPC e IA en junio del 2020
Blog sobre un componente de solución de almacenamiento HPC, que incluye la arquitectura junto con la evaluación de rendimiento.

Resolution

Dell EMC Ready Solutions para HPC PixStor Storage

            Nivel NVMe

Tabla de contenido

Introducción. 1

Arquitectura de la solución. 1

Componentes de la solución. 1

Caracterización del rendimiento. 1

Rendimiento de IOzone secuencial, N clientes para N archivos. 1

Rendimiento de IOR secuencial, N clientes para 1 archivo. 1

Bloques pequeños aleatorios de rendimiento de IOzone, N clientes para N archivos. 1

Rendimiento de metadatos con MDtest mediante el uso de archivos de 4 KiB. 1

Conclusiones y trabajo a futuro. 1

 

Introducción

Los entornos de HPC actuales exigen una mayor demanda de almacenamiento de muy alta velocidad y, con CPU de mayor cantidad de núcleos, redes más rápidas y una memoria más grande, el almacenamiento estaba generando cuellos de botella en muchas cargas de trabajo. Por lo general, esos requisitos de HPC de alta demanda están cubiertos por Parallel File System (PFS) que proporcionan acceso simultáneo a un solo archivo o a un conjunto de archivos de múltiples nodos, lo que distribuye de manera muy eficiente y segura los datos a múltiples LUN en varios servidores. Estos sistemas de archivos normalmente se basan en medios giratorios para proporcionar la mayor capacidad al menor costo. Sin embargo, con cada vez más frecuencia, la velocidad y la latencia de los medios giratorios no pueden cubrir la demanda de muchas cargas de trabajo de HPC modernas, lo que requiere el uso de tecnología flash como búferes de ráfagas, niveles más rápidos o incluso almacenamiento temporal muy rápido, local o distribuido. Dell EMC Ready Solution para HPC PixStor Storage utiliza nodos NVMe como componente para cubrir estas nuevas demandas de gran ancho de banda, además de ser flexible, escalable, eficiente y confiable.

Arquitectura de la solución

Este blog es parte de una serie de soluciones de Parallel File System (PFS) para entornos de HPC, en particular para Dell EMC Ready Solution para HPC PixStor Storage, donde se utilizan servidores DellEMC PowerEdge R640 con unidades NVMe como un nivel rápido basado en flash.
La solución de PFS de PixStor incluye General Parallel File System, un sistema muy extendido también conocido como Spectrum Scale. ArcaStream también incluye muchos otros componentes de software para proporcionar análisis avanzados, monitoreo y administración simplificados, búsqueda eficiente de archivos, funcionalidades avanzadas de gateway y más.

Los nodos NVMe que se presentan en este blog proporcionan un nivel basado en flash de muy alto rendimiento para la solución de PixStor. El rendimiento y la capacidad de este nivel NVMe se pueden escalar horizontalmente mediante nodos NVMe adicionales. Se proporciona una mayor capacidad mediante la selección de dispositivos NVMe adecuados compatibles con PowerEdge R640.

En la Figura 1, se presenta la arquitectura de referencia que representa una solución con 4 nodos NVMe mediante el módulo de metadatos de alta demanda, que maneja todos los metadatos en la configuración probada. El motivo es que, actualmente, estos nodos NVMe se usaban como destinos de almacenamiento exclusivos de datos. Sin embargo, los nodos NVMe también se pueden utilizar para almacenar datos y metadatos, o incluso como una alternativa flash más rápida al módulo de metadatos de alta demanda, si las demandas extremas de metadatos lo requieren. Estas configuraciones de los nodos NVMe no se probaron como parte de este trabajo, pero se probarán en el futuro.

 

SLN321889_en_US__1image001(8)

Figura 1 Arquitectura de referencia

Componentes de la solución

Esta solución emplea las últimas CPU escalables Intel Xeon de 2.ª generación, también conocidas como CPU Cascade Lake y la RAM más rápida disponible (2933 MT/s), con excepción de los nodos de administración, para que sigan siendo rentables. Además, la solución se actualizó a la versión más reciente de PixStor (5.1.3.1) que admite RHEL 7.7 y OFED 5.0, que serán las versiones de software compatibles en el momento del lanzamiento.

Cada nodo NVMe tiene ocho dispositivos Dell P4610 configurados como ocho dispositivos RAID 10 en un par de servidores, que emplean una solución NVMe over Fabrics para permitir la redundancia de datos no solo en el nivel de los dispositivos, sino también en el nivel del servidor. Además, cuando algún dato entra o sale de uno de esos dispositivos RAID10, se utilizan las 16 unidades de ambos servidores, lo que aumenta el ancho de banda de acceso al de todas las unidades. Por lo tanto, la única restricción para estos componentes es que deben venderse y utilizarse en pares. En esta solución, se pueden utilizar todas las unidades NVMe compatibles con PowerEdge R640; sin embargo, la P4610 tiene un ancho de banda secuencial de 3200 MB/s para lecturas y escrituras, así como especificaciones de un valor alto de IOPS aleatorias, que son funciones excelentes para escalar la cantidad estimada de pares necesarios para cumplir con los requisitos de este nivel flash.

Cada servidor R640 tiene dos HCA Mellanox ConnectX-6 de puerto único VPI HDR100 que se utilizan como conexiones IB EDR de 100 GB. Sin embargo, los nodos NVMe están preparados para admitir velocidades HDR100 cuando se utilizan con cables y switches HDR. Las pruebas de HDR100 en estos nodos se aplazan como parte de la actualización de HDR100 para toda la solución de PixStor. Ambas interfaces CX6 se utilizan en la sincronización de datos para RAID 10 (NVMe over Fabric) y como conectividad para el sistema de archivos. Además, proporcionan redundancia de hardware en el adaptador, el puerto y el cable. Para obtener redundancia en el nivel de switch, se requieren adaptadores VPI CX6 de dos puertos, pero se deben adquirir como componentes de S&P.
Para caracterizar el rendimiento de los nodos NVMe, del sistema que se muestra en la Figura 1, solo se utilizaron el módulo de metadatos de alta demanda y los nodos NVMe.

En la Tabla 1, se muestra la lista de los componentes principales de la solución. En la lista de unidades compatibles con ME4024, se utilizaron SSD de 960 GB para los metadatos y para la caracterización del rendimiento, y las unidades más rápidas pueden proporcionar mejores IOPS aleatorias y mejorar las operaciones de creación y eliminación de metadatos. Todos los dispositivos NVMe compatibles con PowerEdge R640 serán compatibles con los nodos NVMe.

Tabla 1 Componentes utilizados en el momento del lanzamiento de la versión y en el banco de pruebas

Componente de la solución

En la versión

Conectividad interna

Dell Networking S3048-ON Gigabit Ethernet

Subsistema de almacenamiento de datos

De 1 a 4 Dell EMC PowerVault ME4084

De 1 a 4 Dell EMC PowerVault ME484 (uno por cada ME4084)
Unidad HDD NL SAS3 de 80 a 12 TB 3,5”
Opciones 900 GB a 15 K, 1,2 TB a 10 K, 1,8 TB a 10 K, 2,4 TB a 10 K,
NLS de 4 TB, NLS de 8 TB, NLS de 10 TB, NLS de 12 TB.
    8 LUN, lineal 8 + 2 RAID 6, tamaño de fragmento de 512 KiB.
4 SSD SAS3 de 1,92 TB para metadatos: 2 RAID 1 (o 4 repuestos de HDD global, si se utiliza el módulo de metadatos de alta demanda opcional)

Subsistema de almacenamiento de metadatos de alta demanda opcional

De 1 a 2 Dell EMC PowerVault ME4024 (4 ME4024 si es necesario, solo configuración grande)
24 unidades SSD SAS3 de 960 GB y 2,5" (opciones 480 GB, 960 GB, 1,92 TB, 3,84 TB)
    12 LUN, RAID 1 lineal.

Controladoras de almacenamiento RAID

SAS de 12 Gbps

Procesador

Nodos NVMe

2 Intel Xeon Gold 6230 2,1 G, 20 C/40 T,
10,4 GT/s, caché de 27,5 M, Turbo, HT (125 W) DDR4-2933

Metadatos de alta demanda

Nodo de almacenamiento

Nodo de administración

2 Intel Xeon Gold 5220 de 2,2 G, 18C/36 T
, 10,4 GT/s, caché de 24,75 M, Turbo, HT (125 W) DDR4-2666

Memoria

Nodos NVMe

12 RDIMM de 16 GiB y 2933 MT/s (192 GiB)

Metadatos de alta demanda

Nodo de almacenamiento

Nodo de administración

12 DIMM de 16 GB, 2666 MT/s (192 GiB)

Sistema operativo

CentOS 7.7

Versión del kernel

3.10.0-1062.12.1.el7.x86_64

Software PixStor

5.1.3.1

Software del sistema de archivos

Spectrum Scale (GPFS) 5.0.4-3 con NVMesh 2.0.1

Conectividad de red de alto rendimiento

Nodos NVMe: 2 ConnectX-6 InfiniBand con EDR/100 GbE
Otros servidores: Mellanox ConnectX-5 InfiniBand EDR/100 GbE y 10 GbE

Switch de alto rendimiento

2 Mellanox SB7800

Versión de OFED

Mellanox OFED 5.0-2.1.8.0

Discos locales (SO y análisis/monitoreo)

Todos los servidores, excepto los que se enumeran                Nodos NVMe

3 SSD SAS3 de 480 GB (RAID1 + HS) para SO3 SSD SAS3 de 480 GB (RAID1 + HS) para SO

Controladora RAID PERC H730P                  Controladora RAID PERC H740P

Nodo de administración

3 SSD SAS3 de 480 GB (RAID1 + HS) para SO con controladora RAID PERC H740P

Administración de sistemas

iDRAC 9 Enterprise + DellEMC OpenManage

 

Caracterización del rendimiento

Para caracterizar este nuevo componente de Ready Solution, se utilizaron los siguientes parámetros de referencia:

 ·       IOzone N a N secuencial
 
·       IOR N a 1 secuencial
 
·       IOzone aleatorio
 
·       MDtest

Para todos los parámetros de referencia mencionados anteriormente, el banco de pruebas incluía los clientes que se indican en la Tabla 2 a continuación. Debido a que la cantidad de nodos de procesamiento disponibles para las pruebas era solo 16, cuando se requería una mayor cantidad de subprocesos, esos subprocesos se distribuyeron por igual en los nodos de procesamiento (es decir, 32 subprocesos = 2 subprocesos por nodo, 64 subprocesos = 4 subprocesos por nodo, 128 subprocesos = 8 subprocesos por nodo, 256 subprocesos = 16 subprocesos por nodo, 512 subprocesos = 32 subprocesos por nodo, 1024 subprocesos = 64 subprocesos por nodo). La intención era simular una mayor cantidad de clientes simultáneos con la cantidad limitada de nodos de procesamiento disponibles. Dado que algunos parámetros de referencia soportan una gran cantidad de subprocesos, se utilizó un valor máximo de hasta 1024 (especificado para cada prueba), a la vez que se evita la conmutación excesiva del contexto y otros efectos secundarios relacionados que afecten los resultados de rendimiento.

 

Tabla 2 Banco de pruebas del cliente

Cantidad de nodos de cliente

16

Nodo de cliente

C6320

Procesadores por nodo de cliente

2 Intel(R) Xeon(R) Gold E5-2697v4 de 18 núcleos a 2,30 GHz

Memoria por nodo de cliente

8 RDIMM de 16 GiB y 2400 MT/s (128 GiB)

BIOS

2.8.0

Kernel de SO

3.10.0-957.10.1

Software del sistema de archivos

Spectrum Scale (GPFS) 5.0.4-3 con NVMesh 2.0.1

 

Rendimiento de IOzone secuencial, N clientes para N archivos

El rendimiento secuencial de N clientes para N archivos se midió con la versión 3.487 de IOzone. Las pruebas ejecutadas variaron desde un solo subproceso hasta 1024 subprocesos en incrementos en potencias de dos.

Los efectos de almacenamiento en caché sobre los servidores se minimizaron mediante la configuración del pool de páginas GPFS ajustable en 16 GiB y el uso de archivos más grandes que el doble de ese tamaño. Es importante tener en cuenta que, para GPFS, la capacidad ajustable establece la cantidad máxima de memoria utilizada para almacenar datos en caché, independientemente de la cantidad de RAM instalada y libre. Además, es importante tener en cuenta que, si bien en las soluciones anteriores de HPC de Dell EMC, el tamaño de bloque para las transferencias secuenciales grandes es de 1 MiB, GPFS se formateó con bloques de 8 MiB y, por lo tanto, ese valor se utiliza en el parámetro de referencia para obtener un rendimiento óptimo. Eso puede parecer demasiado grande y aparentemente desperdiciar demasiado espacio, pero GPFS utiliza la asignación de subbloques para evitar esa situación. En la configuración actual, cada bloque se subdividió en 256 subbloques de 32 KiB cada uno.

Se utilizaron los siguientes comandos para ejecutar el parámetro de referencia para escrituras y lecturas, en el que $Threads era la variable con el número de subprocesos utilizados (de 1 a 1024 incrementos en potencias de dos), y threadlist era el archivo que asignaba cada subproceso en un nodo diferente, utilizando round robin para repartirlos homogéneamente entre los 16 nodos de computación.

Para evitar cualquier posible efecto de almacenamiento de datos en caché de los clientes, el tamaño total de los datos de los archivos era el doble de la cantidad total de RAM en los clientes utilizados. Es decir, dado que cada cliente tiene 128 GiB de RAM, para los conteos de subprocesos iguales o superiores a 16 subprocesos, el tamaño del archivo era de 4096 GiB dividido por la cantidad de subprocesos (la variable $Size a continuación se utilizó para administrar ese valor). Para aquellos casos con menos de 16 subprocesos (lo que implica que cada subproceso se ejecutaba en un cliente diferente), el tamaño del archivo se fijó en el doble de la cantidad de memoria por cliente, o 256 GiB.

iozone -i0 -c -e -w -r 8M -s $ G -t $Threads -+n -+m ./threadlist
iozone -i1 -c -e -w -r 8M -s $ G -t $Threads -+n -+m ./threadlist

SLN321889_en_US__2image002(1)

Figura 2 Rendimiento N a N secuencial

A partir de los resultados, podemos observar que el rendimiento de escritura aumenta con la cantidad de subprocesos utilizados y, a continuación, alcanza un estancamiento en alrededor de 64 subprocesos para escrituras y 128 subprocesos para lecturas. A continuación, el rendimiento de lectura también aumenta rápidamente con la cantidad de subprocesos y, luego, se mantiene estable hasta que se alcanza la cantidad máxima de subprocesos permitidos por IOzone; por lo tanto, el rendimiento secuencial de archivos grandes es estable incluso para 1024 clientes simultáneos. El rendimiento de escritura disminuye alrededor de un 10 % con 1024 subprocesos. Sin embargo, dado que el clúster del cliente tiene menos que esa cantidad de núcleos, no está claro si la disminución en el rendimiento se debe al intercambio y a una sobrecarga similar que no se observa en los medios giratorios (ya que la latencia de NVMe es muy baja en comparación con los medios giratorios) o si la sincronización de datos de RAID 10 está generando un cuello de botella. Se necesitan más clientes para aclarar ese punto. Se observó una anomalía en las lecturas con 64 subprocesos, donde el rendimiento no escaló a la velocidad que se observó para los puntos de datos anteriores y, luego, en el siguiente punto de datos, pasó a un valor muy cercano al rendimiento sostenido. Se necesitan más pruebas para encontrar la razón de tal anomalía, pero está fuera del alcance de este blog.

El rendimiento de lectura máximo para lecturas estuvo por debajo del rendimiento teórico de los dispositivos NVMe (~102 GB/s) o el rendimiento de los enlaces EDR, incluso suponiendo que un enlace se utilizó principalmente para el tráfico de NVMe over Fabrics (4 EDR con un ancho de banda aproximado de 96 GB/s).
Sin embargo, esto no es una sorpresa, ya que la configuración de hardware no está equilibrada con respecto a los dispositivos NVMe y los HCA IB en cada conector de la CPU. Un adaptador CX6 está asignado a la CPU1, mientras que la CPU2 dispone de todos los dispositivos NVMe y del segundo adaptador CX6. Todo el tráfico de almacenamiento que utilice el primer HCA debe usar las UPI para acceder a los dispositivos NVMe. Además, cualquier núcleo de la CPU1 utilizado debe acceder a los dispositivos o la memoria asignados a la CPU2, por lo que la localidad de los datos se ve afectada y se utilizan enlaces UPI. Esto puede explicar la reducción del rendimiento máximo, en comparación con el rendimiento máximo de los dispositivos NVMe o con la velocidad de línea de los adaptadores CX6 HCA. La alternativa para solucionar esa limitación es contar con una configuración de hardware equilibrada, lo que implica reducir la densidad a la mitad mediante el uso de un R740 con cuatro ranuras x16 y el uso de dos expansores PCIe x16 para distribuir equitativamente los dispositivos NVMe en dos CPU y tener un adaptador CX6 HCA en cada CPU.

Rendimiento de IOR secuencial, N clientes para 1 archivo

El rendimiento secuencial de N clientes en un único archivo compartido se midió con la versión 3.3.0 de IOR, con la ayuda de OpenMPI v4.0.1 para ejecutar la prueba en los 16 nodos de computación. Las pruebas ejecutadas variaron desde un subproceso hasta 512 subprocesos, ya que no había suficientes núcleos para 1024 subprocesos o más. En estas pruebas de parámetro de referencia, se utilizaron bloques de 8 MiB para obtener un rendimiento óptimo. La sección anterior de pruebas de rendimiento ofrece una explicación más completa de por qué es importante.

Los efectos del almacenamiento de datos en caché se minimizaron configurando el parámetro ajustable de grupo de páginas de GPFS en 16 GiB, y el tamaño total del archivo fue el doble de la cantidad total de RAM en los clientes utilizados. Es decir, dado que cada cliente tiene 128 GiB de RAM, para los conteos de subprocesos iguales o superiores a 16 subprocesos, el tamaño del archivo era de 4096 GiB, y se dividió la misma cantidad de este total por la cantidad de subprocesos (la variable $Size a continuación se utilizó para administrar ese valor). Para aquellos casos con menos de 16 subprocesos (lo que implica que cada subproceso se ejecutaba en un cliente diferente), el tamaño del archivo era el doble de la cantidad de memoria por cliente utilizado por el número de subprocesos, o en otras palabras, se solicitó que cada subproceso usara 256 GiB.

Se utilizaron los siguientes comandos para ejecutar el parámetro de referencia para escrituras y lecturas, en el que $Threads era la variable con el número de subprocesos utilizados (de 1 a 1024 incrementos en potencias de dos), y my_hosts.$Threads es el archivo correspondiente que asignaba cada subproceso en un nodo diferente, utilizando round robin para repartirlos homogéneamente entre los 16 nodos de computación.

mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -w -s 1 -t 8m -b $ G

mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --mca btl_openib_allow_ib 1 --mca pml ^ucx --oversubscribe --prefix /mmfs1/perftest/ompi /mmfs1/perftest/lanl_ior/bin/ior -a POSIX -v -i 1 -d 3 -e -k -o /mmfs1/perftest/tst.file -r -s 1 -t 8m -b $ G

 

SLN321889_en_US__3image003(5)

Figura 3 Rendimiento N a 1 secuencial

A partir de los resultados, podemos observar que el rendimiento de lectura y escritura es alto, independientemente de la necesidad implícita de mecanismos de bloqueo, ya que todos los subprocesos acceden al mismo archivo. El rendimiento aumenta de nuevo de manera muy rápida con el número de subprocesos utilizados y, luego, alcanza un estancamiento que es relativamente estable para lecturas y escrituras hasta el número máximo de subprocesos utilizados en esta prueba. Observe que el rendimiento máximo de lectura fue de 51,6 GB/s con 512 subprocesos, pero el estancamiento en el rendimiento se alcanza en aproximadamente 64 subprocesos. De manera similar, observe que el rendimiento máximo de escritura de 34,5 GB/s se alcanzó con 16 subprocesos y alcanzó un estancamiento que se puede observar hasta la cantidad máxima de subprocesos utilizados.

Bloques pequeños aleatorios de rendimiento de IOzone, N clientes para N archivos

El rendimiento aleatorio de N clientes para N archivos se midió con la versión 3.487 de IOzone. Las pruebas ejecutadas variaron desde un solo subproceso hasta 1024 subprocesos en incrementos en potencias de dos.

Las pruebas ejecutadas variaron desde un solo subproceso hasta 512 subprocesos, ya que no había suficientes núcleos de clientes para 1024 subprocesos. Cada subproceso usaba un archivo diferente y a los subprocesos se les asignaba round robin en los nodos de cliente. En estas pruebas de parámetro de referencia se utilizaron bloques de 4 KiB para emular el tráfico de bloques pequeños y usar una profundidad de línea de espera de 16. Se comparan los resultados de la solución de gran tamaño y la expansión de capacidad.

Los efectos del almacenamiento de datos en caché se minimizaron nuevamente mediante la configuración del grupo de páginas de GPFS ajustable en 16 GiB y, para evitar cualquier posible efecto de almacenamiento de datos en caché de los clientes, el tamaño total de los datos de los archivos era el doble de la cantidad total de RAM en los clientes utilizados. Es decir, dado que cada cliente tiene 128 GiB de RAM, para los conteos de subprocesos iguales o superiores a 16 subprocesos, el tamaño del archivo era de 4096 GiB dividido por la cantidad de subprocesos (la variable $Size a continuación se utilizó para administrar ese valor). Para aquellos casos con menos de 16 subprocesos (lo que implica que cada subproceso se ejecutaba en un cliente diferente), el tamaño del archivo se fijó en el doble de la cantidad de memoria por cliente, o 256 GiB.

iozone -i0 -I -c -e -w -r 8M -s $ G -t $Threads -+n -+m ./nvme_threadlist                                     <= Create the files sequentially
iozone -i2 -I -c -O -w -r 4k -s $ G -t $Threads -+n -+m ./nvme_threadlist                                      <= Perform the random reads and writes.

 

SLN321889_en_US__4image004(1)

Figura 4 Rendimiento N a N aleatorio

A partir de los resultados, podemos observar que el rendimiento de escritura comienza en un valor alto de 6000 IOps y aumenta constantemente hasta 1024 subprocesos, donde parece alcanzar un estancamiento con más de 5 millones de IOPS si se pudieran usar más subprocesos. El rendimiento de lectura, por otro lado, comienza en 5000 IOps y aumenta continuamente con el número de subprocesos utilizados (hay que tener en cuenta que el número de subprocesos se duplica para cada punto de datos) y alcanza el rendimiento máximo de 7,3 millones de IOPS a 1024 subprocesos, sin señales de alcanzar un estancamiento. El uso de más subprocesos requerirá más de los 16 nodos de procesamiento para evitar la inanición de recursos y un intercambio excesivo que pueda reducir un rendimiento aparente, donde los nodos NVMe podrían, de hecho, mantener el rendimiento.

Rendimiento de metadatos con MDtest mediante el uso de archivos de 4 KiB

El rendimiento de los metadatos se midió con MDtest versión 3.3.0, con la ayuda de OpenMPI v4.0.1 para ejecutar el parámetro de referencia en los 16 nodos de computación. Las pruebas ejecutadas variaron desde un subproceso hasta 512 subprocesos. El parámetro de referencia se utilizó solo para archivos (no para metadatos de directorios) y se obtuvo la cantidad de creaciones, estadísticas, lecturas y eliminaciones que la solución puede manejar, y los resultados se compararon con la solución de gran tamaño.

Se utilizó el módulo opcional de metadatos de alta demanda, pero con un solo arreglo ME4024, aun cuando la configuración de gran tamaño probada en este trabajo estaba destinada a contar con dos ME4024. El motivo para usar ese módulo de metadatos es que, actualmente, estos nodos NVMe se utilizan como destinos de almacenamiento solo para los datos. Sin embargo, los nodos se pueden utilizar para almacenar datos y metadatos, o incluso como una alternativa flash al módulo de metadatos de alta demanda, si las demandas extremas de metadatos lo requieren. Esas configuraciones no se probaron como parte de este trabajo.

Dado que se utilizó el mismo módulo de metadatos de alta demanda para el análisis comparativo anterior de la solución de almacenamiento DellEMC Ready Solution para HPC PixStor, los resultados de metadatos serán muy similares en comparación con los resultados del blog anterior. Por esa razón, no se realizó el estudio con archivos vacíos, sino que se utilizaron archivos de 4 KiB. Dado que los archivos de 4 KiB no caben en un inodo junto con la información de metadatos, se utilizarán nodos NVMe para almacenar los datos de cada archivo. Por lo tanto, MDtest puede dar una idea aproximada del rendimiento de los archivos pequeños para las lecturas y el resto de las operaciones de metadatos.

Se utilizó el siguiente comando para ejecutar el parámetro de referencia, en el que $Threads fue la variable con la cantidad de subprocesos utilizados (de 1 a 512 incrementos en potencias de dos) y my_hosts.$Threads es el archivo correspondiente que asignó cada subproceso en un nodo diferente, utilizando round robin para distribuirlos de manera homogénea en los 16 nodos de computación. De manera similar al parámetro de referencia de I/O aleatoria, la cantidad máxima de subprocesos se limitó a 512, ya que no hay suficientes núcleos para 1024 subprocesos y la conmutación de contexto afectaría los resultados, lo que informa un número menor que el rendimiento real de la solución.

mpirun --allow-run-as-root -np $Threads --hostfile my_hosts.$Threads --prefix /mmfs1/perftest/ompi --mca btl_openib_allow_ib 1 /mmfs1/perftest/lanl_ior/bin/mdtest -v -d /mmfs1/perftest/ -i 1 -b $Directories -z 1 -L -I 1024 -y -u -t -F -w 4K -e 4K

Dado que los resultados de rendimiento pueden verse afectados por la cantidad total de IOPS, la cantidad de archivos por directorio y la cantidad de subprocesos, se decidió mantener fija la cantidad total de archivos en 2 archivos MiB (2^21 = 2097152), la cantidad de archivos por directorio fijo en 1024 y la cantidad de directorios varió a medida que cambió la cantidad de subprocesos, como se muestra en la Tabla 3:

Tabla 3 Distribución MDtest de archivos en directorios

Cantidad de subprocesos

Cantidad de directorios por subproceso

Cantidad total de archivos

1

2048

2 097 152

2

1024

2 097 152

4

512

2 097 152

8

256

2 097 152

16

128

2 097 152

32

64

2 097 152

64

32

2 097 152

128

16

2 097 152

256

8

2 097 152

512

4

2 097 152

 

SLN321889_en_US__5image005(5)

Figura 5 Rendimiento de los metadatos: archivos de 4 KiB

En primer lugar, tenga en cuenta que la escala elegida fue logarítmica con base 10, para permitir la comparación de operaciones que tienen diferencias en varios pedidos de magnitud; de lo contrario, algunas de las operaciones se verían como una línea plana cercana a 0 en una escala lineal. Un gráfico logarítmico con base 2 podría ser más apropiado, ya que el número de subprocesos aumenta en potencias de 2, pero el gráfico se vería muy similar y la gente tiende a manejar y recordar mejor los números basados en potencias de 10.

El sistema obtiene muy buenos resultados, como se informó anteriormente, con las operaciones de estadísticas que alcanzan el valor máximo en 64 subprocesos con casi 6,9 millones de op/s y, luego, se reduce para obtener recuentos de subprocesos más altos que alcanzan un estancamiento. Las operaciones de creación alcanzan el máximo de 113 000 op/s en 512 subprocesos, por lo que se espera que continúe aumentando si se utilizan más nodos de cliente (y núcleos). Las operaciones de lecturas y eliminaciones alcanzaron su máximo con 128 subprocesos, alcanzando su máximo en casi 705 000 op/s para lecturas y 370 000 op/s para eliminaciones, y, luego, alcanzan estancamientos. Las operaciones de estadísticas tienen más variabilidad, pero una vez que alcanzan su valor máximo, el rendimiento no disminuye por debajo de los 3,2 millones de op/s para estadísticas. La creación y la extracción son más estables una vez que alcanzan un estancamiento y permanecen por encima de los 265 000 op/s para eliminación y 113 000 op/s para creación. Por último, las lecturas alcanzan un estancamiento con un rendimiento superior a 265 000 op/s.

 

Conclusiones y trabajo a futuro

Los nodos NVMe son una adición importante a la solución de almacenamiento HPC, ya que proporcionan un nivel de muy alto rendimiento, con buena densidad, muy alto rendimiento de acceso aleatorio y muy alto rendimiento secuencial. Además, la solución escala horizontalmente en capacidad y rendimiento de manera lineal a medida que se agregan más módulos de nodos NVMe. El rendimiento de los nodos NVMe, que se presenta en la Tabla 4, se considera estable y dichos valores pueden emplearse para estimar el rendimiento con una cantidad distinta de nodos NVMe.
Sin embargo, tenga en cuenta que cada par de nodos NVMe proporcionará la mitad de cualquier número que se muestre en la Tabla 4.
Esta solución proporciona a los clientes de HPC un sistema de archivos paralelos muy confiable utilizado por muchos de los 500 clústeres de HPC principales. Además, proporciona funcionalidades de búsqueda excepcionales, monitoreo y administración avanzados, y la adición de gateways opcionales permite el uso compartido de archivos a través de protocolos estándar omnipresentes, como NFS, SMB y otros, a tantos clientes como sea necesario.

Tabla 4 Rendimiento máximo y sostenido para dos pares de nodos NVMe

 

Rendimiento máximo

Rendimiento sostenido

Escritura

Lectura

Escritura

Lectura

Secuencial grande de N clientes para N archivos

40,9 GB/s

84,5 GB/s

40 GB/s

81 GB/s

Secuencial grande de N clientes a un único archivo compartido

34,5 GB/s

51,6 GB/s

31,5 GB/s

50 GB/s

Bloques pequeños aleatorios de N clientes para N archivos

5,06 MIOPS

7,31 MIOPS

5 MIOPS

7,3 MIOPS

Creación de archivos 4KiB de metadatos

113 000 IOps

113 000 IOps

Archivos 4KiB de estadísticas de metadatos

6,88 millones de IOps

3,2 millones de IOps

Archivos 4KiB de lectura de metadatos

705 000 IOps

500 000 IOps

Eliminar archivos 4KiB de metadatos

370 000 IOps

265 000 IOps

 

Dado que los nodos NVMe solo se usaban para datos, es posible que el trabajo futuro incluya su uso para datos y metadatos, y que tengan un nivel basado en flash autónomo con un mejor rendimiento de metadatos debido al mayor ancho de banda y menor latencia de los dispositivos NVMe en comparación con las SSD SAS3 detrás de las controladoras RAID. Como alternativa, si un cliente tiene demandas de metadatos extremadamente altas y requiere una solución más densa que la que puede proporcionar el módulo de metadatos de alta demanda, algunos o todos los dispositivos RAID 10 distribuidos se pueden usar para metadatos de la misma manera que se usan ahora los dispositivos RAID 1 en los arreglos ME4024.
Otro blog que se publicará pronto caracterizará los nodos Gateway de PixStor, los cuales permiten conectar la solución PixStor a otras redes mediante protocolos NFS o SMB y pueden escalar el rendimiento. Además, la solución se actualizará a HDR100 muy pronto, y se espera que otro blog aborde ese trabajo.

 

Affected Products

High Performance Computing Solution Resources
Article Properties
Article Number: 000130558
Article Type: Solution
Last Modified: 21 Feb 2021
Version:  3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.