structure JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION (winnt.h)

Contient des informations 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 JobObjectNotificationLimitInformation .

Syntaxe

typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {
  DWORD64                                   IoReadBytesLimit;
  DWORD64                                   IoWriteBytesLimit;
  LARGE_INTEGER                             PerJobUserTimeLimit;
  DWORD64                                   JobMemoryLimit;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          RateControlTolerance;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
  DWORD                                     LimitFlags;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;

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 .

JobMemoryLimit

Si le paramètre LimitFlags spécifie JOB_OBJECT_LIMIT_JOB_MEMORY, ce membre est la limite 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é.

Pour spécifier JobMemoryLimit comme limite applicable et empêcher les processus dans les travaux qui dépassent la limite de continuer à valider la mémoire, consultez la structure JOBOBJECT_EXTENDED_LIMIT_INFORMATION .

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.

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 du 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
0x00000200
Établit la limite de mémoire validée à la somme de mémoire validée à l’échelle du travail pour tous les processus associés au travail. Le membre JobMemoryLimit 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_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 .

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 JobObjectLimitViolationInformation . Les informations de violation de limite sont reçues dans un JOBOBJECT_LIMIT_VIOLATION_STRUCTURE 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 d’autre message JOB_OBJECT_MSG_NOTIFICATION_LIMIT tant que QueryInformationJobObject n’est pas 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 de JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION 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 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
En-tête winnt.h

Voir aussi

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject