Partager via


structure JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 (winnt.h)

Contient des informations étendues sur les limites de notification pour un objet de travail. Cette structure est utilisée par les fonctions SetInformationJobObject et QueryInformationJobObject avec la classe d’informations JobObjectNotificationLimitInformation2 .

Syntaxe

typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
  DWORD64                                   IoReadBytesLimit;
  DWORD64                                   IoWriteBytesLimit;
  LARGE_INTEGER                             PerJobUserTimeLimit;
  union {
    DWORD64 JobHighMemoryLimit;
    DWORD64 JobMemoryLimit;
  } DUMMYUNIONNAME;
  union {
    JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
    JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
  } DUMMYUNIONNAME2;
  union {
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL CpuRateControlToleranceInterval;
  } DUMMYUNIONNAME3;
  DWORD                                     LimitFlags;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          IoRateControlTolerance;
  DWORD64                                   JobLowMemoryLimit;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          NetRateControlTolerance;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2;

Membres

IoReadBytesLimit

Si le membre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_READ_BYTES, ce membre est la limite de notification pour le nombre total d’octets d’E/S lus par tous les processus du travail. Sinon, ce membre est ignoré.

IoWriteBytesLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, ce membre est la limite de notification pour le nombre total d’octets d’E/S écrits par tous les processus du travail. Sinon, ce membre est ignoré.

PerJobUserTimeLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_TIME, ce membre est la limite de notification pour le temps d’exécution en mode utilisateur par travail, en 100 nanosecondes. Sinon, ce membre est ignoré.

Le système ajoute le temps d’exécution cumulé des processus associés au travail à cette limite lorsque la limite est définie. Par exemple, si un processus associé au travail a déjà accumulé 5 minutes de temps d’exécution en mode utilisateur et que la limite est définie sur 1 minute, la limite effectivement appliquée est de 6 minutes.

Pour spécifier PerJobUserTimeLimit comme limite applicable et arrêter les processus dans les travaux qui dépassent la limite, consultez la structure JOBOBJECT_BASIC_LIMIT_INFORMATION .

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH, ce membre est la limite maximale de notification pour la mémoire virtuelle totale qui peut être validée par tous les processus du travail, en octets. Sinon, ce membre est ignoré.

DUMMYUNIONNAME.JobMemoryLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_MEMORY, ce membre est la limite maximale de notification pour la mémoire virtuelle totale qui peut être validée par tous les processus du travail, en octets. Sinon, ce membre est ignoré.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.RateControlTolerance

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_RATE_CONTROL, ce membre spécifie la mesure dans laquelle un travail peut dépasser ses limites de contrôle de débit processeur pendant l’intervalle spécifié par le membre RateControlToleranceInterval . Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceHigh est utilisé.

Valeur Signification
ToleranceLow
1
Le travail peut dépasser ses limites de contrôle de débit processeur pour 20 % de l’intervalle de tolérance.
ToleranceMedium
2
Le travail peut dépasser ses limites de contrôle de débit processeur pour 40 % de l’intervalle de tolérance.
ToléranceHigh
3
Le travail peut dépasser ses limites de contrôle de débit processeur pour 60 % de l’intervalle de tolérance.

DUMMYUNIONNAME2.CpuRateControlTolerance

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_CPU_RATE_CONTROL, ce membre spécifie la mesure dans laquelle un travail peut dépasser ses limites de contrôle de débit processeur pendant l’intervalle spécifié par le membre CpuRateControlToleranceInterval . Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceHigh est utilisé.

Valeur Signification
ToleranceLow
1
Le travail peut dépasser ses limites de contrôle de débit processeur pour 20 % de l’intervalle de tolérance.
ToleranceMedium
2
Le travail peut dépasser ses limites de contrôle de débit processeur pour 40 % de l’intervalle de tolérance.
ToléranceHigh
3
Le travail peut dépasser ses limites de contrôle de débit processeur pour 60 % de l’intervalle de tolérance.

DUMMYUNIONNAME3

