Condividi tramite


struttura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 (winnt.h)

Contiene informazioni estese sui limiti di notifica per un oggetto processo. Questa struttura viene utilizzata dalle funzioni SetInformationJobObject e QueryInformationJobObject con la classe informativa JobObjectNotificationLimitInformation2 .

Sintassi

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;

Members

IoReadBytesLimit

Se il membro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_READ_BYTES, questo membro rappresenta il limite di notifica per i byte di I/O totali letti da tutti i processi nel processo. In caso contrario, questo membro viene ignorato.

IoWriteBytesLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, questo membro rappresenta il limite di notifica per i byte di I/O totali scritti da tutti i processi nel processo. In caso contrario, questo membro viene ignorato.

PerJobUserTimeLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_TIME, questo membro rappresenta il limite di notifica per il tempo di esecuzione in modalità utente per processo, in tick da 100 nanosecondi. In caso contrario, questo membro viene ignorato.

Il sistema aggiunge il tempo di esecuzione accumulato dei processi associati al processo a questo limite quando viene impostato il limite. Ad esempio, se un processo associato al processo ha già accumulato 5 minuti di tempo di esecuzione in modalità utente e il limite è impostato su 1 minuto, il limite effettivamente applicato è 6 minuti.

Per specificare PerJobUserTimeLimit come limite applicato e terminare i processi nei processi che superano il limite, vedere la struttura JOBOBJECT_BASIC_LIMIT_INFORMATION .

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH, questo membro rappresenta il limite massimo di notifica per la memoria virtuale totale di cui è possibile eseguire il commit da tutti i processi del processo, in byte. In caso contrario, questo membro viene ignorato.

DUMMYUNIONNAME.JobMemoryLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_MEMORY, questo membro rappresenta il limite massimo di notifica per la memoria virtuale totale di cui è possibile eseguire il commit da tutti i processi del processo, in byte. In caso contrario, questo membro viene ignorato.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.RateControlTolerance

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_RATE_CONTROL, questo membro specifica la misura in cui un processo può superare i limiti di controllo della frequenza della CPU durante l'intervallo specificato dal membro RateControlToleranceInterval . In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceHigh .

Valore Significato
ToleranceLow
1
Il processo può superare i limiti di controllo della velocità della CPU per il 20% dell'intervallo di tolleranza.
ToleranceMedium
2
Il processo può superare i limiti di controllo della velocità della CPU per il 40% dell'intervallo di tolleranza.
ToleranceHigh
3
Il processo può superare i limiti di controllo della velocità della CPU per il 60% dell'intervallo di tolleranza.

DUMMYUNIONNAME2.CpuRateControlTolerance

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_CPU_RATE_CONTROL, questo membro specifica la misura in cui un processo può superare i limiti di controllo della frequenza della CPU durante l'intervallo specificato dal membro CpuRateControlToleranceInterval . In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceHigh .

Valore Significato
ToleranceLow
1
Il processo può superare i limiti di controllo della velocità della CPU per il 20% dell'intervallo di tolleranza.
ToleranceMedium
2
Il processo può superare i limiti di controllo della velocità della CPU per il 40% dell'intervallo di tolleranza.
ToleranceHigh
3
Il processo può superare i limiti di controllo della velocità della CPU per il 60% dell'intervallo di tolleranza.

DUMMYUNIONNAME3

DUMMYUNIONNAME3.RateControlToleranceInterval

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_RATE_CONTROL, questo membro specifica l'intervallo durante il quale viene monitorato l'utilizzo della CPU di un processo per determinare se il processo ha superato i limiti di controllo della frequenza della CPU. In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceIntervalShort .

Valore Significato
ToleranceIntervalShort
1
L'intervallo di tolleranza è 10 secondi.
ToleranceIntervalMedium
2
L'intervallo di tolleranza è di un minuto.
ToleranceIntervalLong
3
L'intervallo di tolleranza è di 10 minuti.

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

Se il parametro LimitFlags specifica JOB_OBJECT_CPU_LIMIT_RATE_CONTROL, questo membro specifica l'intervallo durante il quale viene monitorato l'utilizzo della CPU di un processo per determinare se il processo ha superato i limiti di controllo della frequenza della CPU. In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceIntervalShort .

Valore Significato
ToleranceIntervalShort
1
L'intervallo di tolleranza è 10 secondi.
ToleranceIntervalMedium
2
L'intervallo di tolleranza è di un minuto.
ToleranceIntervalLong
3
L'intervallo di tolleranza è di 10 minuti.

LimitFlags

Flag di limite applicati. Questo membro è un campo di bit che determina se vengono utilizzati altri membri della struttura. È possibile specificare qualsiasi combinazione dei valori seguenti.

Valore Significato
JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH
0x00000200
Stabilisce la soglia di notifica per la somma a livello di processo della memoria di cui è stato eseguito il commit privato per tutti i processi associati al processo. Il membro JobHighMemoryLimit contiene informazioni aggiuntive.
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
Stabilisce il valore minimo di notifica per la somma a livello di processo della memoria di cui è stato eseguito il commit privato per tutti i processi associati al processo. Se questo valore è impostato, viene inviata una notifica quando la quantità di memoria di cui è stato eseguito il commit privato scende al di sotto di questa soglia. Il membro JobLowMemoryLimit contiene informazioni aggiuntive.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Stabilisce il limite di byte di lettura di I/O alla somma dei byte di I/O a livello di processo letti da tutti i processi associati al processo. Il membro IoReadBytesLimit contiene altre informazioni.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Stabilisce il limite di byte di scrittura di I/O alla somma dei byte di I/O a livello di processo scritti da tutti i processi associati al processo. Il membro IoWriteBytesLimit contiene altre informazioni.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Stabilisce il limite per il tempo di esecuzione in modalità utente per il processo. Il membro PerJobUserTimeLimit contiene informazioni aggiuntive.
JOB_OBJECT_LIMIT_CPU_RATE_CONTROL
0x00040000
Stabilisce la soglia di notifica per i limiti di controllo della frequenza della CPU stabiliti per il processo. I membri CpuRateControlTolerance e CpuRateControlToleranceInterval contengono informazioni aggiuntive.

I limiti di controllo della frequenza della CPU vengono stabiliti chiamando SetInformationJobObject con la classe di informazioni JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Stabilisce la soglia di notifica per i limiti di controllo della frequenza della CPU stabiliti per il processo. I membri RateControlTolerance e RateControlToleranceInterval contengono informazioni aggiuntive.

I limiti di controllo della frequenza della CPU vengono stabiliti chiamando SetInformationJobObject con la classe di informazioni JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
Stabilisce la soglia di notifica per i limiti di controllo della velocità di I/O stabiliti per il processo. I membri IoRateControlTolerance e IoRateControlToleranceInterval contengono informazioni aggiuntive.

I limiti di controllo della velocità di I/O vengono stabiliti chiamando SetIoRateControlInformationJobObject.

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
Stabilisce la soglia di notifica per i limiti di controllo della frequenza di rete stabiliti per il processo. I membri NetRateControlTolerance e NetRateControlToleranceInterval contengono informazioni aggiuntive.

I limiti di controllo della frequenza di rete vengono stabiliti chiamando SetInformationJobObject con la classe di informazioni JobObjectNetRateInformationClass .

IoRateControlTolerance

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_IO_RATE_CONTROL, questo membro specifica la misura in cui un processo può superare i limiti di controllo della velocità di I/O durante l'intervallo specificato dal membro IoRateControlToleranceInterval . In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceHigh .

Valore Significato
ToleranceLow
1
Il processo può superare i limiti di controllo della velocità di I/O per il 20% dell'intervallo di tolleranza.
ToleranceMedium
2
Il processo può superare i limiti di controllo della velocità di I/O per il 40% dell'intervallo di tolleranza.
ToleranceHigh
3
Il processo può superare i limiti di controllo della velocità di I/O per il 60% dell'intervallo di tolleranza.

JobLowMemoryLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_MEMORY_LOW, questo membro è il limite di notifica minimo per la memoria virtuale totale di cui è possibile eseguire il commit da tutti i processi nel processo, in byte. In caso contrario, questo membro viene ignorato.

IoRateControlToleranceInterval

Se il parametro LimitFlags specifica JOB_OBJECT_IO_LIMIT_RATE_CONTROL, questo membro specifica l'intervallo durante il quale viene monitorato l'utilizzo di I/O di un processo per determinare se il processo ha superato i limiti di controllo della velocità di I/O. In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceIntervalShort .

Valore Significato
ToleranceIntervalShort
1
L'intervallo di tolleranza è 10 secondi.
ToleranceIntervalMedium
2
L'intervallo di tolleranza è di un minuto.
ToleranceIntervalLong
3
L'intervallo di tolleranza è di 10 minuti.

NetRateControlTolerance

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_IO_RATE_CONTROL, questo membro specifica la misura in cui un processo può superare i limiti di controllo della frequenza di rete durante l'intervallo specificato dal membro NetRateControlToleranceInterval . In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceHigh .

Valore Significato
ToleranceLow
1
Il processo può superare i limiti di controllo della frequenza di rete per il 20% dell'intervallo di tolleranza.
ToleranceMedium
2
Il processo può superare i limiti di controllo della frequenza di rete per il 40% dell'intervallo di tolleranza.
ToleranceHigh
3
Il processo può superare i limiti di controllo della frequenza di rete per il 60% dell'intervallo di tolleranza.

NetRateControlToleranceInterval

Se il parametro LimitFlags specifica JOB_OBJECT_NET_LIMIT_RATE_CONTROL, questo membro specifica l'intervallo durante il quale viene monitorato l'utilizzo della rete di un processo per determinare se il processo ha superato i limiti di controllo della frequenza di rete. In caso contrario, questo membro viene ignorato.

Questo membro può essere uno dei valori seguenti. Se non viene specificato alcun valore, viene utilizzato ToleranceIntervalShort .

Valore Significato
ToleranceIntervalShort
1
L'intervallo di tolleranza è 10 secondi.
ToleranceIntervalMedium
2
L'intervallo di tolleranza è di un minuto.
ToleranceIntervalLong
3
L'intervallo di tolleranza è di 10 minuti.

Commenti

Quando viene superato un limite di notifica, il sistema invia un messaggio JOB_OBJECT_MSG_NOTIFICATION_LIMIT alla porta di completamento di I/O associata al processo. I processi nel processo continuano a essere eseguiti e possono continuare ad allocare memoria o trasmettere byte di lettura o scrittura oltre i limiti specificati.

Quando l'applicazione che monitora la porta di completamento I/O riceve un messaggio di JOB_OBJECT_MSG_NOTIFICATION_LIMIT , deve chiamare QueryInformationJobObject con la classe di informazioni JobObjectLimitViolationInformation2 . Le informazioni sulla violazione del limite vengono ricevute in una struttura di JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 che contiene informazioni su tutti i limiti di notifica superati al momento della query. Il sistema non invierà un altro messaggio JOB_OBJECT_MSG_NOTIFICATION_LIMIT finché non viene chiamato QueryInformationJobObject .

I limiti di controllo della frequenza della CPU per un processo vengono stabiliti in una struttura JOBOBJECT_CPU_RATE_CONTROL_INFORMATION . I valori del controllo della frequenza della CPU nella struttura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 specificano la quantità che il processo può superare i limiti di controllo della frequenza della CPU stabiliti prima dell'invio della notifica.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Intestazione winnt.h

Vedi anche

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject