Isolation des groupes de charges de travail Azure Synapse Analytics
Cet article explique comment les groupes de charge de travail peuvent être utilisés pour configurer l’isolation de la charge de travail, contenir des ressources et appliquer des règles runtime pour l’exécution des requêtes.
Groupes de charges de travail
Les groupes de charges de travail sont des conteneurs pour un ensemble de requêtes et constituent la base de la configuration de la gestion des charges de travail, y compris l’isolation de la charge de travail, sur un système. Les groupes de charge de travail sont créés à l’aide de la syntaxe CREATE WORKLOAD GROUP. Une configuration de gestion de charge de travail simple peut gérer les charges de données et les requêtes utilisateur. Par exemple, un groupe de charge de travail nommé wgDataLoads
définit des aspects de charge de travail pour les données chargées dans le système. En outre, un groupe de charge de travail nommé wgUserQueries
définit des aspects de charge de travail pour les utilisateurs qui exécutent des requêtes afin de lire des données à partir du système.
Les sections suivantes décrivent comment les groupes de charges de travail offrent la possibilité de définir l’isolation, l’autonomie, la définition des ressources de la requête et d’adhérer aux règles d’exécution.
Gouvernance des ressources
Les groupes de charges de travail gouvernent les ressources mémoire et processeur. Les E/S du disque et du réseau ainsi que tempdb ne sont pas régies. La gouvernance des ressources pour la mémoire et le processeur est la suivante :
La mémoire est régie au niveau de la demande et conservée pendant toute la durée de la demande. Pour plus d’informations sur la configuration de la quantité de mémoire par requête, consultez Ressources par définition de requête. Le paramètre MIN_PERCENTAGE_RESOURCE pour le groupe de charge de travail dédie exclusivement de la mémoire à ce groupe de charge de travail. Le paramètre CAP_PERCENTAGE_RESOURCE pour le groupe de charge de travail est une limite inconditionnelle de la mémoire qu’un groupe de charge de travail peut consommer.
Les ressources du processeur sont régies au niveau du groupe de charge de travail et partagées par toutes les demandes au sein d’un groupe de charge de travail. Les ressources du processeur sont fluides par rapport à la mémoire qui est dédiée à une requête pendant la durée de l’exécution. Un processeur donné est une ressource fluide. Les ressources processeur inutilisées peuvent être consommées par tous les groupes de charges de travail. Cela signifie que l’utilisation du processeur peut dépasser le paramètre CAP_PERCENTAGE_RESOURCE pour le groupe de charge de travail. Cela signifie également que le paramètre MIN_PERCENTAGE_RESOURCE pour le groupe de charge de travail n’est pas une réservation matérielle comme la mémoire est. Lorsque les ressources du processeur sont en conflit, l’utilisation s’aligne sur la définition de CAP_PERCENTAGE_RESOURCE pour les groupes de charge de travail.
Isolation des charges de travail
L’isolation de la charge de travail signifie que les ressources sont réservées, exclusivement, pour un groupe de charge de travail. L’isolation des charges de travail s’effectue en configurant le paramètre MIN_PERCENTAGE_RESOURCE sur une valeur supérieure à zéro dans la syntaxe CREATE WORKLOAD GROUP. Pour les charges de travail d’exécution continues qui doivent adhérer à des contrats de niveau de service étroits, l’isolation garantit que les ressources sont toujours disponibles pour le groupe de charge de travail.
La configuration de l’isolation de la charge de travail définit implicitement un niveau garanti de concurrence. Par exemple, un groupe de charge de travail avec un MIN_PERCENTAGE_RESOURCE défini sur 30 % et REQUEST_MIN_RESOURCE_GRANT_PERCENT défini à 2 % est garanti 15 accès concurrentiel. Le niveau de concurrence est garanti car 2 % des emplacements de ressources avec 15 concurrences sont réservés à tout moment dans le groupe de charge de travail (quelle que soit la façon dont REQUEST_MAX_RESOURCE_GRANT_PERCENT est configuré). Si REQUEST_MAX_RESOURCE_GRANT_PERCENT est supérieur à REQUEST_MIN_RESOURCE_GRANT_PERCENT et CAP_PERCENTAGE_RESOURCE est supérieur à MIN_PERCENTAGE_RESOURCE, des ressources supplémentaires peuvent être ajoutées par demande (en fonction de la disponibilité des ressources). Si REQUEST_MAX_RESOURCE_GRANT_PERCENT et REQUEST_MIN_RESOURCE_GRANT_PERCENT sont égaux et que CAP_PERCENTAGE_RESOURCE est supérieur à MIN_PERCENTAGE_RESOURCE, une concurrence supplémentaire est possible. Considérez la méthode ci-dessous pour déterminer la concurrence garantie :
[Accès concurrentiel garanti] = [MIN_PERCENTAGE_RESOURCE
] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT
]
Notes
Il existe des valeurs de niveau de service spécifiques au minimum pour min_percentage_resource. Pour plus d’informations, consultez Valeurs effectives pour plus d’informations.
En l’absence d’isolation de la charge de travail, les requêtes opèrent dans le pool partagé de ressources. L’accès aux ressources du pool partagé n’est pas garanti et est attribué selon l’importance.
La configuration de l’isolation de la charge de travail doit être effectuée avec précaution, car les ressources sont allouées au groupe de charges de travail, même s’il n’y a pas de requêtes actives dans le groupe de charge de travail. L’isolation trop configurable peut entraîner une diminution de l’utilisation globale du système.
Les utilisateurs doivent éviter une solution de gestion de la charge de travail qui configure l’isolation de la charge de travail de 100 % : l’isolation de 100 % est obtenue lorsque la somme des min_percentage_resource configurés pour tous les groupes de charges de travail est égale à 100 %. Ce type de configuration est trop restrictif et rigide, laissant peu de place pour les requêtes de ressources qui sont mal classées par erreur. Il existe une provision pour permettre l’exécution d’une requête à partir de groupes de charge de travail non configurés pour l’isolation. Les ressources allouées à cette requête s’affichent sous la forme d’un zéro dans les vues DMV des systèmes et empruntent un niveau smallrc d’allocation de ressources à partir des ressources réservées du système.
Notes
Pour garantir une utilisation optimale des ressources, envisagez une solution de gestion de la charge de travail qui exploite une certaine isolation pour garantir la satisfaction des contrats de niveau de service et les combiner avec les ressources partagées accessibles en fonction de l’importance de la charge de travail.
Autonomie de la charge de travail
L’autonomie de la charge de travail fait référence à la limitation de la quantité de ressources qu’un groupe de charge de travail peut consommer. L’autonomie de la charge de travail s’effectue en configurant le paramètre MIN_PERCENTAGE_RESOURCE sur une valeur inférieure à 100 dans la syntaxe CREATE WORKLOAD GROUP. Considérez le scénario dans lequel les utilisateurs ont besoin d’un accès en lecture au système pour pouvoir exécuter une analyse de scénarios via des requêtes ad hoc. Ces types de requêtes peuvent avoir un impact négatif sur les autres charges de travail qui s’exécutent sur le système. La configuration de l’autonomie permet de limiter la quantité de ressources.
La configuration de l’autonomie de la charge de travail définit implicitement un niveau garanti de concurrence. Avec un CAP_PERCENTAGE_RESOURCE défini sur 60 % et un REQUEST_MIN_RESOURCE_GRANT_PERCENT défini sur 1 %, un niveau jusqu’à 60 concurrences est autorisé pour le groupe de charge de travail. Considérez la méthode incluse ci-dessous pour déterminer la concurrence maximale :
[Concurrence Max] = [CAP_PERCENTAGE_RESOURCE
] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT
]
Notes
Le CAP_PERCENTAGE_RESOURCE effectif d’un groupe de charge de travail n’atteint pas 100 % lorsque les groupes de charges de travail avec MIN_PERCENTAGE_RESOURCE à un niveau supérieur à zéro sont créés. Consultez sys.dm_workload_management_workload_groups_stats pour des valeurs de runtime effectives.
Ressources par définition de requête
Les groupes de charges de travail fournissent un mécanisme permettant de définir le nombre minimal et maximal de ressources qui sont allouées par requête avec les paramètres REQUEST_MIN_RESOURCE_GRANT_PERCENT et REQUEST_MAX_RESOURCE_GRANT_PERCENT dans la syntaxe CREATE WORKLOAD GROUP. Dans ce cas, la ressource est la mémoire. La gouvernance des ressources du processeur est traitée dans la section Gouvernance des ressources.
Notes
REQUEST_MAX_RESOURCE_GRANT_PERCENT est un paramètre facultatif qui a comme valeur par défaut la même valeur que celle spécifiée pour REQUEST_MIN_RESOURCE_GRANT_PERCENT.
Comme le choix d’une classe de ressource, la configuration de REQUEST_MIN_RESOURCE_GRANT_PERCENT définit la valeur des ressources utilisées par une requête. La quantité de ressources indiquée par la valeur définie est garantie pour l’allocation à la requête avant le début de l’exécution. Pour les clients qui migrent des classes de ressources vers des groupes de charges de travail, envisagez de suivre l’article Comment pour mapper des classes de ressources à des groupes de charge de travail comme point de départ.
La configuration de REQUEST_MAX_RESOURCE_GRANT_PERCENT sur une valeur supérieure à REQUEST_MIN_RESOURCE_GRANT_PERCENT permet au système d’allouer plus de ressources par requête. Pendant la planification d’une demande, le système détermine l’allocation réelle des ressources à la demande, qui est comprise entre REQUEST_MIN_RESOURCE_GRANT_PERCENT et REQUEST_MAX_RESOURCE_GRANT_PERCENT, en fonction de la disponibilité des ressources dans le pool partagé et de la charge actuelle sur le système. Les ressources doivent exister dans le pool partagé des ressources lorsque la requête est planifiée.
Notes
REQUEST_MIN_RESOURCE_GRANT_PERCENT et REQUEST_MAX_RESOURCE_GRANT_PERCENT ont des valeurs effectives qui dépendent des valeurs MIN_PERCENTAGE_RESOURCE et CAP_PERCENTAGE_RESOURCE effectives. Consultez sys.dm_workload_management_workload_groups_stats pour des valeurs de runtime effectives.
Délai d’exécution
Sur les systèmes de création de rapports ad hoc, les clients peuvent exécuter accidentellement des pertes de contrôle de requêtes qui ont un impact sérieux sur la productivité des autres. Les administrateurs système sont obligés de perdre du temps en éliminant des pertes de contrôle de requêtes pour libérer des ressources système. Les groupes de charge de travail permettent de configurer une règle de délai d’expiration d’exécution de requête pour annuler les requêtes qui ont dépassé la valeur spécifiée. La règle est configurée en définissant le paramètre QUERY_EXECUTION_TIMEOUT_SEC dans la syntaxe CREATE WORKLOAD GROUP.
Ressources de pool partagé
Les ressources de pool partagé sont les ressources qui ne sont pas configurées pour l’isolation. Les groupes de charge de travail avec un MIN_PERCENTAGE_RESOURCE défini sur zéro tirent parti des ressources du pool partagé pour exécuter des requêtes. Les groupes de charges de travail avec un CAP_PERCENTAGE_RESOURCE supérieur à MIN_PERCENTAGE_RESOURCE également utilisé des ressources partagées. La quantité de ressources disponibles dans le pool partagé est calculée comme suit.
[Pool partagé] = 100-[somme de MIN_PERCENTAGE_RESOURCE
pour tous les groupes de charge de travail]
L’accès aux ressources du pool partagé est alloué selon l’importance. Les requêtes ayant le même niveau d’importance accèdent aux ressources de pool partagé sur la base premier entré/premier sortie.