Partilhar via


Configurar o dimensionamento

Configure as configurações de dimensionamento para gerenciar o desempenho e o custo do seu pool de DevOps gerenciado. Para obter informações sobre preços e desempenho, consulte Gerenciar custo e desempenho.

Estado do agente

Os pools de DevOps gerenciados podem ser configurados como stateless ou stateful.

  • Piscinas sem estado - Forneça um novo agente para cada trabalho.
  • Pools com estado - Permite o compartilhamento de agentes entre vários trabalhos.

A configuração padrão para um pool de DevOps Gerenciado é stateless (Fresh agent toda vez), mas em alguns casos as equipes podem querer reutilizar agentes para reutilizar os pacotes ou arquivos criados durante a execução de pipeline anterior. A carga de trabalho de compilação é um cenário comum em que as equipes desejam preservar o estado e reutilizar os agentes. Você pode obter pools com monitoração de estado por meio de Pools de DevOps Gerenciados, equilibrando-os com as práticas recomendadas de segurança. Por padrão, um agente pode ser reutilizado por no máximo 7 dias, mas você pode configurá-lo para ser reciclado mais cedo.

Nota

Pools sem estado ou uso da configuração de estado do agente Agente novo sempre são recomendados por especialistas em segurança como defesa contra ataques à cadeia de suprimentos.

Piscinas sem estado

Quando um agente sem estado é configurado, um novo agente é adquirido para cada trabalho e é descartado após a conclusão do trabalho.

Captura de ecrã de um agente sem estado.

Quando o estado do agente é definido como Agente novo toda vez, um novo agente é adquirido para cada trabalho e é descartado após a conclusão do trabalho.

Piscinas com estado

Captura de tela de um agente com monitoração de estado.

Quando o mesmo agente pode ser usado por várias compilações ("kind": "stateful" em modelos de recursos ou { "stateful": {...} } na CLI do Azure) está habilitado, os agentes no pool são considerados com monitoração de estado. Os pools com estado são configurados usando as seguintes configurações.

  • Max time to live for standby agents (maxAgentLifetime) configura a duração máxima que um agente em um pool com monitoração de estado pode executar antes de ser desligado e descartado. O formato do Max time to live para agentes em espera é dd.hh:mm:ss. O valor padrão de Max time to live para agentes em espera é definido como a duração máxima permitida de sete dias (7.00:00:00).

  • O Período de Carência (gracePeriodTimeSpan) configura a quantidade de tempo que um agente em um pool com estado aguarda por novos trabalhos antes de encerrar depois que todos os trabalhos atuais e enfileirados forem concluídos. O formato do Período de Carência é dd.hh:mm:ss e o padrão é nenhum período de carência.

Enquanto os agentes em pools sem estado são desligados e descartados após cada trabalho, os agentes em pools com monitoração de estado continuam em execução se qualquer uma das seguintes condições for atendida.

  • Se houver outro trabalho na fila quando o primeiro trabalho for concluído, os Pools de DevOps Gerenciados enviarão esse trabalho para o agente que executou o primeiro trabalho em vez de encerrá-lo.
  • Se houver um período de carência configurado para o pool, os agentes aguardarão novos trabalhos pela duração especificada pelo período de carência antes de encerrar.
  • Se os agentes em espera estiverem habilitados e a imagem do agente atender aos critérios do período de provisionamento ativo, o agente continuará a executar e aguardar os trabalhos.

Os agentes em execução em pools com monitoração de estado são desligados e descartados se forem executados continuamente durante o período especificado pelo tempo máximo de vida útil para agentes em espera, mesmo que as condições anteriores sejam verdadeiras. Por exemplo, se o tempo máximo de vida para agentes em espera estiver configurado para três dias e o modo de agente em espera estiver definido como Manual, All Week Scheme (Máquinas disponíveis 24 horas por dia, 7 dias por semana), os agentes serão reiniciados após três dias contínuos de tempo de atividade.

Importante

Os agentes em pools com monitoração de estado ainda podem ser desligados e descartados após a conclusão de um trabalho se não houver período de carência, nenhum período de provisionamento ativo para agentes em espera e nenhum trabalho em fila correspondente ao agente. Uma vez que um agente é descartado, qualquer estado é perdido.

O período de carência permite a maneira mais econômica de executar pools com estado para pipelines com carga consistente e não requer o uso do modo de agente em espera para manter os agentes on-line e prontos para aceitar trabalhos.

Modo de agente em espera

Quando você cria um pool, o modo de agente em espera está desativado por padrão, e não há agentes em espera para atribuir imediatamente aos seus pipelines, que podem ter que esperar alguns momentos, até 15 minutos, para que um agente seja provisionado sob demanda. Para um melhor desempenho, habilite o modo de agente em espera e configure uma agenda de agente em espera que forneça capacidade para sua carga de trabalho.

  • Desativado - O modo de agente em espera está desativado e os agentes são provisionados sob demanda quando os trabalhos são enfileirados.
  • Manual - Configure um agendamento manual de espera.
  • Automático - Use uma programação de espera automática com base no histórico de uso do agente e configurável para custo e desempenho.

Captura de tela da seleção do modo de agente em espera.

Manual

O modo manual é mais adequado para equipes que têm conhecimento de seus padrões de uso de pipelines de CI/CD. Se você selecionar a opção manual, precisará definir seu esquema de pré-provisionamento com base em seu entendimento de quando os agentes no pool têm maior probabilidade de serem usados e quantos agentes provavelmente serão usados, e especificar uma contagem de provisionamento de agentes que atendam à demanda projetada.

Você pode criar sua própria agenda de provisionamento ou escolher uma das agendas predefinidas e pode configurar o fuso horário a ser usado para especificar as agendas. O valor padrão para Pre-provisioning TimeZone é (UTC) Tempo Universal Coordenado.

Gorjeta

A contagem de provisionamento em um esquema não pode ser maior do que os agentes máximos configurados nas configurações do pool.

A cada poucos minutos, os Pools de DevOps Gerenciados verificam a contagem de agentes ativos executando trabalhos e agentes em espera aguardando trabalhos, para garantir que a contagem de provisionamento de agentes especificados pelo esquema de provisionamento atual esteja disponível. Se a contagem de provisionamento atual for 10 e houver cinco agentes executando trabalhos e dois agentes em espera, os Pools de DevOps Gerenciados iniciarão três agentes em espera adicionais para aumentar a contagem total de agentes para 10.

A configuração manual do agente em espera pode ser configurada de uma das três maneiras a seguir.

Cada um dos inícios rápidos de pré-provisionamento tem as seguintes configurações comuns, além das configurações específicas para esse início rápido.

  • O fuso horário de pré-provisionamento permite que você configure o fuso horário para os horários em seu esquema de pré-provisionamento. O valor padrão para Pre-provisioning TimeZone é (UTC) Tempo Universal Coordenado.
  • A porcentagem do agente em espera configura a porcentagem de agentes em espera que você deseja para cada imagem. Você pode inserir * para garantir que todas as imagens sejam provisionadas igualmente ou pode especificar um inteiro de 0 a 100 para representar uma porcentagem. Se você especificar uma porcentagem, o total de todas as imagens deverá ser igual a 100. Se você tiver uma única imagem, especifique * ou 100. A porcentagem do agente em espera é configurada images na seção ao usar modelos ARM. Para obter mais informações, consulte Configurar imagens.

Captura de ecrã do modo de espera manual.

Começar do zero

Se você optar por começar do zero, poderá adicionar uma lista de períodos de provisionamento para servir como seu esquema de provisionamento. Cada período de provisionamento consiste em um dia de início, dia de término, fuso horário, hora de início, hora de término e uma contagem. Os períodos de provisionamento não podem se sobrepor.

Property Description
Múltiplos dias Quando marcada, você pode configurar um Dia de Início e um Dia de Término para seu esquema de provisionamento.
Até ao próximo período Quando verificado, o período de provisionamento é executado desde a Hora de Início até o início do próximo período de provisionamento.
Dia de Início O dia em que o período de provisionamento começa.
Dia de Fim O dia em que termina o período de provisionamento. Obrigatório se a opção Multi-Day estiver marcada.
Hora de Início A hora em que o período de provisionamento começa.
Hora de Fim O momento em que o período de provisionamento termina. Obrigatório, a menos que até o próximo período seja verificado.
Count O número de agentes em espera a provisionar. Esse número deve ser maior que zero e não deve ser maior do que o valor Máximo de agentes configurado nas configurações do Pool.

Depois de criar um período de provisionamento, você pode excluir ou editar o período na lista Esquema de pré-provisionamento.

O exemplo a seguir configura um esquema manual com 1 agente provisionado nas manhãs de segunda-feira, das 12h00 às 5h00 EST.

Captura de tela do esquema de dimensionamento manual.

Esquema de dias úteis

Se você escolher o esquema de dias da semana, poderá especificar uma hora de início e uma hora de término em que o número especificado de agentes em espera estará em espera a cada dia da semana.

Property Description
Hora de Início A hora em que o período de provisionamento começa.
Hora de Fim O momento em que o período de provisionamento termina.
Contagem de provisionamento O número de agentes em espera a provisionar. Esse número deve ser maior que zero e não deve ser maior do que o valor Máximo de agentes configurado nas configurações do Pool.

O exemplo a seguir configura quatro agentes a serem usados durante o horário de trabalho com 0 agentes durante o horário não laboral e fins de semana, usando o horário padrão do leste.

Screenshot do esquema de dias úteis.

Esquema Toda a Semana

Se você escolher o esquema de todas as semanas, poderá especificar um número de agentes que deseja disponibilizar 24 horas por dia, 7 dias por semana.

Screenshot do esquema de toda a semana.

Automático

Se você não conhece seus padrões de uso e deseja confiar na previsão automática com base em dados anteriores, escolha Automático. Você pode equilibrar o custo e o desempenho do agente usando um controle deslizante com as cinco opções a seguir. Os Pools de DevOps Gerenciados executam uma consulta nas últimas três semanas de dados históricos (se disponíveis), organizando sessões em fila do pool em períodos de cinco minutos e atribuindo o percentil especificado (para evitar picos) a cada hora.

  • Mais rentável (MostCostEffective) - percentil 10
  • Mais rentável (MoreCostEffective) - percentil 25
  • Balanceado (padrão) (Balanced) - percentil 50
  • Mais desempenho (MorePerformance) - percentil 75
  • Melhor desempenho (BestPerformance) - percentil 90

Captura de tela da configuração de dimensionamento automático.

Consulte também