DUMMYUNIONNAME3.RateControlToleranceInterval

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_RATE_CONTROL, ce membre spécifie l’intervalle pendant lequel l’utilisation du processeur d’une tâche est surveillée pour déterminer si la tâche a dépassé ses limites de contrôle de débit processeur. Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceIntervalShort est utilisé.

Valeur Signification
ToleranceIntervalShort
1
L’intervalle de tolérance est de 10 secondes.
ToleranceIntervalMedium
2
L’intervalle de tolérance est d’une minute.
ToleranceIntervalLong
3
L’intervalle de tolérance est de 10 minutes.

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

Si le paramètre LimitFlags spécifie JOB_OBJECT_CPU_LIMIT_RATE_CONTROL, ce membre spécifie l’intervalle pendant lequel l’utilisation du processeur d’une tâche est surveillée pour déterminer si la tâche a dépassé ses limites de contrôle de débit processeur. Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceIntervalShort est utilisé.

Valeur Signification
ToleranceIntervalShort
1
L’intervalle de tolérance est de 10 secondes.
ToleranceIntervalMedium
2
L’intervalle de tolérance est d’une minute.
ToleranceIntervalLong
3
L’intervalle de tolérance est de 10 minutes.

LimitFlags

Indicateurs de limite qui sont en vigueur. Ce membre est un champ de bits qui détermine si d’autres membres de la structure sont utilisés. Vous pouvez spécifier n’importe quelle combinaison des valeurs suivantes.

Valeur Signification
JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH
0x00000200
Établit le seuil de notification pour la somme à l’échelle du travail de la mémoire validée privée pour tous les processus associés au travail. Le membre JobHighMemoryLimit contient des informations supplémentaires.
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
Établit le minimum de notification pour la somme à l’échelle du travail de la mémoire validée privée pour tous les processus associés au travail. Si cette valeur est définie, une notification est envoyée lorsque la quantité de mémoire privée validée est inférieure à ce seuil. Le membre JobLowMemoryLimit contient des informations supplémentaires.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Établit la limite d’octets de lecture d’E/S à la somme à l’échelle du travail d’octets d’E/S lus par tous les processus associés au travail. Le membre IoReadBytesLimit contient plus d’informations.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Établit la limite d’octets d’écriture d’E/S à la somme à l’échelle du travail d’octets d’E/S écrits par tous les processus associés au travail. Le membre IoWriteBytesLimit contient plus d’informations.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Établit la limite du temps d’exécution en mode utilisateur pour le travail. Le membre PerJobUserTimeLimit contient des informations supplémentaires.
JOB_OBJECT_LIMIT_CPU_RATE_CONTROL
0x00040000
Établit le seuil de notification pour les limites de contrôle de débit processeur établies pour le travail. Les membres CpuRateControlTolerance et CpuRateControlToleranceInterval contiennent des informations supplémentaires.

Les limites de contrôle du débit processeur sont établies en appelant SetInformationJobObject avec la classe d’informations JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Établit le seuil de notification pour les limites de contrôle de débit processeur établies pour le travail. Les membres RateControlTolerance et RateControlToleranceInterval contiennent des informations supplémentaires.

Les limites de contrôle du débit processeur sont établies en appelant SetInformationJobObject avec la classe d’informations JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
Établit le seuil de notification pour les limites de contrôle de débit d’E/S établies pour le travail. Les membres IoRateControlTolerance et IoRateControlToleranceInterval contiennent des informations supplémentaires.

Les limites de contrôle du débit d’E/S sont établies en appelant SetIoRateControlInformationJobObject.

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
Établit le seuil de notification pour les limites de contrôle de débit réseau établies pour le travail. Les membres NetRateControlTolerance et NetRateControlToleranceInterval contiennent des informations supplémentaires.

Les limites de contrôle de débit réseau sont établies en appelant SetInformationJobObject avec la classe d’informations JobObjectNetRateInformationClass .

IoRateControlTolerance

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_IO_RATE_CONTROL, ce membre spécifie la mesure dans laquelle un travail peut dépasser ses limites de contrôle de débit d’E/S pendant l’intervalle spécifié par le membre IoRateControlToleranceInterval . Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceHigh est utilisé.

