estructura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 (winnt.h)

Contiene información extendida 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 JobObjectNotificationLimitInformation2 .

Sintaxis

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;

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 en 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 .

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH, este miembro es el límite máximo 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.

DUMMYUNIONNAME.JobMemoryLimit

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_JOB_MEMORY, este miembro es el límite máximo 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.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.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.

DUMMYUNIONNAME2.CpuRateControlTolerance

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_CPU_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 CpuRateControlToleranceInterval . 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.

DUMMYUNIONNAME3

DUMMYUNIONNAME3.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.

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

Si el parámetro LimitFlags especifica JOB_OBJECT_CPU_LIMIT_RATE_CONTROL, este miembro especifica el intervalo durante el cual 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_HIGH
0x00000200
Establece el umbral de notificación para la suma en todo el trabajo de la memoria confirmada privada para todos los procesos asociados al trabajo. El miembro JobHighMemoryLimit contiene información adicional.
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
Establece el mínimo de notificación para la suma en todo el trabajo de la memoria confirmada privada para todos los procesos asociados al trabajo. Si se establece este valor, se envía una notificación cuando la cantidad de memoria confirmada privada cae por debajo de este umbral. El miembro JobLowMemoryLimit 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_CPU_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 CpuRateControlTolerance y CpuRateControlToleranceInterval 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 .

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 .

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
Establece el umbral de notificación para los límites de control de velocidad de E/S establecidos para el trabajo. Los miembros IoRateControlTolerance e IoRateControlToleranceInterval contienen información adicional.

Los límites de control de velocidad de E/S se establecen llamando a SetIoRateControlInformationJobObject.

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
Establece el umbral de notificación para los límites de control de velocidad de red establecidos para el trabajo. Los miembros NetRateControlTolerance y NetRateControlToleranceInterval contienen información adicional.

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

IoRateControlTolerance

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_IO_RATE_CONTROL, este miembro especifica la medida en que un trabajo puede superar sus límites de control de velocidad de E/S durante el intervalo especificado por el miembro IoRateControlToleranceInterval . 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 E/S para el 20 % del intervalo de tolerancia.
ToleranceMedium
2
El trabajo puede superar sus límites de control de velocidad de E/S para el 40 % del intervalo de tolerancia.
ToleranciaHigh
3
El trabajo puede superar sus límites de control de velocidad de E/S para el 60 % del intervalo de tolerancia.

JobLowMemoryLimit

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

IoRateControlToleranceInterval

Si el parámetro LimitFlags especifica JOB_OBJECT_IO_LIMIT_RATE_CONTROL, este miembro especifica el intervalo durante el cual se supervisa el uso de E/S de un trabajo para determinar si el trabajo ha superado sus límites de control de velocidad de E/S. 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.

NetRateControlTolerance

Si el parámetro LimitFlags especifica JOB_OBJECT_LIMIT_IO_RATE_CONTROL, este miembro especifica la medida en que un trabajo puede superar sus límites de control de velocidad de red durante el intervalo especificado por el miembro NetRateControlToleranceInterval . 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 red para el 20 % del intervalo de tolerancia.
ToleranceMedium
2
El trabajo puede superar sus límites de control de velocidad de red para el 40 % del intervalo de tolerancia.
ToleranciaHigh
3
El trabajo puede superar sus límites de control de velocidad de red para el 60 % del intervalo de tolerancia.

NetRateControlToleranceInterval

Si el parámetro LimitFlags especifica JOB_OBJECT_NET_LIMIT_RATE_CONTROL, este miembro especifica el intervalo durante el cual se supervisa el uso de red de un trabajo para determinar si el trabajo ha superado sus límites de control de velocidad de red. 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.

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 JobObjectLimitViolationInformation2 . La información de infracción de límite se recibe en una estructura de JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 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_2 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 10 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2016 [solo aplicaciones de escritorio]
Encabezado winnt.h

Consulte también

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject