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é.
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é.
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é.
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é.
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 |
---|---|
|
É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. |
|
É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. |
|
É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. |
|
É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. |
|
Établit la limite du temps d’exécution en mode utilisateur pour le travail. Le membre PerJobUserTimeLimit contient des informations supplémentaires. |
|
É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 . |
|
É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 . |
|
É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. |
|
É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é.
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é.
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é.
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é.
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