Descripción de los conceptos del programador de clústeres

Completado

Al final de esta unidad, debería poder describir las funciones básicas de los programadores de trabajos, los administradores de recursos, la informática de alto rendimiento y la informática de alto rendimiento.

Programadores de trabajos

Un programador de trabajos de informática en clústeres es un componente de software que administra y asigna recursos informáticos (como CPU, memoria y discos) a los trabajos enviados al clúster. Los programadores de trabajos determinan los nodos más adecuados del clúster para ejecutar un trabajo determinado en función de la disponibilidad de los recursos, la prioridad del trabajo y otros factores. Los programadores de trabajos garantizan que varios trabajos que se ejecutan en paralelo no interfieran entre sí. Los programadores de trabajos incluyen colas para mantener los trabajos pendientes y una directiva para programarlos.

Los principales objetivos de un programador de trabajos son los siguientes:

  • Minimice el tiempo entre la finalización del trabajo de envío del trabajo.
  • Optimizar el uso de CPU.
  • Maximizar el rendimiento del trabajo.

Los usuarios envían trabajos por lotes no interactivos al programador. El programador almacena los trabajos por lotes, evalúa sus requisitos y prioridades de recursos y distribuye los trabajos a los nodos de proceso adecuados.

El script de trabajo enviado mediante el programador agrega el trabajo a una cola de trabajos. Según los recursos disponibles que necesite el trabajo, el programador decide cuándo sale de la cola y en qué nodos de back-end se ejecuta.

Hay varias estrategias básicas que los programadores pueden usar para determinar qué trabajo ejecutar a continuación:

  • Por orden de llegada: Los trabajos se ejecutan en el mismo orden en el que entran primero en la cola. La ventaja es que cada trabajo se ejecutará definitivamente; sin embargo, un pequeño conjunto de trabajos podría esperar un tiempo inadecuado en comparación con su tiempo de ejecución real.

  • Trabajo más corto primero: En función del tiempo de ejecución declarado en el script de trabajo, el programador calcula el tiempo de ejecución del trabajo. Los trabajos se clasifican en el orden ascendente del tiempo de ejecución. Aunque los trabajos cortos se iniciarán después de un breve tiempo de espera, es posible que nunca se inicien trabajos de larga duración (o al menos trabajos declarados como tales).

  • Reposición: El programador mantiene el concepto de First Come, First Serve sin impedir que los trabajos de ejecución prolongada se ejecuten. El programador ejecuta el trabajo solo cuando se puede ejecutar el primer trabajo de la cola. De lo contrario, el programador pasa por el resto de la cola para comprobar si se puede ejecutar otro trabajo sin extender el primer trabajo en el tiempo de espera de la cola. Si encuentra este trabajo, el programador ejecuta ese trabajo. Normalmente, los trabajos pequeños encuentran tiempos de cola cortos.

Resource Manager

Un administrador de recursos de informática en clústeres asigna recursos dentro de un clúster informático. Los administradores de recursos son responsables de asignar memoria, CPU, almacenamiento y ancho de banda de red a los trabajos que se ejecutan en el clúster. Este componente supervisa el uso de recursos dentro del clúster, detecta los recursos inactivos o infrautilizados y los reasigna a otros trabajos o tareas que los requieren.

Introducción a Slurm

Slurm es un programador de trabajos de código abierto y un administrador de recursos para ejecutar cargas de trabajo en clústeres de Linux. Slurm proporciona un marco extensible para administrar recursos y programar trabajos en un entorno de clúster de Linux. Admite una amplia gama de tipos de trabajo, incluidos trabajos paralelos, trabajos por lotes y trabajos interactivos. Slurm permite a los usuarios enviar trabajos a través de una variedad de interfaces, incluida una interfaz de línea de comandos, una interfaz basada en web y una API. Slurm es una solución popular que muchos de los superequipos y clústeres de proceso más eficaces usan, y está disponible como opción al usar informática de alto rendimiento (HPC) en Microsoft Azure.

Slurm le permite emparejar los recursos de proceso adecuados en función de criterios de recursos como CPU, GPU y memoria.

El programador de trabajos de Slurm tiene las siguientes funciones importantes:

  • Asigna acceso a los nodos de proceso de los clústeres de HPC a los usuarios para que se puedan ejecutar sus tareas
  • Proporciona un marco para iniciar, ejecutar y supervisar el trabajo en un conjunto de nodos asignados
  • Arbitra la contención de recursos mediante la administración de una cola de trabajos pendientes

Trabajos de Slurm

Cuando se usa Slurm para ejecutar un trabajo en un clúster de HPC de Linux, se producen los siguientes pasos de alto nivel:

  1. Envío de trabajo: El primer paso es que un usuario envíe un trabajo al programador de Slurm mediante la creación de un script de trabajo que incluya los requisitos de recursos y el conjunto de comandos que requiere el trabajo.
  2. Asignación de trabajos: La siguiente fase implica que el programador de Slurm examine los requisitos de recursos del trabajo, como el número de nodos, CPU y memoria necesarias, así como cualquier otra restricción, como particiones y límites de tiempo. En función de estos requisitos, el programador determina los mejores recursos disponibles para asignar el trabajo, teniendo en cuenta el uso actual del clúster y otros trabajos pendientes.
  3. Puesta en cola de trabajo: El programador determina si los recursos solicitados están disponibles. Si los recursos están disponibles inmediatamente, se ejecuta el trabajo. Si los recursos solicitados no están disponibles inmediatamente, el trabajo se coloca en una cola. El programador evalúa continuamente los trabajos en cola y sus prioridades para asignar recursos a medida que están disponibles.
  4. Ejecución del trabajo: Una vez asignados los recursos necesarios al trabajo, el trabajo de Slurm comienza a ejecutarse en los nodos asignados. Las tareas especificadas en el script se ejecutan en los nodos.
  5. Finalización del trabajo: El último paso es la finalización del trabajo, en el que los recursos de proceso se liberan de nuevo en el clúster y el programador actualiza el estado del trabajo para completado. La salida del trabajo y los mensajes de error que se podrían haber generado durante la ejecución del trabajo se guardan en los archivos de salida designados.
  6. Contabilidad de trabajos e informes: Slurm genera datos de contabilidad sobre los trabajos completados, incluido el uso de recursos y el tiempo de ejecución.

Comandos de Slurm

Use un conjunto de utilidades de línea de comandos para realizar acciones en un clúster de proceso administrado a través de Slurm. Estos son algunos comandos comunes de usuario de Slurm:

Get-Help Función
sacct Este comando informa de la información de contabilidad de trabajos y pasos de trabajo sobre los trabajos que están activos o completados.
salloc Use este comando para asignar recursos para un trabajo en tiempo real. Permite generar un shell y aplicar comandos srun como una manera de iniciar tareas paralelas.
sattach Este comando asocia funcionalidades estándar de entrada, salida y señal de error a un trabajo o paso de trabajo que se está ejecutando actualmente.
sbatch Use este comando para enviar un script de trabajo para su ejecución posterior. Estos scripts suelen incluir uno o varios comandos de srun para iniciar tareas paralelas.
scancel Use este comando para transferir un archivo en los nodos necesarios.
scontrol Se trata de una herramienta administrativa de Slurm que permite ver y modificar el estado de Slurm. La mayoría de los comandos scontrol requieren privilegios raíz.
sinfo Este comando muestra información sobre particiones y nodos que administra Slurm.
sprio Use este comando para ver información sobre los componentes que afectan a la prioridad de un trabajo.
squeue Use este comando para ver el estado de los trabajos o los pasos del trabajo.
srun Use este comando para enviar un trabajo para su ejecución o para desencadenar pasos de trabajo en tiempo real. Puede usar srun para especificar los requisitos de recursos, como el número mínimo y máximo de nodos, el recuento de procesadores y las características del nodo.
sstat Use este comando para ver información sobre los recursos utilizados mediante la ejecución de trabajos o pasos de trabajo.
strigger Use este comando para configurar o ver desencadenadores de eventos, como qué hacer cuando se produce un error en un nodo o un trabajo se aproxima a un límite de tiempo.
sview Use este comando para ver la información de estado de los trabajos, las particiones y los nodos que administra Slurm.

Puede obtener más información sobre los comandos de Slurm en la guía del usuario de inicio rápido de Slurm.