ClusterNumbers: una herramienta de evaluación comparativa automatizada para clústeres de HPC

Hola otra vez. Te habla Simón Sánchez y en esta ocasión vamos a hablar sobre ClusterNumbers: una herramienta de evaluación comparativa automatizada para clústeres de HPC

Durante mi época universitaria, y como proyecto de tesis, mi amigo y profesor Jorge Castellanos me pidió que desarrollara una herramienta que detecte automáticamente algunas características de los nodos en un cluster HPC, como la memoria, el tipo de procesador y la cantidad de procesador. La idea es poder compilar una serie de puntos de referencia que caractericen claramente el rendimiento del clúster y permitan a los usuarios ejecutar estas pruebas y ver los resultados a través de una GUI en su PC de escritorio.

Para medir de manera efectiva el desempeño de un clúster, hay muchos factores a considerar, así como muchas herramientas para medir cada uno de estos factores, por lo que necesita conocer todos los componentes involucrados en el desempeño del sistema en consideración.

No todas las personas que utilizan clústeres de HPC están familiarizadas con el hardware, el sistema operativo y las bibliotecas del sistema de bajo nivel de las que depende el clúster. Por tanto, es necesario desarrollar una herramienta que permita que el proceso de medición sea práctico para administradores de clústeres o incluso para usuarios no especializados (es decir, físicos, químicos, ingenieros, etc.). La herramienta cubrirá los elementos principales que afectan el rendimiento del clúster, los agrupará en una única interfaz gráfica y proporcionará al usuario una configuración predeterminada para el proceso de evaluación comparativa. Además, debe poder mostrar resultados y proporcionar sugerencias que identifiquen los factores que podrían afectar el rendimiento del sistema.

Con este fin, he seleccionado un primer conjunto de puntos de referencia que pueden proporcionar una buena cobertura de los principales subsistemas (CPU, memoria, red) asociados con el rendimiento de un clúster HPC. Estos puntos de referencia son:

  • El desafío de HPC: Este punto de referencia se compone de siete pruebas individuales que se pueden ejecutar como una sola suite o individualmente (que es una personalización que hice).

o PTRANS (red): mide la capacidad total de transferencia de red del clúster utilizando grandes bloques de datos mediante la realización de una transposición de matriz.

o Linpack de alto rendimiento (HPL): Classic Linpack mide las operaciones de punto flotante por segundo (FLOPS) en todo el clúster.

o DGEMM (CPU): similar a Linpack, pero solo matriz-matriz se multiplica en nodos separados sin comunicación entre ellos.

o CORRIENTE (memoria): mide el ancho de banda entre la CPU y la memoria mediante operaciones de multiplicación y suma escalares vectoriales.

o Acceso aleatorio (memoria): mide la tasa de actualización de números enteros en ubicaciones de memoria aleatorias.

o FFTE (CPU): mide la velocidad de ejecución de la CPU en FLOPS mediante transformadas rápidas discretas de Fourier.

o b_eff (red): mida la latencia y el ancho de banda de la red del clúster mediante pequeños conjuntos de datos y rutinas MPI.

  • Netperf (red): se utiliza para pruebas de red de igual a igual.
  • IOzone (disco): mide varias operaciones de E / S.

Habiendo definido esto, hablemos de la herramienta, a la que llamo ClusterNumbers.

ClusterNumbers se ha codificado en Python y se divide en tres módulos principales: el módulo de servidor, el módulo de comunicación y el módulo de gráficos.

los Módulo servidor (SM) se ejecuta como un demonio en el nodo de administración del clúster y es responsable de analizar todo el clúster recorriendo cada nodo y recopilando información sobre el tipo y la cantidad de procesador, la arquitectura del sistema operativo y la cantidad de memoria de cada uno. nodo. Con esta información, la herramienta ajusta los parámetros en los archivos de configuración del demonio MPI (MPICH2) y en algunas bibliotecas y puntos de referencia para compilarlos y ejecutarlos de manera óptima.

La interacción con el SM se puede realizar a través de un cliente de línea de comandos (local al nodo de administración del clúster) o mediante el uso del cliente GUI basado en eventos en una PC de escritorio remota. En ambos casos, se utiliza un socket (tubería) Unix para pasar mensajes al demonio en ejecución.

los Módulo de comunicación (CM) consta de dos partes, la primera es un servidor SSH estándar que se ejecuta en el nodo de administración del clúster. El segundo es un conjunto de bibliotecas y rutinas del lado del cliente llamadas por el módulo de gráficos. Estas rutinas están codificadas utilizando el motor de red Twisted-conch para Python. El CM funciona abriendo un canal entre el cliente y el nodo de administración, utilizando el protocolo SSH y pasando comandos y datos a través de él. También maneja la autenticación.

los Módulo gráfico (GM) se ejecuta desde una PC de escritorio y maneja la interacción del usuario. La primera vez que se conecte a un clúster usando el GM, se le presentará esta ventana de inicio de sesión.

Ventana principal

El primer paso es la autenticación. Un usuario debe proporcionar el nombre o la dirección IP del nodo de administración e ingresar el nombre de usuario y la contraseña para ese sistema.

Después de iniciar sesión correctamente, se activa el menú Configuración. Aquí establece algunos parámetros del sistema, como el protocolo de comunicación de red entre los nodos (rsh y ssh hasta ahora), la ruta en el nodo de administración del directorio donde reside el demonio (SM), independientemente de si el clúster tiene o menos un nodo de administración dedicado y nodos de clúster. Tan pronto como termine esta configuración, el GM envía la configuración al SM, incrusta la información del clúster y luego activa la siguiente interfaz.

Ventana de configuración del sistema

En este punto, se muestra el submenú Compile Benchmarks. Tan pronto como haga clic en él, el GM envía un comando al SM y comienza a compilar cada punto de referencia. Este proceso puede llevar algún tiempo.

Si selecciona el submenú Obtener configuración, puede forzar una actualización del estado del proceso de compilación y se activa el submenú «Ejecutar parámetros».

Si selecciona el submenú Parámetros de ejecución, le mostrará una configuración inicial recomendada para algunos puntos de referencia. Puede ajustarlos como mejor le parezca.

Parámetros de tiempo de ejecución de HPCC / HPL

Cuando el primer benchmark está listo para ejecutarse, aparece el menú Benchmarks mostrando el submenú correspondiente al benchmark compilado. Le recomiendo que no ejecute ningún punto de referencia hasta que se complete todo el proceso de compilación, ya que interferirá con los resultados.

Cuando esté listo para ejecutar un punto de referencia, puede seleccionarlo entre cuatro categorías: Global Benchmarks que hace uso, directa o indirectamente, de más de un componente de clúster, CPU Benchmark, Memory Benchmark y Communication Benchmark.

Tan pronto como finalice uno de estos puntos de referencia, se muestra el submenú Resultados. Si hace clic en él, aparecerá una ventana que muestra los resultados de una lista, algunos análisis y sugerencias. Puede guardarlos en un archivo de texto haciendo clic en el botón Guardar.

Tenga en cuenta que esto es solo una descripción general de ClusterNumbers. Una descripción funcional completa de la herramienta está más allá del alcance de este artículo.

En este momento, ClusterNumbers es completamente funcional, pero solo funciona en clústeres de Linux x86 y x86_64 que utilizan el sistema de archivos NFS compartido y una interconexión Ethernet. Este fue el único tipo de clúster al que tuve acceso durante el desarrollo, la razón principal por la que abrí mi herramienta a otros desarrolladores.

Creo que permitir que otros usuarios contribuyan a este proyecto es la mejor manera de expandir el soporte para otras arquitecturas de clústeres. Además, con los comentarios de la comunidad, yo o cualquier colaborador podemos agregar nuevos puntos de referencia y funciones. Hasta ahora, he recibido una gran respuesta e interés de los usuarios de HPC de todo el mundo.

¿El siguiente paso para ClusterNumbers? Como proyecto de código abierto, estoy creando una hoja de ruta utilizando algunas ideas que tengo, así como los comentarios de la comunidad HPC. Con esto podemos dar la dirección del proyecto y establecer metas y plazos específicos. Además, estoy mejorando la documentación actual para que sea más fácil para los nuevos contribuyentes entender el código.

los el proyecto se alojará en Source Forge y estará abierto para contribuciones a fines de este mes en espera de su ayuda e ideas.

¡Espero verte en la lista de colaboradores!

—–

Acerca de

Raúl Gómez, alias NachoGomez, es un «Licenciado» en Ciencias de la Computación de Valencia, Venezuela. Tiene una sólida experiencia en las áreas de computación de alto rendimiento, benchmarking, programación y virtualización. Actualmente trabaja para RadiumTec, su consultora. Puede ser contactado en [email protected].

Deberías compartir en tus redes sociales para que tus colegas lo sepan

??? ? ? ???

Comparte