JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION-Struktur (winnt.h)

Enthält Informationen zu Benachrichtigungsgrenzwerten für ein Auftragsobjekt. Diese Struktur wird von den Funktionen SetInformationJobObject und QueryInformationJobObject mit der Informationsklasse JobObjectNotificationLimitInformation verwendet.

Syntax

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;

Member

IoReadBytesLimit

Wenn der LimitFlags-Member JOB_OBJECT_LIMIT_JOB_READ_BYTES angibt, ist dieser Member der Benachrichtigungsgrenzwert für die Gesamtanzahl von E/A-Bytes, die von allen Prozessen im Auftrag gelesen werden. Andernfalls wird dieser Member ignoriert.

IoWriteBytesLimit

Wenn der Parameter LimitFlags JOB_OBJECT_LIMIT_JOB_WRITE_BYTES angibt, ist dieser Member der Benachrichtigungsgrenzwert für die Gesamtanzahl von E/A-Bytes, die von allen Prozessen im Auftrag geschrieben werden. Andernfalls wird dieser Member ignoriert.

PerJobUserTimeLimit

Wenn der Parameter LimitFlags JOB_OBJECT_LIMIT_JOB_TIME angibt, ist dieser Member das Benachrichtigungslimit für die Ausführungszeit des Benutzermodus pro Auftrag in 100 Nanosekunden-Ticks. Andernfalls wird dieser Member ignoriert.

Das System fügt die akkumulierte Ausführungszeit von Prozessen, die dem Auftrag zugeordnet sind, zu diesem Grenzwert hinzu, wenn der Grenzwert festgelegt ist. Wenn beispielsweise ein Prozess, der dem Auftrag zugeordnet ist, bereits 5 Minuten Ausführungszeit im Benutzermodus gesammelt hat und das Limit auf 1 Minute festgelegt ist, beträgt die tatsächlich erzwungene Grenze 6 Minuten.

Informationen zum Angeben von PerJobUserTimeLimit als durchsetzbarem Grenzwert und zum Beenden von Prozessen in Aufträgen, die den Grenzwert überschreiten, finden Sie unter JOBOBJECT_BASIC_LIMIT_INFORMATION-Struktur .

JobMemoryLimit

Wenn der Parameter LimitFlags JOB_OBJECT_LIMIT_JOB_MEMORY angibt, ist dieser Member der Benachrichtigungsgrenzwert für den gesamten virtuellen Arbeitsspeicher, der von allen Prozessen im Auftrag in Bytes committet werden kann. Andernfalls wird dieser Member ignoriert.

Informationen zum Angeben von JobMemoryLimit als durchsetzbarem Grenzwert und zum Verhindern, dass Prozesse in Aufträgen, die den Grenzwert überschreiten, weiterhin Arbeitsspeicher committen, finden Sie in der JOBOBJECT_EXTENDED_LIMIT_INFORMATION-Struktur .

RateControlTolerance

Wenn der Parameter LimitFlags JOB_OBJECT_LIMIT_RATE_CONTROL angibt, gibt dieser Member den Umfang an, in dem ein Auftrag seine CPU-Ratensteuerungsgrenzwerte während des vom RateControlToleranceInterval-Member angegebenen Intervalls überschreiten kann. Andernfalls wird dieser Member ignoriert.

Dieser Member kann einer der folgenden Werte sein. Wenn kein Wert angegeben wird, wird ToleranceHigh verwendet.

Wert Bedeutung
ToleranceLow
1
Der Auftrag kann seine Grenzwerte für die CPU-Ratensteuerung für 20 % des Toleranzintervalls überschreiten.
ToleranceMedium
2
Der Auftrag kann seine Grenzwerte für die CPU-Ratensteuerung für 40 % des Toleranzintervalls überschreiten.
ToleranceHigh
3
Der Auftrag kann seine Grenzwerte für die CPU-Ratensteuerung für 60 % des Toleranzintervalls überschreiten.

RateControlToleranceInterval

Wenn der Parameter LimitFlags JOB_OBJECT_LIMIT_RATE_CONTROL angibt, gibt dieser Member das Intervall an, in dem die CPU-Auslastung eines Auftrags überwacht wird, um zu bestimmen, ob der Auftrag seine Grenzwerte für die CPU-Ratensteuerung überschritten hat. Andernfalls wird dieser Member ignoriert.

Dieser Member kann einer der folgenden Werte sein. Wenn kein Wert angegeben wird, wird ToleranceIntervalShort verwendet.

Wert Bedeutung
ToleranceIntervalShort
1
Das Toleranzintervall beträgt 10 Sekunden.
ToleranceIntervalMedium
2
Das Toleranzintervall beträgt eine Minute.
ToleranceIntervalLong
3
Das Toleranzintervall beträgt 10 Minuten.

LimitFlags

Die geltenden Grenzwertflags. Dieses Element ist ein Bitfeld, das bestimmt, ob andere Strukturmember verwendet werden. Eine beliebige Kombination der folgenden Werte kann angegeben werden.

Wert Bedeutung
JOB_OBJECT_LIMIT_JOB_MEMORY
0x00000200
Legt den Grenzwert für committeten Arbeitsspeicher auf die auftragsweite Summe des committeten Arbeitsspeichers für alle dem Auftrag zugeordneten Prozesse fest. Das JobMemoryLimit-Element enthält zusätzliche Informationen.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Legt den Grenzwert für E/A-Lesebytes auf die auftragsweite Summe der E/A-Bytes fest, die von allen dem Auftrag zugeordneten Prozessen gelesen werden. Das Element IoReadBytesLimit enthält weitere Informationen.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Legt den Grenzwert für E/A-Schreibbytes auf die auftragsweite Summe der E/A-Bytes fest, die von allen dem Auftrag zugeordneten Prozessen geschrieben werden. Das IoWriteBytesLimit-Element enthält weitere Informationen.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Legt den Grenzwert für die Ausführungszeit im Benutzermodus für den Auftrag fest. Das PerJobUserTimeLimit-Element enthält zusätzliche Informationen.
JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Legt den Benachrichtigungsschwellenwert für die grenzwerte für die CPU-Ratensteuerung fest, die für den Auftrag festgelegt wurden. Die Member RateControlTolerance und RateControlToleranceInterval enthalten zusätzliche Informationen.

Cpu-Ratensteuerungsgrenzwerte werden durch Aufrufen von SetInformationJobObject mit der Informationsklasse JobObjectCpuRateInformationClass festgelegt.

Hinweise

Wenn ein Benachrichtigungslimit überschritten wird, sendet das System eine JOB_OBJECT_MSG_NOTIFICATION_LIMIT Nachricht an den E/A-Abschlussport, der dem Auftrag zugeordnet ist. Prozesse im Auftrag werden weiterhin ausgeführt und können weiterhin Arbeitsspeicher zuweisen oder Lese- oder Schreibbytes über die angegebenen Grenzwerte hinaus übertragen.

Wenn die Anwendung, die den E/A-Abschlussport überwacht, eine JOB_OBJECT_MSG_NOTIFICATION_LIMIT Meldung empfängt, muss sie QueryInformationJobObject mit der Informationsklasse JobObjectLimitViolationInformation aufrufen. Informationen zur Einschränkungsverletzung werden in einer JOBOBJECT_LIMIT_VIOLATION_STRUCTURE empfangen, die Informationen zu allen Benachrichtigungsgrenzwerten enthält, die zum Zeitpunkt der Abfrage überschritten wurden. Das System sendet erst nach dem Aufruf von QueryInformationJobObject eine weitere JOB_OBJECT_MSG_NOTIFICATION_LIMIT Nachricht.

Cpu-Ratensteuerungsgrenzwerte für einen Auftrag werden in einer JOBOBJECT_CPU_RATE_CONTROL_INFORMATION-Struktur festgelegt. Die CPU-Ratensteuerungswerte in der JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION-Struktur geben an, wie weit der Auftrag die festgelegten Grenzwerte für die CPU-Ratensteuerung überschreiten kann, bevor die Benachrichtigung gesendet wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Kopfzeile winnt.h

Weitere Informationen

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject