Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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. Disk and network IO as well as tempdb are not governed. 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. When CPU resources are under contention, utilization will align to the CAP_PERCENTAGE_RESOURCE definition for workload groups.
Workload isolation
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 como maior 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. For example, a workload group with a MIN_PERCENTAGE_RESOURCE set to 30% and REQUEST_MIN_RESOURCE_GRANT_PERCENT set to 2% is guaranteed 15 concurrency. The level of concurrency is guaranteed because 15-2% slots of resources are reserved within the workload group at all times (regardless of how REQUEST_MAX_RESOURCE_GRANT_PERCENT is configured). 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). If REQUEST_MAX_RESOURCE_GRANT_PERCENT and REQUEST_MIN_RESOURCE_GRANT_PERCENT are equal and CAP_PERCENTAGE_RESOURCE is greater than MIN_PERCENTAGE_RESOURCE, additional concurrency is possible. Considere o método abaixo para determinar a simultaneidade garantida:
[Guaranteed Concurrency] = [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 obter mais informações, consulte Valores efetivos para obter mais detalhes.
Na ausência de isolamento da carga de trabalho, as solicitações operam no pool compartilhado de recursos. O acesso aos recursos no pool compartilhado não é garantido e é atribuído com base na 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.
Users should avoid a workload management solution that configures 100% workload isolation: 100% isolation is achieved when the sum of min_percentage_resource configured across all workload groups equals 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. The resources allocated to this request will show up as a zero in the systems DMVs and borrow a smallrc level of resource grant from system reserved resources.
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 é obtida configurando o parâmetro CAP_PERCENTAGE_RESOURCE para menos de 100 na sintaxe CREATE WORKLOAD GROUP . Considere o cenário em que os usuários precisam de acesso de leitura ao sistema para que possam executar uma análise hipotética por meio 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. With a CAP_PERCENTAGE_RESOURCE set to 60% and a REQUEST_MIN_RESOURCE_GRANT_PERCENT set to 1%, up to a 60-concurrency level is allowed for the workload group. 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
The effective CAP_PERCENTAGE_RESOURCE of a workload group will not reach 100% when workload groups with MIN_PERCENTAGE_RESOURCE at a level greater than zero are created. Consulte sys.dm_workload_management_workload_groups_stats para obter 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 solicitação 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 obter 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. System admins are forced to spend time killing runaway queries to free up system resources. 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.
[Shared Pool] = 100 - [sum of MIN_PERCENTAGE_RESOURCE across all workload groups]
O acesso aos recursos no pool compartilhado é alocado com base na importância . Requests with the same importance level will access shared pool resources on a first in/first out basis.