Este documento explica a capacidade de obtenção de recursos e recomenda como melhorar essa capacidade ao criar e executar jobs em lote.
O que é capacidade de obtenção?
A obtenção é a probabilidade de que os recursos estejam disponíveis para executar sua carga de trabalho. Quando os recursos não estão disponíveis, a carga de trabalho falha devido a erros de disponibilidade de recursos. A capacidade de obtenção está relacionada, mas é diferente da confiabilidade, que é a probabilidade de que sua carga de trabalho esteja disponível para os usuários. (Disponibilidade pode significar um ou os dois.)
A relação entre capacidade de obtenção e confiabilidade é complexa. Sua carga de trabalho precisa obter recursos para ser confiável. Mas, embora qualquer flexibilidade em relação a local, horário e hardware aumente a capacidade de obtenção, a confiabilidade só aumenta com a flexibilidade que atende aos requisitos da sua carga de trabalho. Por exemplo, observe as seguintes complexidades:
- Tipos de máquinas de maior desempenho podem ser menos acessíveis devido à maior demanda, mas a confiabilidade diminui quando a carga de trabalho não tem desempenho suficiente.
- A flexibilidade de local aumenta a capacidade de obtenção, mas máquinas alocadas de forma densa melhoram o desempenho da rede.
- A flexibilidade de horário aumenta a capacidade de obtenção, mas a espera excessiva pode causar atrasos desnecessários.
Consequentemente, uma capacidade de obtenção maior nem sempre é melhor. O nível ideal de capacidade de obtenção varia de acordo com suas prioridades e requisitos. Por exemplo, talvez você queira uma capacidade de obtenção menor para priorizar a redução de custos. Mesmo que você queira priorizar a confiabilidade, talvez seja necessário equilibrar os benefícios de uma maior capacidade de obtenção com os riscos de menor desempenho ou aumento de atrasos.
Recomendações para melhorar a capacidade de obtenção de empregos
Revise as seções a seguir para melhorar a capacidade de obtenção de jobs em lote:
- Recomendações para todas as opções de consumo: Revise estas recomendações para todos os jobs.
- Recomendações com base na opção de consumo: escolha uma recomendação com base na opção de consumo do seu trabalho.
Recomendações para todas as opções de consumo
Minimize suas necessidades de tipos de máquinas grandes e de alto desempenho separando sua carga de trabalho. Por exemplo, primeiro separe as operações com uso intensivo de computação das operações de baixa demanda usando jobs dependentes. Em seguida, reduza ao máximo os recursos mínimos de computação necessários para cada job, maximizando o processamento paralelo e minimizando as tarefas fortemente acopladas.
Saiba mais sobre jobs dependentes e recursos de computação e paralelismo.
Maximize o número de locais permitidos para os recursos do Compute Engine do seu job. Isso é verdade por padrão. A menos que você especifique o campo
allowedLocations[]para um job, os recursos do Compute Engine dele poderão ser executados em todas as zonas do local do job.Saiba mais sobre locais.
Considere usar estratégias de falha rápida antes de esperar uma melhor capacidade de obtenção. Para evitar atrasos, considere estratégias de falha rápida, como as seguintes:
- Embora seja possível resolver problemas de disponibilidade de recursos tentando fazer a solicitação em outro momento, geralmente é mais rápido tentar locais ou hardware diferentes primeiro.
- Se você estiver aberto a usar várias opções de consumo, geralmente é mais rápido primeiro testar as opções de consumo sem atrasos: reservas sob demanda, sob demanda e VMs spot.
- Para novas cargas de trabalho que você planeja repetir, talvez seja melhor acelerar os testes e a solução de problemas iniciais usando temporariamente opções que são mais rápidas de obter.
Recomendações com base na opção de consumo
A opção de consumo selecionada é um fator principal para a disponibilidade de um trabalho. Esta seção resume brevemente cada opção de consumo e recomenda como otimizar a capacidade de obtenção para cada uma delas.
As seguintes opções de consumo são listadas da maior para a menor possibilidade de obtenção:
Para cargas de trabalho com requisitos de alta capacidade de obtenção, use reservas. As reservas oferecem um nível mais alto de garantia de capacidade do que todas as outras opções de consumo. Para usar a capacidade reservada, primeiro crie ou identifique as reservas atuais que podem ser usadas. Em seguida, configure as instâncias para consumir essa capacidade reservada. Ao contrário de outras opções de consumo, as instâncias reservadas geram custos mesmo quando não estão sendo usadas até que você as exclua, devido à garantia de capacidade. Ao considerar a capacidade de obtenção, escolha entre os seguintes tipos de reservas:
Para exigir capacidade reservada, consuma uma reserva especificamente segmentada. Essas reservas facilitam a verificação de que a capacidade reservada está disponível e pode ser consumida pela sua carga de trabalho. Sempre que a capacidade reservada não estiver disponível e compatível, sua carga de trabalho vai falhar e retornar um erro. Uma reserva segmentada especificamente inclui todas as reservas para o modelo de provisionamento
RESERVATION_BOUNDe algumas reservas para o modelo de provisionamentoSTANDARD.Saiba como criar um job que usa reservas.
Para capacidade reservada opcional, consuma uma reserva consumida automaticamente e use a flexibilidade de instância (prévia). Essas opções de reserva oferecem altos níveis de garantia de obtenção de capacidade, mas apenas quando a capacidade reservada que sua carga de trabalho pode consumir está disponível. Para reservas consumidas automaticamente, especifique o modelo de provisionamento
STANDARDe verifique manualmente se a capacidade reservada está disponível e corresponde à configuração de instância da sua carga de trabalho. Sempre que a capacidade reservada não estiver disponível ou não corresponder, sua carga de trabalho tentará usar a capacidade sob demanda. Mas, ao contrário das reservas especificamente segmentadas, é possível usar a flexibilidade de instância com reservas consumidas automaticamente para permitir que sua carga de trabalho tente consumir várias reservas consumidas automaticamente.Saiba como criar um job que usa reservas e flexibilidade de instância (prévia).
Para cargas de trabalho com requisitos de disponibilidade médios, use capacidade sob demanda com flexibilidade de instância (prévia) ou VMs de início flexível. Escolha entre estas opções:
A menos que seu tipo de máquina esteja na série A3 ou não seja compatível, considere usar a capacidade sob demanda com flexibilidade de instância (pré-lançamento). A opção de consumo sob demanda exige o modelo de provisionamento
STANDARD(padrão). A menos que você bloqueie explicitamente o consumo de reservas, sua carga de trabalho também tentará consumir reservas consumidas automaticamente por padrão. Não recomendamos o uso de instâncias on demand para a série de máquinas A3.Saiba como criar um job que usa o modelo de provisionamento padrão e a flexibilidade de instância (prévia).
Caso contrário ou se a capacidade sob demanda estiver indisponível repetidamente, considere usar VMs flex-start. Para usar a opção de consumo de VMs de início flexível, especifique o modelo de provisionamento
FLEX_START. As VMs de início flexível exigem que sua carga de trabalho suporte um tempo de espera e uma duração de execução limitada, mas também oferecem descontos com os preços do Dynamic Workload Scheduler.Saiba como criar um job que usa VMs de início flexível.
Para cargas de trabalho com requisitos de disponibilidade baixos, use VMs do Spot com vários recursos de disponibilidade. Para usar a opção de consumo de VMs spot, especifique o modelo de provisionamento
SPOT. As VMs spot nem sempre estão disponíveis e podem ser interrompidas a qualquer momento. Por isso, elas são recomendadas apenas para cargas de trabalho tolerantes a falhas, mas podem oferecer os maiores descontos com os preços das VMs spot.Em geral, recomendamos que você verifique a disponibilidade de VMs spot antes da criação e verifique se sua carga de trabalho pode processar a preempção. Em seguida, para melhorar a capacidade de obtenção de VMs spot em jobs em lote especificamente, recomendamos que você use a flexibilidade de instâncias com vários tipos de máquinas na mesma classificação (Prévia) e use novas tentativas automáticas para tentar recriar VMs spot após a interrupção forçada.
Saiba como ver a disponibilidade de VMs spot e gerenciar a preempção de VMs spot na documentação do Compute Engine. Em seguida, aprenda a criar um job que usa o modelo de provisionamento de VMs spot, a flexibilidade de instância (pré-lançamento) e novas tentativas automáticas para preempção.
A seguir
- Saiba mais sobre outras opções de criação de jobs.