Condividi tramite


JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION struttura (winnt.h)

Contiene informazioni sui limiti di notifica per un oggetto processo. Questa struttura viene usata dalle funzioni SetInformationJobObject e QueryInformationJobObject con la classe di informazioni JobObjectNotificationLimitInformation .

Sintassi

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;

Members

IoReadBytesLimit

Se il membro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_READ_BYTES, questo membro è 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 è 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 è il limite di notifica per il tempo di esecuzione in modalità utente per processo, in 100-nanosecondi tick. 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 è di 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 .

JobMemoryLimit

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_JOB_MEMORY, questo membro è il limite di notifica per la memoria virtuale totale che può essere eseguito il commit da tutti i processi nel processo, in byte. In caso contrario, questo membro viene ignorato.

Per specificare JobMemoryLimit come limite applicato e impedire processi nei processi che superano il limite di continuare a eseguire il commit della memoria, vedere la struttura JOBOBJECT_EXTENDED_LIMIT_INFORMATION .

RateControlTolerance

Se il parametro LimitFlags specifica JOB_OBJECT_LIMIT_RATE_CONTROL, questo membro specifica l'entità 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 usato ToleranceHigh .

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

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 usato ToleranceIntervalShort .

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

LimitFlags

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

Valore Significato
JOB_OBJECT_LIMIT_JOB_MEMORY
0x00000200
Stabilisce il limite di memoria commit alla somma a livello di processo della memoria di commit per tutti i processi associati al processo. Il membro JobMemoryLimit contiene informazioni aggiuntive.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Stabilisce il limite di byte di lettura di I/O alla somma a livello di processo di byte di I/O 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 a livello di processo di byte di I/O 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_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 .

Commenti

Quando viene superato un limite di notifica, il sistema invia un messaggio di 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 a allocare memoria o trasmettere byte di lettura o scrittura oltre i limiti specificati.

Quando l'applicazione che monitora la porta di completamento di I/O riceve un messaggio di JOB_OBJECT_MSG_NOTIFICATION_LIMIT, deve chiamare QueryInformationJobObject con la classe di informazioni JobObjectLimitViolationInformation . Le informazioni di violazione limite vengono ricevute in un JOBOBJECT_LIMIT_VIOLATION_STRUCTURE che contiene informazioni su tutti i limiti di notifica superati al momento della query. Il sistema non invia 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 di controllo della frequenza della CPU nella struttura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION specificano il numero di limiti di controllo della frequenza della CPU stabiliti prima dell'invio della notifica.

Requisiti

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

Vedi anche

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject