Descrever os conceitos do agendador de cluster

Concluído

Depois de concluir esta unidade, você deve ser capaz de descrever as funções básicas de agendadores de trabalho, gerentes de recursos, computação de alto desempenho e computação de alto rendimento.

Programadores de tarefas

Um agendador de tarefas de computação em cluster é um componente de software que gerencia e atribui recursos de computação (como CPUs, memória e disco) aos trabalhos enviados ao cluster. Os agendadores de tarefas determinam os nós mais apropriados no cluster para executar um trabalho específico com base na disponibilidade de recursos, na prioridade do trabalho e em outros fatores. Os agendadores de tarefas garantem que vários trabalhos executados em paralelo não interfiram uns com os outros. Os agendadores de tarefas incluem filas para manter trabalhos pendentes e uma política para programá-los.

Os principais objetivos de um agendador de tarefas são:

  • Minimize o tempo entre o envio e a conclusão do trabalho.
  • Otimize a utilização da CPU.
  • Maximize a taxa de transferência do trabalho.

Os usuários enviam trabalhos em lote não interativos para o agendador. O agendador armazena os trabalhos em lote, avalia seus requisitos e prioridades de recursos e distribui os trabalhos para nós de computação adequados.

O script de trabalho enviado por meio do agendador adicionará o trabalho a uma fila de trabalhos. Dependendo dos recursos disponíveis de que o trabalho precisa, o agendador decidirá quando o trabalho sairá da fila e em qual dos nós de back-end ele será executado.

Há várias estratégias básicas que os agendadores podem usar para determinar qual trabalho executar em seguida:

  • Primeiro a chegar, primeiro a servir. Os trabalhos são executados exatamente na mesma ordem em que entram pela primeira vez na fila. A vantagem é que cada trabalho será definitivamente executado, no entanto, apenas um pequeno conjunto de trabalhos pode esperar por um tempo inadequadamente longo em comparação com o seu tempo de execução real.

  • Emprego mais curto primeiro. Com base na execução, tempo declarado no script de trabalho, o agendador estima o tempo de execução do trabalho. Os trabalhos são classificados na ordem crescente do tempo de execução. Embora os empregos curtos comecem após um curto período de espera, os empregos de longa duração (ou, pelo menos, os empregos declarados como tal) podem nunca começar.

  • Enchimento. O Scheduler mantém o conceito de Primeiro a Chegar, Primeiro a Servir sem impedir a execução de trabalhos de longa duração. O agendador executa o trabalho somente quando o primeiro trabalho na fila pode ser executado. Caso contrário, o agendador percorre o resto da fila para verificar se outro trabalho pode ser executado sem estender o tempo de espera do primeiro trabalho na fila. Se encontrar tal trabalho, o agendador executa esse trabalho. Pequenos trabalhos geralmente encontram tempos de fila curtos.

Gestor de recursos

Um gerenciador de recursos de computação em cluster aloca recursos dentro de um cluster de computação. Os gerentes de recursos são responsáveis por alocar memória, CPU, armazenamento e largura de banda de rede para os trabalhos em execução no cluster. Esse componente monitora o uso de recursos dentro do cluster, deteta recursos ociosos ou subutilizados e os realoca para outros trabalhos ou tarefas que os exigem.

Visão geral do Slurm

O Slurm é um agendador de tarefas de código aberto e gerenciador de recursos para executar cargas de trabalho em clusters Linux. O Slurm fornece uma estrutura extensível para gerenciar recursos e agendar trabalhos em um ambiente de cluster Linux. Ele suporta uma ampla gama de tipos de trabalho, incluindo trabalhos paralelos, trabalhos em lote e trabalhos interativos. O Slurm permite que os usuários enviem trabalhos por meio de uma variedade de interfaces, incluindo uma interface de linha de comando, interface baseada na Web e API. O Slurm é uma solução popular usada por muitos dos supercomputadores e clusters de computação mais poderosos e está disponível como opção ao usar a computação de alto desempenho (HPC) no Microsoft Azure.

O Slurm permite que você corresponda ao recurso de computação apropriado com base em critérios de recursos, incluindo CPUs, GPUs e memória.

O agendador de tarefas Slurm tem as seguintes funções importantes:

  • Aloca acesso a nós de computação em clusters HPC de computação de alto desempenho aos usuários para que suas tarefas possam ser executadas.
  • Fornece uma estrutura para iniciar, executar e monitorar o trabalho em um conjunto de nós alocados.
  • Arbitra a contenção de recursos gerenciando uma fila de trabalhos pendentes.

Vagas de Slurm

Quando você usa o Slurm para executar um trabalho em um cluster HPC Linux, as seguintes etapas de alto nível ocorrem:

  1. Submissão de trabalho. A primeira etapa é que um usuário envia um trabalho para o agendador Slurm através da criação de um script de trabalho que inclui os requisitos de recursos e o conjunto de comandos exigidos pelo trabalho.
  2. Atribuição de postos de trabalho. A próxima etapa envolve o agendador Slurm examinando os requisitos de recursos do trabalho, como o número de nós, CPUs e memória necessária, bem como quaisquer outras restrições, como limites de partição e tempo. Com base nesses requisitos, o agendador determina os melhores recursos disponíveis a serem alocados para o trabalho, considerando o uso atual do cluster e outros trabalhos pendentes.
  3. Fila de trabalho. O agendador determina se os recursos solicitados estão disponíveis. Se os recursos estiverem imediatamente disponíveis, o trabalho será executado. Se os recursos solicitados não estiverem disponíveis imediatamente, o trabalho será colocado em uma fila. O agendador avalia continuamente os trabalhos enfileirados e suas prioridades para alocar recursos à medida que ficam disponíveis.
  4. Execução de trabalhos. Depois que os recursos necessários são alocados para o trabalho, o trabalho do Slurm começa a ser executado nos nós atribuídos. As tarefas especificadas no script são executadas em nós.
  5. Conclusão do trabalho. A etapa final é a conclusão do trabalho, na qual os recursos de computação são liberados de volta para o cluster e o agendador atualiza o status do trabalho para 'concluído'. A saída do trabalho e quaisquer mensagens de erro que possam ter sido geradas durante a execução do trabalho serão salvas nos arquivos de saída designados.
  6. Contabilidade de trabalho e relatórios. O Slurm gera dados contábeis sobre trabalhos concluídos, incluindo o uso de recursos e o tempo de execução.

Comandos Slurm

Você usa um conjunto de utilitários de linha de comando para executar ações em um cluster de computação gerenciado por meio do Slurm. Alguns comandos comuns do usuário do Slurm estão listados na tabela abaixo.

Comando Function
Sacct Relata informações de contabilidade de tarefas e etapas de trabalho sobre trabalhos ativos ou concluídos.
Salloc Use para alocar recursos para um trabalho em tempo real. Permite gerar um shell e executar comandos srun como forma de iniciar tarefas paralelas.
anexar Anexe recursos padrão de entrada, saída e sinal de erro a um trabalho ou etapa de trabalho atualmente em execução.
lote Use este comando para enviar um script de trabalho para execução posterior. Esses scripts geralmente incluem um ou mais comandos srun para iniciar tarefas paralelas.
cancelar Use este comando para transferir um arquivo nos nós necessários.
Controlo Ferramenta administrativa do Slurm que permite visualizar e modificar o estado do Slurm. A maioria dos comandos scontrol requer privilégios de root.
Sinfo Exibe informações sobre partições e nós gerenciados pelo Slurm.
Spírio Visualize informações sobre os componentes que afetam a prioridade de um trabalho.
fila Exiba o estado dos trabalhos ou etapas do trabalho.
srun Use este comando para enviar um trabalho para execução ou para acionar etapas do trabalho em tempo real. Você pode usar srun para especificar requisitos de recursos, como contagem mínima e máxima de nós, contagem de processadores e características de nós.
Sstat Exiba informações sobre recursos utilizados pela execução de trabalhos ou etapas de trabalho.
gatilho Configure ou exiba gatilhos de eventos, como o que fazer quando um nó falha ou um trabalho se aproxima de um limite de tempo.
Sview Exibir informações de estado em trabalhos, partições e nós gerenciados pelo Slurm

Você pode saber mais sobre os comandos do Slurm em: https://slurm.schedmd.com/quickstart.html