isolamento do grupo de cargas de trabalho do Azure Synapse Analytics
Este artigo explica como os grupos de cargas de trabalho podem ser utilizados para configurar o isolamento da carga de trabalho, conter recursos e aplicar regras de runtime para execução de consultas.
Grupos de carga de trabalho
Os grupos de cargas de trabalho são contentores para um conjunto de pedidos e são a base para a forma como a gestão da carga de trabalho, incluindo o isolamento da carga de trabalho, é configurada num sistema. Os grupos de cargas de trabalho são criados com a sintaxe CREATE WORKLOAD GROUP . Uma configuração de gestão de cargas de trabalho simples pode gerir carregamentos de dados e consultas de utilizador. Por exemplo, um grupo de cargas de trabalho com o nome wgDataLoads
definirá os aspetos da carga de trabalho para os dados que estão a ser carregados para o sistema. Além disso, um grupo de cargas de trabalho com o nome wgUserQueries
definirá os aspetos da carga de trabalho para os utilizadores que executam consultas para ler dados do sistema.
As secções seguintes irão realçar a forma como os grupos de cargas de trabalho permitem definir o isolamento, a contenção, a definição de recursos de pedidos e a conformidade com as regras de execução.
Gestão de recursos
Os grupos de cargas de trabalho regem a memória e os recursos da CPU. O disco e a E/S de rede, bem como a tempdb, não são regidos. A governação de recursos para memória e CPU é a seguinte:
A memória é regida ao nível do pedido e mantida ao longo da duração do pedido. Veja Recursos por definição de pedido para obter mais detalhes sobre como configurar a quantidade de memória por pedido. O parâmetro MIN_PERCENTAGE_RESOURCE para o grupo de cargas de trabalho dedica exclusivamente memória a esse grupo de cargas de trabalho. O parâmetro CAP_PERCENTAGE_RESOURCE para o grupo de cargas de trabalho é um limite rígido na memória que um grupo de cargas de trabalho pode consumir.
Os recursos da CPU são regidos ao nível do grupo de cargas de trabalho e partilhados por todos os pedidos dentro de um grupo de cargas de trabalho. Os recursos da CPU são fluidos em comparação com a memória dedicada a um pedido durante a execução. Dado que a CPU é um recurso fluido, os recursos de CPU não utilizados podem ser consumidos por todos os grupos de cargas de trabalho. Isto significa que a utilização da CPU pode exceder o parâmetro CAP_PERCENTAGE_RESOURCE para o grupo de cargas de trabalho. Isto também significa que o parâmetro MIN_PERCENTAGE_RESOURCE para o grupo de cargas de trabalho não é uma reserva difícil como a memória. Quando os recursos da CPU estão em contenção, a utilização será alinhada com a definição de CAP_PERCENTAGE_RESOURCE para grupos de cargas de trabalho.
Isolamento de cargas de trabalho
O isolamento da carga de trabalho significa que os recursos são reservados, exclusivamente, para um grupo de cargas de trabalho. O isolamento da carga de trabalho é obtido ao configurar o parâmetro MIN_PERCENTAGE_RESOURCE para maior do que zero na sintaxe CREATE WORKLOAD GROUP . Para cargas de trabalho de execução contínua que precisam de cumprir SLAs apertados, o isolamento garante que os recursos estão sempre disponíveis para o grupo de cargas de trabalho.
Configurar o isolamento da carga de trabalho define implicitamente um nível de simultaneidade garantido. Por exemplo, um grupo de cargas de trabalho com um MIN_PERCENTAGE_RESOURCE definido como 30% e REQUEST_MIN_RESOURCE_GRANT_PERCENT definido como 2% tem uma simultaneidade garantida de 15. O nível de simultaneidade é garantido porque 15 a 2% dos blocos de recursos estão sempre reservados no grupo de cargas de trabalho (independentemente da forma como REQUEST_MAX_RESOURCE_GRANT_PERCENT está configurado). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT for maior do que REQUEST_MIN_RESOURCE_GRANT_PERCENT e CAP_PERCENTAGE_RESOURCE for maior do que MIN_PERCENTAGE_RESOURCE podem ser adicionados recursos adicionais por pedido (com base na disponibilidade de recursos). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT e REQUEST_MIN_RESOURCE_GRANT_PERCENT forem iguais e CAP_PERCENTAGE_RESOURCE for maior do que MIN_PERCENTAGE_RESOURCE, é possível uma simultaneidade adicional. Considere o método abaixo para determinar a simultaneidade garantida:
[Simultaneidade Garantida] = [MIN_PERCENTAGE_RESOURCE
] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT
]
Nota
Existem valores mínimos de nível de serviço específicos para min_percentage_resource. Para obter mais informações, veja Valores Efetivos para obter mais detalhes.
Na ausência de isolamento da carga de trabalho, os pedidos operam no conjunto partilhado de recursos. O acesso aos recursos no conjunto partilhado não é garantido e é atribuído de forma importante .
A configuração do isolamento da carga de trabalho deve ser feita com cuidado, uma vez que os recursos são alocados ao grupo de cargas de trabalho, mesmo que não existam pedidos ativos no grupo de cargas de trabalho. A sobre-configuração do isolamento pode levar a uma diminuição da utilização geral do sistema.
Os utilizadores devem evitar uma solução de gestão de cargas de trabalho que configure o isolamento de cargas de trabalho a 100%. O isolamento a 100% é alcançado quando a soma de min_percentage_resource configurada em todos os grupos de cargas de trabalho é igual a 100%. Este tipo de configuração é excessivamente restritivo e rígido, deixando pouca margem para pedidos de recursos que são acidentalmente mal classificados. Existe uma aprovisionamento para permitir a execução de um pedido a partir de grupos de cargas de trabalho não configurados para isolamento. Os recursos alocados a este pedido serão apresentados como um zero nas DMVs de sistemas e pedirão emprestado um pequeno nível derc de concessão de recursos a partir de recursos reservados do sistema.
Nota
Para garantir uma utilização de recursos ideal, considere uma solução de gestão de cargas de trabalho que tire partido de algum isolamento para garantir que os SLAs são cumpridos e misturados com recursos partilhados que são acedidos 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 cargas de trabalho pode consumir. A contenção da carga de trabalho é obtida ao configurar o parâmetro 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 que possam executar uma análise de hipóteses através de consultas ad hoc. Estes tipos de pedidos podem ter um impacto negativo noutras cargas de trabalho em execução no sistema. A configuração da contenção garante que a quantidade de recursos é limitada.
Configurar a contenção da carga de trabalho define implicitamente um nível máximo de simultaneidade. Com uma CAP_PERCENTAGE_RESOURCE definida como 60% e uma REQUEST_MIN_RESOURCE_GRANT_PERCENT definida como 1%, é permitido um nível de simultaneidade de 60 para o grupo de cargas de trabalho. Considere o método incluído abaixo para determinar a simultaneidade máxima:
[Simultaneidade Máxima] = [CAP_PERCENTAGE_RESOURCE
] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT
]
Nota
A CAP_PERCENTAGE_RESOURCE eficaz de um grupo de cargas de trabalho não atingirá 100% quando forem criados grupos de cargas de trabalho com MIN_PERCENTAGE_RESOURCE a um nível superior a zero. Veja sys.dm_workload_management_workload_groups_stats valores de runtime eficazes.
Recursos por definição de pedido
Os grupos de cargas 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 . Neste caso, o recurso é memória. A governação de recursos da CPU é abordada na secção Governação de recursos .
Nota
REQUEST_MAX_RESOURCE_GRANT_PERCENT é um parâmetro opcional predefinido para o mesmo valor especificado para REQUEST_MIN_RESOURCE_GRANT_PERCENT.
Tal como escolher uma classe de recursos, configurar REQUEST_MIN_RESOURCE_GRANT_PERCENT define o valor dos recursos utilizados por um pedido. A quantidade de recursos indicados pelo valor definido é garantida para alocação ao pedido antes de iniciar a execução. Para os clientes que migram de classes de recursos para grupos de cargas de trabalho, considere seguir o artigo Procedimentos para mapear de classes de recursos para grupos de cargas de trabalho como um ponto de partida.
Configurar REQUEST_MAX_RESOURCE_GRANT_PERCENT para um valor maior do que REQUEST_MIN_RESOURCE_GRANT_PERCENT permite ao sistema alocar mais recursos por pedido. Ao agendar um pedido, o sistema determina a alocação real de recursos para o pedido, que se encontra entre REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT, com base na disponibilidade de recursos no conjunto partilhado e na carga atual no sistema. Os recursos têm de existir no conjunto partilhado de recursos quando a consulta é agendada.
Nota
REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT têm valores eficazes que dependem dos valores de MIN_PERCENTAGE_RESOURCE e CAP_PERCENTAGE_RESOURCE eficazes. Veja sys.dm_workload_management_workload_groups_stats valores de runtime eficazes.
Regras de Execução
Nos sistemas de relatórios ad hoc, os clientes podem executar acidentalmente consultas em execução em execução que afetam gravemente a produtividade de outras pessoas. Os administradores de sistema são forçados a gastar tempo a eliminar consultas em fuga para libertar recursos do sistema. Os grupos de cargas de trabalho oferecem a capacidade de configurar uma regra de tempo limite de execução de consultas para cancelar consultas que excederam o valor especificado. A regra é configurada ao definir o parâmetro QUERY_EXECUTION_TIMEOUT_SEC na sintaxe CREATE WORKLOAD GROUP .
Recursos de conjuntos partilhados
Os recursos do conjunto partilhado são os recursos não configurados para isolamento. Os grupos de cargas de trabalho com um MIN_PERCENTAGE_RESOURCE definido como zero tiram partido dos recursos no conjunto partilhado para executar pedidos. Os grupos de cargas de trabalho com um CAP_PERCENTAGE_RESOURCE superior a MIN_PERCENTAGE_RESOURCE também utilizaram recursos partilhados. A quantidade de recursos disponíveis no conjunto partilhado é calculada da seguinte forma.
[Conjunto Partilhado] = 100 - [soma de todos os grupos de cargas de MIN_PERCENTAGE_RESOURCE
trabalho]
O acesso aos recursos no conjunto partilhado é atribuído de forma importante . Os pedidos com o mesmo nível de importância acederão aos recursos do conjunto partilhado numa base inicial/inicial.