Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 runtime para execução de consulta.
Grupos de carga de trabalho
Grupos de carga de trabalho são contêineres para um conjunto de solicitações e são a base de como o gerenciamento de cargas de trabalho, incluindo isolamento de 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ário. Por exemplo, um grupo de carga de trabalho nomeado wgDataLoads definirá aspectos de 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á aspectos de carga de trabalho para os usuários que executam consultas lerem 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, definição de recurso de solicitação e aderir às regras de execução.
Governança de recursos
Os grupos de carga de trabalho governam a memória e os recursos da CPU. Disco e E/S de rede, assim como o tempdb, não são gerenciados. A governança de recursos para memória e CPU é a seguinte:
A memória é regida no nível da solicitação e mantida durante toda a solicitação. Consulte a definição de Recursos por 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 regidos no nível do grupo de carga de trabalho e compartilhados por todas as solicitações em um grupo de carga de trabalho. Os recursos da CPU são fluidos em comparação com a memória dedicada a uma solicitação durante a execução. Considerando que 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 difícil, como a memória. Quando os recursos de CPU estiverem sob contenção, a utilização será alinhada à definição de 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 é obtido configurando o parâmetro MIN_PERCENTAGE_RESOURCE para maior que zero na sintaxe CREATE WORKLOAD GROUP. Para cargas de trabalho de execução contínua que precisam aderir a SLAs rígidas, o isolamento garante que os recursos estejam sempre disponíveis para o grupo de carga de trabalho.
Configurar o 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 como 30% e REQUEST_MIN_RESOURCE_GRANT_PERCENT definido como 2% é garantido como 15 simultaneidade. O nível de simultaneidade é garantido porque 15-2% slots de recursos são reservados no grupo de carga de trabalho a qualquer hora (independentemente de como REQUEST_MAX_RESOURCE_GRANT_PERCENT estiver configurado). Se REQUEST_MAX_RESOURCE_GRANT_PERCENT é maior que REQUEST_MIN_RESOURCE_GRANT_PERCENT e CAP_PERCENTAGE_RESOURCE é maior que MIN_PERCENTAGE_RESOURCE, recursos adicionais podem ser adicionados por solicitação, 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 que MIN_PERCENTAGE_RESOURCE, a simultaneidade adicional será possível. Considere o método abaixo para determinar a simultaneidade garantida:
[Simultaneidade Garantida] = [MIN_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]
Observação
Há valores mínimos de nível de serviço específicos para min_percentage_resource. Para obter mais informações, consulte Efective Values para obter mais detalhes.
Na ausência de isolamento de carga de trabalho, as solicitações operam no pool compartilhado de recursos. Acesso aos recursos no pool compartilhado não é garantido e é atribuído com base na importância.
A configuração do isolamento de 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 de isolamento pode levar à diminuição da utilização geral do sistema.
Os usuários devem evitar uma solução de gerenciamento de carga de trabalho que configure 100% de isolamento de carga de trabalho: obtém-se 100% de isolamento quando a soma de min_percentage_resource configurada 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 provisão para permitir que uma solicitação seja executada de grupos de carga de trabalho não configurados para isolamento. Os recursos alocados a essa solicitação aparecerão como zero nos DMVs dos sistemas e pegarão emprestado um pouco da concessão de recurso dos recursos reservados ao 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 atendidos e misturados com recursos compartilhados que são acessados com base na importância da carga de trabalho.
Contenção de 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 é obtida configurando o parâmetro CAP_PERCENTAGE_RESOURCE para menos de 100 na sintaxe CREATE WORKLOAD GROUP. Considere o cenário pelo qual os usuários precisam de acesso de leitura ao sistema para que possam executar uma análise de hipóteses por meio de consultas ad hoc. Esses tipos de solicitações podem ter um impacto negativo em outras cargas de trabalho em execução no sistema. Configurar a contenção garante que a quantidade de recursos seja limitada.
Configurar a 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%, é permitido um nível de simultaneidade de até 60 para o grupo de cargas 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
O CAP_PERCENTAGE_RESOURCE efetivo de um grupo de carga de trabalho não alcançará 100% quando forem criados grupos de carga de trabalho com MIN_PERCENTAGE_RESOURCE em um nível maior que zero. Consulte sys.dm_workload_management_workload_groups_stats para obter valores de runtime 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 solicitação com os parâmetros REQUEST_MIN_RESOURCE_GRANT_PERCENT e REQUEST_MAX_RESOURCE_GRANT_PERCENT na sintaxe CREATE WORKLOAD GROUP. O recurso nesse caso é 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 usa 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 dos recursos utilizados por uma solicitação. A quantidade de recursos indicada pelo valor definido é garantida para alocação para a solicitação antes de iniciar a execução. 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 obter valores de runtime efetivos.
Regras de execução
Em sistemas de relatórios ad hoc, os clientes podem executar acidentalmente consultas descontroladas que afetam severamente a produtividade dos outros. Os administradores do sistema são forçados a gastar tempo eliminando as consultas sem controle para liberar 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 compartilhado
Os recursos do pool compartilhado são os recursos não configurados para isolamento. Grupos de carga de trabalho com um MIN_PERCENTAGE_RESOURCE definido como zero aproveitam 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 maneira.
[Pool compartilhado] = 100 - [soma de MIN_PERCENTAGE_RESOURCE em todos os grupos de carga de trabalho]
O acesso a recursos no pool compartilhado é alocado com base na importância. As solicitações com o mesmo nível de importância acessarão recursos do pool compartilhado na ordem de chegada.