Consideraciones sobre el rendimiento del sistema de archivos
Si ha ejecutado cargas de trabajo de HPC, es muy posible que haya visto los términos operaciones, tamaño de bloque, IOPS, rendimiento y latencia. Probablemente ha considerado estos factores al elegir el almacenamiento.
Al final de esta sección, debería tener conocimientos prácticos de estos cinco factores de rendimiento y cómo afectan a las cargas de trabajo de HPC.
Operaciones
El término Operaciones hacen referencia a cualquier actividad entre el host o la máquina y el sistema de archivos o el disco.
Por ejemplo, probablemente esté familiarizado con estas operaciones que implican un sistema operativo y su disco local:
- Crear (un archivo)
- Eliminar
- Abrir
- Cerrar
- Lectura
- Escritura
- Append
- Obtener atributo
- Establecer atributo
- Cambiar nombre
NFS representa la interacción de nivel de red entre un cliente y un servidor de archivos. Observe que algunas de estas operaciones son similares a las operaciones locales. Pero como NFS es una API de red, estas operaciones de red pueden implicar varias operaciones locales.
create
(archivo o vínculo)mkdir
readdir
oreaddirplus
getattr
setattr
lookup
(búsqueda de un identificador de archivos en un directorio)link
/symlink
/readlink
read
rename
remove
rmdir
write
¿Cómo afectan las operaciones al almacenamiento de HPC?
Resulta útil comprender cómo afectan las operaciones al sistema de almacenamiento. Por ejemplo, supongamos que la carga de trabajo de HPC crea un gran número de archivos pequeños en estructuras de directorio anidadas. En este escenario, la carga de trabajo requeriría un número mayor de operaciones que para una carga de trabajo que lee unos cuantos archivos secuenciales de gran tamaño.
Estos patrones de acceso se analizarán en la unidad siguiente. create
implica varias operaciones, por lo que cuantos más archivos cree su carga de trabajo, mayor será el efecto sobre el rendimiento.
Tamaño de bloque
El tamaño de bloque hace referencia al tamaño de datos más pequeño (en bytes) que un sistema de archivos puede leer o escribir como una operación.
Para los fines de este módulo, el tamaño de bloque también hace referencia al tamaño de carga útil de un fragmento de datos NFS (lectura y escritura) que se puede transmitir entre clientes y servidores NFS.
Los servidores y clientes NFS negocian el tamaño de bloque y aceptan el mayor tamaño posible que admitan mutuamente. La configuración por defecto puede variar entre 4 KB y 64 KB. El valor configurable máximo actual es de 1 MB. Los paquetes de datos individuales no pueden tener cargas mayores que el valor establecido.
Puede configurar explícitamente el tamaño de bloque en los clientes. Compruebe la instrucción mount
completa en las máquinas del clúster de HPC para determinar el valor. Se establecen los tamaños predeterminados. No se configuran explícitamente los valores de la instrucción mount
.
Los dos argumentos que se usan para configurar el tamaño de bloque de NFS son rsize
(tamaño de lectura) y wsize
(tamaño de escritura).
Si configura un tamaño de bloque pequeño. O su elección de sistemas de archivos tiene un tamaño máximo de bloque pequeño y su carga de trabajo consiste en archivos de gran tamaño. El rendimiento se ve afectado por la fragmentación adicional de los archivos grandes.
E/S
El término IOPS equivale a operaciones de entrada/salida por segundo. El número de IOPS en el entorno de almacenamiento depende de estos atributos:
- El tipo de medio de almacenamiento. Por ejemplo, unidades de disco duro (HDD) frente a unidades de estado sólido (SSD).
- Latencia introducida por la conectividad de red.
- El tamaño de bloque que usa el sistema de archivos.
- La cantidad de acceso simultáneo disponible para el sistema de archivos.
Una solución de almacenamiento tiene un único número de IOPS. Por ejemplo, si usa un disco administrado de Azure que admite 5000 IOPS, puede tener hasta 5000 operaciones por segundo. Pero el número de IOPS es una medida del máximo total para todas las operaciones de lectura o escritura en el disco, incluidas las lecturas y escrituras de sobrecarga del sistema.
El valor de IOPS es una guía del posible número máximo de operaciones que el disco o el entorno de NAS pueden admitir.
Normalmente, las medidas se dividen entre las operaciones de lectura y escritura aleatorias y secuenciales.
- Una operación aleatoria es la lectura o escritura de datos en distintos puntos aleatorios de un disco o archivo. Por ejemplo, la edición de un intervalo específico de bytes en algún lugar de un archivo.
- Una operación secuencial es el acceso contiguo del archivo y con una lectura desde su inicio.
Throughput
El rendimiento se refiere a la velocidad de transferencia total posible que el sistema de archivos puede controlar, medida en bytes por segundo.
Para realizar un cálculo básico del rendimiento, multiplique el tamaño de bloque por el valor de IOPS del sistema.
Por ejemplo, si tiene un disco que admite 3000 IOPS y el tamaño de bloque es de 4 KB, el rendimiento total posible es de 12 MB/s.
Este cálculo proporciona una comprensión básica de las posibilidades de rendimiento general del sistema de archivos. Pero el rendimiento real puede ser diferente. Hay otros factores que afectan al rendimiento, incluidos aspectos como la sobrecarga de red si se crea o elimina un gran número de archivos pequeños.
Latencia
La latencia hace referencia a la cantidad de tiempo que se tarda en completar una operación. Cuanto mayor sea la latencia, mayor será la probabilidad de que se ejecuten cargas de trabajo más lentas.
Puede haber varios orígenes de latencia en una sola arquitectura, y cada uno contribuye a un efecto total en la latencia.
La latencia del sistema de archivos puede producirse en estas condiciones:
- Conexión de red lenta entre el cliente y el servidor.
- Congestión en la red, o bien en el servidor de archivos, debido a un gran número de solicitudes simultáneas
- Latencia natural debido a la distancia entre los clientes y los servidores (por ejemplo, en una WAN).
- Acceso lento al subsistema de disco en el propio servidor de archivos.
La latencia no siempre es coherente o está claramente documentada. Tendrá que ejecutar pruebas para determinar la latencia entre las máquinas del clúster de HPC y el punto de conexión de almacenamiento.
La latencia también es un problema acumulativo. Es posible que el rendimiento de la red sea un factor contribuyente, pero también puede haber otros, como un sistema operativo mal configurado en la máquina o ineficiencias en el propio código de la carga de trabajo. Cada uno de estos factores afectará a la latencia general.
La latencia es el factor más importante a la hora de evaluar el rendimiento real del sistema de archivos. Las latencias mayores se traducen en menos IOPS. Menos IOPS se pueden traducir en un rendimiento menor.
Prueba y cálculo de valores de línea de base
Al elegir la configuración de rendimiento exacta para las cargas de trabajo de HPC, la propia carga de trabajo tiene una influencia considerable.
Las ofertas de sistema de archivos de Azure presentarán los valores previstos de IOPS y rendimiento. Si decide compilar una solución NAS propia, tendrá que usar las métricas documentadas para cada máquina virtual y SKU de disco administrado.
Puede usar una configuración de HPC de centro de recursos local como punto de partida para las expectativas de rendimiento. Tenga en cuenta que las soluciones en la nube permiten crear varios entornos que ejecutan cargas de trabajo. Por lo tanto, es posible que tenga más flexibilidad por carga de trabajo en Azure. Por el contrario, el entorno local se ha creado en función de una capacidad específica que no se expande fácilmente (de forma dinámica).
Puede usar herramientas básicas como ping
, fio
, iozone
o iometer
para determinar los números de línea de base del sistema de archivos de Azure.
Generación de perfiles de aplicaciones
Es posible que tenga una carga de trabajo intensiva a nivel de E/S que necesite una cantidad significativa de IOPS y rendimiento para ejecutarse de forma eficaz. O bien la carga de trabajo puede iniciarse, leer las bibliotecas y los datos de origen en la memoria y continuar con la E/S de almacenamiento mínima. Es posible que la primera carga de trabajo de la lista anterior escriba los datos intermedios que se deben leer en otras máquinas de HPC. Cada una de estas dinámicas contribuye a la manera de afrontar la solución de almacenamiento. Para asegurarse de que las máquinas puedan leer esos datos lo más rápido posible, céntrese en reducir la latencia de lectura. Pero si la carga de trabajo escribe información intermedia, o temporal, en los discos, es probable que quiera asegurarse de que cada máquina de HPC pueda acceder rápidamente a discos locales o a una solución NAS compartida rápida para esas escrituras. En función de las máquinas que necesiten leer esas escrituras intermedias.
Lo más probable es que quiera invertir en la generación de perfiles de las aplicaciones para su uso de E/S de almacenamiento. La generación de perfiles se volverá más importante a medida que crezca el clúster de HPC en tamaño y número de cargas de trabajo.
La generación de perfiles implica el uso de herramientas que se ejecutan en sus máquinas HPC y en su entorno de almacenamiento. Estas herramientas informan sobre la cantidad, el tipo y el tamaño de las operaciones que se ejecutan en el entorno de almacenamiento.
La generación de perfiles de una carga de trabajo puede ser difícil debido a la cantidad de datos que se pueden generar. Herramientas como iostat
y sar
pueden crear resultados significativos a lo largo del tiempo. Es posible que tenga que analizar los resultados y que tenga que analizarlos aún más, generando histogramas.
Si utiliza una solución NAS, tendrá que recopilar las estadísticas de la interfaz del proveedor durante las ejecuciones de generación de perfiles. Luego, correlacione esa información con los datos de la máquina HPC para comprobar los patrones de E/S.
Hay disponibles herramientas de generación de perfiles de terceros para facilitar el análisis de E/S, algunas ofertadas por proveedores de aplicaciones de HPC.