Compartir a través de


estructura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION (winnt.h)

Contiene información sobre los límites de notificación de un objeto de trabajo. Esta estructura la usan las funciones SetInformationJobObject y QueryInformationJobObject con la clase de información JobObjectNotificationLimitInformation .

Sintaxis

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;

Miembros

IoReadBytesLimit

Si el miembro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_READ_BYTES, este miembro es el límite de notificación para el total de bytes de E/S leídos por todos los procesos del trabajo. De lo contrario, se omite este miembro.

IoWriteBytesLimit

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, este miembro es el límite de notificación para el total de bytes de E/S escritos por todos los procesos del trabajo. De lo contrario, se omite este miembro.

PerJobUserTimeLimit

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_TIME, este miembro es el límite de notificación para el tiempo de ejecución del modo usuario por trabajo, en tics de 100 nanosegundos. De lo contrario, se omite este miembro.

El sistema agrega el tiempo de ejecución acumulado de los procesos asociados al trabajo a este límite cuando se establece el límite. Por ejemplo, si un proceso asociado al trabajo ya ha acumulado 5 minutos de tiempo de ejecución del modo de usuario y el límite se establece en 1 minuto, el límite realmente aplicado es de 6 minutos.

Para especificar PerJobUserTimeLimit como límite aplicable y finalizar los procesos en trabajos que superan el límite, consulte la estructura de JOBOBJECT_BASIC_LIMIT_INFORMATION .

JobMemoryLimit

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_MEMORY, este miembro es el límite de notificación para la memoria virtual total que todos los procesos del trabajo pueden confirmar en bytes. De lo contrario, se omite este miembro.

Para especificar JobMemoryLimit como límite obligatorio y evitar que los procesos de los trabajos que superen el límite sigan confirmando la memoria, consulte la estructura de JOBOBJECT_EXTENDED_LIMIT_INFORMATION .

RateControlTolerance

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_RATE_CONTROL, este miembro especifica la medida en que un trabajo puede superar sus límites de control de velocidad de CPU durante el intervalo especificado por el miembro RateControlToleranceInterval . De lo contrario, se omite este miembro.

Este miembro puede ser uno de los siguientes valores. Si no se especifica ningún valor, se usa ToleranceHigh .

Valor Significado
ToleranciaLow
1
El trabajo puede superar sus límites de control de velocidad de CPU para el 20 % del intervalo de tolerancia.
ToleranceMedium
2
El trabajo puede superar sus límites de control de velocidad de CPU para el 40 % del intervalo de tolerancia.
ToleranciaHigh
3
El trabajo puede superar sus límites de control de velocidad de CPU para el 60 % del intervalo de tolerancia.

RateControlToleranceInterval

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_RATE_CONTROL, este miembro especifica el intervalo durante el que se supervisa el uso de CPU de un trabajo para determinar si el trabajo ha superado sus límites de control de velocidad de CPU. De lo contrario, se omite este miembro.

Este miembro puede ser uno de los siguientes valores. Si no se especifica ningún valor, se usa ToleranceIntervalShort .

Valor Significado
ToleranceIntervalShort
1
El intervalo de tolerancia es de 10 segundos.
ToleranceIntervalMedium
2
El intervalo de tolerancia es de un minuto.
ToleranceIntervalLong
3
El intervalo de tolerancia es de 10 minutos.

LimitFlags

Marcas de límite que están en vigor. Este miembro es un campo de bits que determina si se usan otros miembros de estructura. Se puede especificar cualquier combinación de los valores siguientes.

Valor Significado
JOB_OBJECT_LIMIT_JOB_MEMORY
0x00000200
Establece el límite de memoria confirmada en la suma de memoria confirmada del trabajo para todos los procesos asociados al trabajo. El miembro JobMemoryLimit contiene información adicional.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Establece el límite de bytes de lectura de E/S a la suma de bytes de E/S leídos por todos los procesos asociados al trabajo. El miembro IoReadBytesLimit contiene más información.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Establece el límite de bytes de escritura de E/S en la suma de bytes de E/S escritos por todos los procesos asociados al trabajo. El miembro IoWriteBytesLimit contiene más información.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Establece el límite para el tiempo de ejecución del modo de usuario para el trabajo. El miembro PerJobUserTimeLimit contiene información adicional.
JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Establece el umbral de notificación para los límites de control de velocidad de CPU establecidos para el trabajo. Los miembros RateControlTolerance y RateControlToleranceInterval contienen información adicional.

Los límites de control de velocidad de CPU se establecen llamando a SetInformationJobObject con la clase de información JobObjectCpuRateInformationClass .

Comentarios

Cuando se supera un límite de notificación, el sistema envía un mensaje de JOB_OBJECT_MSG_NOTIFICATION_LIMIT al puerto de finalización de E/S asociado al trabajo. Los procesos del trabajo continúan ejecutándose y pueden seguir asignando memoria o transmitir bytes de lectura o escritura más allá de los límites especificados.

Cuando la aplicación que supervisa el puerto de finalización de E/S recibe un mensaje de JOB_OBJECT_MSG_NOTIFICATION_LIMIT, debe llamar a QueryInformationJobObject con la clase de información JobObjectLimitViolationInformation . La información de infracción de límite se recibe en una JOBOBJECT_LIMIT_VIOLATION_STRUCTURE que contiene información sobre todos los límites de notificación que se superaron en el momento de la consulta. El sistema no enviará otro mensaje de JOB_OBJECT_MSG_NOTIFICATION_LIMIT hasta que se llame a QueryInformationJobObject .

Los límites de control de velocidad de CPU para un trabajo se establecen en una estructura de JOBOBJECT_CPU_RATE_CONTROL_INFORMATION . Los valores de control de velocidad de CPU de la estructura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION especifican cuánto puede superar el trabajo sus límites de control de velocidad de CPU establecidos antes de enviar la notificación.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Encabezado winnt.h

Consulte también

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject