Partilhar via


Isolamento de grupos de trabalho do Azure Synapse Analytics

Este artigo explica como os grupos de carga de trabalho podem ser usados para configurar o isolamento da carga de trabalho, conter recursos e aplicar regras de tempo de execução para a execução de consultas.

Grupos de carga de trabalho

Os grupos de carga de trabalho são contêineres para um conjunto de solicitações e são a base para como o gerenciamento de carga de trabalho, incluindo o isolamento da carga de trabalho, é configurado em um sistema. Os grupos de carga de trabalho são criados usando a sintaxe CREATE WORKLOAD GROUP. Uma configuração simples de gerenciamento de carga de trabalho pode gerenciar cargas de dados e consultas de usuários. Por exemplo, um grupo de carga de trabalho nomeado wgDataLoads definirá os aspetos da carga de trabalho para os dados que estão sendo carregados no sistema. Além disso, um grupo de carga de trabalho nomeado wgUserQueries definirá os aspetos da carga de trabalho para os usuários que executam consultas para ler dados do sistema.

As seções a seguir destacarão como os grupos de carga de trabalho fornecem a capacidade de definir isolamento, contenção, solicitar definição de recursos e aderir às regras de execução.

Governação dos recursos

Os grupos de carga de trabalho controlam a memória e os recursos da CPU. A E/S de disco e rede, bem como o tempdb, não são regulados. A governança de recursos para memória e CPU é a seguinte:

A memória é controlada no nível da solicitação e mantida durante toda a duração da solicitação. Consulte Recursos por definição de solicitação para obter mais detalhes sobre como configurar a quantidade de memória por solicitação. O parâmetro MIN_PERCENTAGE_RESOURCE para o grupo de carga de trabalho dedica memória exclusivamente a esse grupo de carga de trabalho. O parâmetro CAP_PERCENTAGE_RESOURCE para o grupo de carga de trabalho é um limite rígido na memória que um grupo de carga de trabalho pode consumir.

Os recursos da CPU são governados no nível do grupo de carga de trabalho e compartilhados por todas as solicitações dentro de um grupo de carga de trabalho. Os recursos da CPU são fluidos em comparação com a memória que é dedicada a uma solicitação durante a duração da execução. Como a CPU é um recurso fluido, os recursos de CPU não utilizados podem ser consumidos por todos os grupos de carga de trabalho. Isso significa que a utilização da CPU pode exceder o parâmetro CAP_PERCENTAGE_RESOURCE para o grupo de carga de trabalho. Isso também significa que o parâmetro MIN_PERCENTAGE_RESOURCE para o grupo de carga de trabalho não é uma reserva rígida como a memória. Quando os recursos da CPU estão em disputa, a utilização alinhar-se-á com a definição CAP_PERCENTAGE_RESOURCE para grupos de carga de trabalho.

isolamento de carga de trabalho

O isolamento da carga de trabalho significa que os recursos são reservados, exclusivamente, para um grupo de carga de trabalho. O isolamento da carga de trabalho é conseguido configurando o parâmetro MIN_PERCENTAGE_RESOURCE para ser maior do que zero na sintaxe CREATE WORKLOAD GROUP. Para cargas de trabalho de execução contínua que precisam aderir a SLAs rígidos, o isolamento garante que os recursos estejam sempre disponíveis para o grupo de carga de trabalho.

A configuração do isolamento da carga de trabalho define implicitamente um nível garantido de simultaneidade. Por exemplo, um grupo de carga de trabalho com um MIN_PERCENTAGE_RESOURCE definido para 30% e REQUEST_MIN_RESOURCE_GRANT_PERCENT definido para 2% garante 15 de concorrência. O nível de concorrência é garantido porque entre 15 a 2% de slots de recursos são reservados no grupo de trabalho de carga em todos os momentos (independentemente de como o REQUEST_MAX_RESOURCE_GRANT_PERCENT está configurado). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT for maior que REQUEST_MIN_RESOURCE_GRANT_PERCENT e se CAP_PERCENTAGE_RESOURCE for maior que MIN_PERCENTAGE_RESOURCE, recursos adicionais poderão ser adicionados por solicitação (baseados na disponibilidade de recursos). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT e REQUEST_MIN_RESOURCE_GRANT_PERCENT forem iguais e CAP_PERCENTAGE_RESOURCE for maior que MIN_PERCENTAGE_RESOURCE, concorrência adicional é possível. Considere o método abaixo para determinar a simultaneidade garantida:

[Concorrência Garantida] = [MIN_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Observação

Existem valores mínimos de nível de serviço específicos para min_percentage_resource. Para mais informações, consulte Valores Efetivos para mais detalhes.

Na ausência de isolamento da carga de trabalho, as solicitações operam no pool compartilhado de recursos. O acesso aos recursos do pool partilhado não é garantido e é atribuído numa base de importância.

A configuração do isolamento da carga de trabalho deve ser feita com cuidado, pois os recursos são alocados para o grupo de carga de trabalho, mesmo que não haja solicitações ativas no grupo de carga de trabalho. A configuração excessiva do isolamento pode levar à diminuição da utilização geral do sistema.

Os utilizadores devem evitar uma solução de gestão de carga de trabalho que configure 100% isolamento de carga de trabalho: 100% isolamento é alcançado quando a soma de min_percentage_resource configurados em todos os grupos de carga de trabalho é igual a 100%. Esse tipo de configuração é excessivamente restritivo e rígido, deixando pouco espaço para solicitações de recursos que são acidentalmente classificadas incorretamente. Há uma disposição para permitir que uma solicitação seja executada a partir de grupos de carga de trabalho não configurados para isolamento. Os recursos alocados a este pedido aparecerão como zero nos DMVs do sistema e pedirão emprestado um nível pequeno de subsídio de recursos a recursos reservados pelo sistema.

Observação

Para garantir a utilização ideal de recursos, considere uma solução de gerenciamento de carga de trabalho que aproveite algum isolamento para garantir que os SLAs sejam cumpridos e misturados com recursos compartilhados acessados com base na importância da carga de trabalho.

Contenção da carga de trabalho

A contenção da carga de trabalho refere-se à limitação da quantidade de recursos que um grupo de carga de trabalho pode consumir. A contenção da carga de trabalho é conseguida configurando o parâmetro de CAP_PERCENTAGE_RESOURCE para menos de 100 na sintaxe CREATE WORKLOAD GROUP. Considere o cenário em que os utilizadores precisam de acesso de leitura ao sistema para poderem executar uma análise hipotética através de consultas ad hoc. Esses tipos de solicitações podem ter um impacto negativo em outras cargas de trabalho que estão sendo executadas no sistema. A configuração da contenção garante que a quantidade de recursos seja limitada.

A configuração da contenção de carga de trabalho define implicitamente um nível máximo de simultaneidade. Com um CAP_PERCENTAGE_RESOURCE definido como 60% e um REQUEST_MIN_RESOURCE_GRANT_PERCENT definido como 1%, até um nível de simultaneidade de 60 é permitido para o grupo de trabalho. Considere o método incluído abaixo para determinar a simultaneidade máxima:

[Concorrência Máxima] = [CAP_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]

Observação

A CAP_PERCENTAGE_RESOURCE efetiva de um grupo de carga de trabalho não atingirá 100% quando se criam grupos de carga de trabalho com MIN_PERCENTAGE_RESOURCE num nível superior a zero. Consulte sys.dm_workload_management_workload_groups_stats para valores de tempo de execução efetivos.

Definição de recursos por solicitação

Os grupos de carga de trabalho fornecem um mecanismo para definir a quantidade mínima e máxima de recursos alocados por pedido com os parâmetros REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT na sintaxe CREATE WORKLOAD GROUP. O recurso, neste caso, é a memória. A governança de recursos da CPU é abordada na seção Governança de recursos .

Observação

REQUEST_MAX_RESOURCE_GRANT_PERCENT é um parâmetro opcional que assume como padrão o mesmo valor especificado para REQUEST_MIN_RESOURCE_GRANT_PERCENT.

Como escolher uma classe de recurso, configurar REQUEST_MIN_RESOURCE_GRANT_PERCENT define o valor para os recursos utilizados por uma solicitação. A quantidade de recursos indicada pelo valor definido é garantida para alocação à solicitação antes que ela comece a ser executada. Para clientes que migram de classes de recursos para grupos de carga de trabalho, considere seguir o artigo Como mapear de classes de recursos para grupos de carga de trabalho como ponto de partida.

Configurar REQUEST_MAX_RESOURCE_GRANT_PERCENT para um valor maior que REQUEST_MIN_RESOURCE_GRANT_PERCENT permite que o sistema aloque mais recursos por solicitação. Ao agendar uma solicitação, o sistema determina a alocação real de recursos para a solicitação, que está entre REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT, com base na disponibilidade de recursos no pool compartilhado e na carga atual no sistema. Os recursos devem existir no pool compartilhado de recursos quando a consulta é agendada.

Observação

REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT têm valores efetivos que dependem dos valores efetivos de MIN_PERCENTAGE_RESOURCE e CAP_PERCENTAGE_RESOURCE. Consulte sys.dm_workload_management_workload_groups_stats para valores de tempo de execução efetivos.

Regras de execução

Em sistemas de relatórios ad-hoc, os clientes podem executar acidentalmente consultas descontroladas que afetam gravemente a produtividade de outras pessoas. Os administradores de sistema são obrigados a gastar tempo a eliminar consultas descontroladas para libertar recursos do sistema. Os grupos de carga de trabalho oferecem a capacidade de configurar uma regra de tempo limite de execução de consulta para cancelar consultas que excederam o valor especificado. A regra é configurada definindo o parâmetro QUERY_EXECUTION_TIMEOUT_SEC na sintaxe CREATE WORKLOAD GROUP.

Recursos de pool compartilhados

Recursos de pool compartilhados são os recursos não configurados para isolamento. Os grupos de carga de trabalho com um MIN_PERCENTAGE_RESOURCE definido como zero aproveitam os recursos no pool compartilhado para executar solicitações. Grupos de carga de trabalho com um CAP_PERCENTAGE_RESOURCE maior que MIN_PERCENTAGE_RESOURCE também usaram recursos compartilhados. A quantidade de recursos disponíveis no pool compartilhado é calculada da seguinte forma.

[Pool Partilhado] = 100 - [soma de MIN_PERCENTAGE_RESOURCE em todos os grupos de carga de trabalho]

Acesso aos recursos do pool partilhado é atribuído com base na importância. Pedidos com o mesmo nível de importância irão aceder aos recursos partilhados do pool por ordem de entrada/saída (primeiro a entrar/primeiro a sair).

Próximos passos