Partager via


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

S’applique à : Windows Server 2025, 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 à une gestion classique des ressources Windows, qui en général est basée sur un partage équitable, mais bien que la configuration de ces contrôles, un développeur ou un administrateur puisse limiter ou influencer l’utilisation des ressources. Les ressources qui peuvent être contrôlées sont les suivantes : processeur/processeur, mémoire/RAM, disque/stockage et mise en réseau/débit.

Les conteneurs Windows utilisent objets de travail pour regrouper et suivre les processus associés à chaque conteneur. Les contrôles de ressources sont implémentés sur l’objet de travail parent associé au conteneur.

Dans le cas de Hyper-V isolation, les contrôles de ressources sont appliqués automatiquement à la fois à la machine virtuelle et à l'objet de tâche du conteneur s'exécutant à l'intérieur de la machine virtuelle. Cela garantit que même si un processus s'exécutant dans le conteneur contournait ou échappait aux contrôles des objets de tâche, la machine virtuelle veillerait à ce qu'il ne puisse 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 de la façon dont le contrôle de ressource peut être utilisé (il peut être configuré par un orchestrateur ou d’autres outils) à l’API HCS (Host Compute Service) Windows correspondante, ainsi que la façon dont le contrôle de ressource a été implémenté par Windows (notez que cette description est de haut niveau et que l’implémentation sous-jacente est susceptible de changer).

Mémoire

Ressource Emplacement
Interface Docker --mémoire
Interface HCS MemoryMaximumInMB
Noyau partagé JOB_OBJECT_LIMIT_JOB_MEMORY
Isolation Hyper-V Mémoire de machine virtuelle

Remarque

Pour l'isolation Hyper-V dans Windows Server 2016, lors de l'utilisation d'une limite de mémoire, le conteneur alloue initialement la quantité maximale de mémoire, puis commence à la retourner à l’hôte du conteneur. Les versions ultérieures de Windows Server (1709 ou version ultérieure) ont optimisé ce processus.

PROCESSEUR (nombre)

Ressource Emplacement
Interface Docker --Processeurs
Interface HCS NombreDeProcesseurs
Noyau partagé Simulé par JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
Isolation Hyper-V Nombre de processeurs virtuels exposés

PROCESSEUR (pourcentage)

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 concernant les processeurs virtuels

CPU (partages)

Ressource Emplacement
Interface Docker --cpu-shares
Interface HCS ProcessorWeight
Noyau partagé JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
Isolation Hyper-V Poids des 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

Notes ou détails supplémentaires

Configuration requise pour la mémoire

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

CPU Shares (sans isolation Hyper-V)

Lorsque vous utilisez des partages de processeur, l’implémentation sous-jacente (lorsqu’elle n’utilise pas l’isolation Hyper-V) configure le JOBOBJECT_CPU_RATE_CONTROL_INFORMATIONen réglant spécifiquement l’indicateur de contrôle sur JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED et en fournissant un poids approprié. Les plages de poids valides de l’objet de travail sont de 1 à 9 avec une valeur par défaut de 5 qui est inférieure à la fidélité des services de calcul hôte de 1 à 1 0000. Par exemple, un poids de partage de 7500 entraînerait un poids de 7 ou un poids de partage de 2500 entraînerait une valeur de 2.