Partager via


Implémentation de contrôles de ressources pour les conteneurs Windows

S’applique à : Windows Server 2022, Windows Server 2019

Plusieurs contrôles de ressources peuvent être implémentés par conteneur et par ressource. Par défaut, les conteneurs exécutés sont soumis à la gestion des ressources Windows classique. Celle-ci est généralement exécutée de manière équitable, mais en configurant ces contrôles, un développeur ou un administrateur est en mesure de limiter ou d’influencer l’utilisation des ressources. Les ressources contrôlables sont les suivantes : UC/Processeur, Mémoire/RAM, Disque/Stockage et Réseau/Débit.

Les conteneurs Windows utilisent des objets de traitement pour regrouper les processus associés à chaque conteneur et en assurer le suivi. Les contrôles de ressources sont implémentés sur l’objet de traitement parent associé au conteneur.

Dans le cas d’isolation Hyper-V, les contrôles de ressources sont appliqués à la fois à l’ordinateur virtuel et à l’objet de traitement du conteneur en cours d’exécution automatique sur l’ordinateur virtuel. Cela garantit que, même si un processus en cours d’exécution dans le conteneur contourne ou échappe aux contrôles de l’objet de traitement, l’ordinateur virtuel s’assurera qu’il ne peut pas dépasser les contrôles de ressources définis.

Ressources

Pour chaque ressource, cette section fournit un mappage entre l’interface de ligne de commande Docker, comme exemple d’utilisation du contrôle de ressources (il peut être configuré par un orchestrateur ou d’autres outils) et l’API du service de calcul hôte (HCS) Windows correspondante, en indiquant la façon dont le contrôle de ressources a généralement été implémenté par Windows (notez que cette description est une vue d’ensemble et que l’implémentation sous-jacente est susceptible d’être modifiée).

Mémoire

Ressource Emplacement
Interface Docker --memory
Interface HCS MemoryMaximumInMB
Noyau partagé JOB_OBJECT_LIMIT_JOB_MEMORY
Isolation Hyper-V Mémoire de l’ordinateur virtuel

Notes

Pour l’isolation Hyper-V dans Windows Server 2016 : si vous utilisez une limite de mémoire, vous constaterez que le conteneur alloue initialement la quantité de mémoire maximale, puis commence à la renvoyer à l’hôte du conteneur. Les versions ultérieures de Windows Server (1709 ou ultérieur) ont optimisé ce processus.

UC (nombre)

Ressource Emplacement
Interface Docker --cpus
Interface HCS ProcessorCount
Noyau partagé Simulé avec JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
Isolation Hyper-V Nombre de processeurs virtuels exposés

UC (pourcent)

Ressource Emplacement
Interface Docker --cpu-percent
Interface HCS ProcessorMaximum
Noyau partagé JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Isolation Hyper-V Limites de l’hyperviseur sur les processeurs virtuels

UC (partages)

Ressource Emplacement
Interface Docker --cpu-shares
Interface HCS ProcessorWeight
Noyau partagé JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
Isolation Hyper-V Poids de processeurs virtuels de l’hyperviseur

Stockage (image)

Ressource Emplacement
Interface Docker --io-maxbandwidth/--io-maxiops
Interface HCS StorageIOPSMaximum et StorageBandwidthMaximum
Noyau partagé JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Isolation Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Stockage (volumes)

Ressource Emplacement
Interface Docker --storage-opt size=
Interface HCS StorageSandboxSize
Noyau partagé JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Isolation Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Remarques supplémentaires ou détails

Besoins en mémoire

Les conteneurs Windows exécutent quelques processus système dans chaque conteneur. Il s’agit généralement de ceux qui fournissent des fonctionnalités par conteneur, comme la gestion des utilisateurs, la mise en réseau, etc… Si la majeure partie de la mémoire requise par ces processus est partagée entre les conteneurs, la limite de mémoire doit être suffisamment élevée pour l’ensemble des conteneurs. Un tableau est fourni dans le document Configuration requise pour chaque type d’image de base, avec et sans isolation Hyper-V.

Partages UC (sans isolation Hyper-V)

Lors de l’utilisation de partages de processeur, l’implémentation sous-jacente (lorsque l’isolation Hyper-V n’est pas utilisée) configure JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, en définissant de manière spécifique l’indicateur du contrôle sur JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED et en fournissant un poids approprié. Les plages de poids valides pour l’objet de traitement sont comprises entre 1 et 9 et la valeur par défaut est 5, ce qui correspond à une fidélité plus faible que les valeurs de services de calcul hôtes qui sont comprises entre 1 à 10 000. Par exemple, un poids de partage de 7 500 entraînerait un poids égal à 7, tandis qu’un poids de partage de 2 500 produirait la valeur 2.