Descrever os conceitos do agendador de cluster
Ao final desta unidade, você deve ser capaz de descrever as funções básicas de agendadores de tarefas, 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 discos) 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 a conclusão do trabalho de envio de 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 adiciona o trabalho a uma fila de trabalhos. Dependendo dos recursos disponíveis de que o trabalho precisa, o agendador decide quando o trabalho sai da fila e em qual dos nós de back-end ele é 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 na mesma ordem em que entram pela primeira vez na fila. A vantagem é que todos os trabalhos serão definitivamente executados; no entanto, um pequeno conjunto de trabalhos pode esperar por um tempo inadequadamente longo em comparação com o seu tempo de execução real.
Trabalho mais curto primeiro: Com base no tempo de execução 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.
Backfilling: O agendador 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 primeiro trabalho no tempo de espera da 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 que muitos dos supercomputadores e clusters de computação mais poderosos usam, e está disponível como uma 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 o acesso a nós de computação em clusters HPC 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:
- Envio de trabalho: a primeira etapa é que um usuário envia um trabalho para o agendador do Slurm criando um script de trabalho que inclui os requisitos de recursos e o conjunto de comandos que o trabalho exige.
- Alocação 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ários, bem como quaisquer outras restrições, como partições e limites de 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.
- Enfileiramento de tarefas: 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.
- Execução do trabalho: 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.
- 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 são salvas em arquivos de saída designados.
- Contabilidade e relatórios de trabalho: 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. Aqui estão alguns comandos comuns do usuário do Slurm:
Comando | Function |
---|---|
sacct |
Este comando relata informações de contabilização de tarefas e etapas de trabalho sobre trabalhos ativos ou concluídos. |
salloc |
Use este comando para alocar recursos para um trabalho em tempo real. Permite gerar um shell e executar srun comandos como forma de iniciar tarefas paralelas. |
sattach |
Este comando anexa recursos padrão de entrada, saída e sinal de erro a um trabalho ou etapa de trabalho em execução no momento. |
sbatch |
Use este comando para enviar um script de trabalho para execução posterior. Esses scripts geralmente incluem um ou mais srun comandos para iniciar tarefas paralelas. |
scancel |
Use este comando para transferir um arquivo nos nós necessários. |
scontrol |
Esta é uma ferramenta administrativa do Slurm que permite visualizar e modificar o estado do Slurm. A maioria dos scontrol comandos requer privilégios de raiz. |
sinfo |
Este comando exibe informações sobre partições e nós que o Slurm gerencia. |
sprio |
Use este comando para exibir informações sobre os componentes que afetam a prioridade de um trabalho. |
squeue |
Use este comando para exibir o estado de trabalhos ou etapas de 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 |
Use este comando para exibir informações sobre recursos utilizados pela execução de trabalhos ou etapas de trabalho. |
strigger |
Use este comando para configurar ou exibir gatilhos de eventos, como o que fazer quando um nó falha ou um trabalho se aproxima de um limite de tempo. |
sview |
Use este comando para exibir informações de estado em trabalhos, partições e nós gerenciados pelo Slurm. |
Você pode saber mais sobre os comandos do Slurm no Guia do Usuário de Início Rápido do Slurm.