Valeur Signification
ToleranceLow
1
Le travail peut dépasser ses limites de contrôle de débit d’E/S pour 20 % de l’intervalle de tolérance.
ToleranceMedium
2
La tâche peut dépasser ses limites de contrôle de débit d’E/S pour 40 % de l’intervalle de tolérance.
ToléranceHigh
3
La tâche peut dépasser ses limites de contrôle de débit d’E/S pour 60 % de l’intervalle de tolérance.

JobLowMemoryLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_MEMORY_LOW, ce membre est la limite de notification minimale pour la mémoire virtuelle totale qui peut être validée par tous les processus du travail, en octets. Sinon, ce membre est ignoré.

IoRateControlToleranceInterval

Si le paramètre LimitFlags spécifie JOB_OBJECT_IO_LIMIT_RATE_CONTROL, ce membre spécifie l’intervalle pendant lequel l’utilisation des E/S d’une tâche est surveillée pour déterminer si la tâche a dépassé ses limites de contrôle de débit d’E/S. Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceIntervalShort est utilisé.

Valeur Signification
ToleranceIntervalShort
1
L’intervalle de tolérance est de 10 secondes.
ToleranceIntervalMedium
2
L’intervalle de tolérance est d’une minute.
ToleranceIntervalLong
3
L’intervalle de tolérance est de 10 minutes.

NetRateControlTolerance

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_IO_RATE_CONTROL, ce membre spécifie la mesure dans laquelle un travail peut dépasser ses limites de contrôle de débit réseau pendant l’intervalle spécifié par le membre NetRateControlToleranceInterval . Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceHigh est utilisé.

Valeur Signification
ToleranceLow
1
Le travail peut dépasser ses limites de contrôle de débit réseau pour 20 % de l’intervalle de tolérance.
ToleranceMedium
2
Le travail peut dépasser ses limites de contrôle de débit réseau pour 40 % de l’intervalle de tolérance.
ToléranceHigh
3
La tâche peut dépasser ses limites de contrôle de débit réseau pour 60 % de l’intervalle de tolérance.

NetRateControlToleranceInterval

Si le paramètre LimitFlags spécifie JOB_OBJECT_NET_LIMIT_RATE_CONTROL, ce membre spécifie l’intervalle pendant lequel l’utilisation réseau d’une tâche est surveillée pour déterminer si la tâche a dépassé ses limites de contrôle de débit réseau. Sinon, ce membre est ignoré.

Ce membre peut être l’une des valeurs suivantes. Si aucune valeur n’est spécifiée, ToleranceIntervalShort est utilisé.

Valeur Signification
ToleranceIntervalShort
1
L’intervalle de tolérance est de 10 secondes.
ToleranceIntervalMedium
2
L’intervalle de tolérance est d’une minute.
ToleranceIntervalLong
3
L’intervalle de tolérance est de 10 minutes.

Remarques

Lorsqu’une limite de notification est dépassée, le système envoie un message JOB_OBJECT_MSG_NOTIFICATION_LIMIT au port d’achèvement des E/S associé au travail. Les processus du travail continuent de s’exécuter et peuvent continuer à allouer de la mémoire ou à transmettre des octets de lecture ou d’écriture au-delà des limites spécifiées.

Lorsque l’application qui surveille le port d’achèvement des E/S reçoit un message JOB_OBJECT_MSG_NOTIFICATION_LIMIT , elle doit appeler QueryInformationJobObject avec la classe d’informations JobObjectLimitViolationInformation2 . Les informations de violation de limite sont reçues dans une structure de JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 qui contient des informations sur toutes les limites de notification qui ont été dépassées au moment de la requête. Le système n’envoie pas un autre message JOB_OBJECT_MSG_NOTIFICATION_LIMIT tant qu’une fois QueryInformationJobObject appelé.

Les limites de contrôle du débit processeur pour un travail sont établies dans une structure JOBOBJECT_CPU_RATE_CONTROL_INFORMATION . Les valeurs de contrôle de débit processeur dans la structure JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 spécifient combien le travail peut dépasser ses limites de contrôle de débit d’UC établies avant l’envoi de la notification.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10 (applications de bureau uniquement)
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
En-tête winnt.h

Voir aussi

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject