Compartilhar via


estrutura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 (winnt.h)

Contém informações estendidas sobre limites de notificação para um objeto de trabalho. Essa estrutura é usada pelas funções SetInformationJobObject e QueryInformationJobObject com a classe de informações JobObjectNotificationLimitInformation2 .

Sintaxe

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;

Membros

IoReadBytesLimit

Se o membro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_READ_BYTES, esse membro será o limite de notificação para o total de bytes de E/S lidos por todos os processos no trabalho. Caso contrário, esse membro será ignorado.

IoWriteBytesLimit

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, esse membro será o limite de notificação para o total de bytes de E/S gravados por todos os processos no trabalho. Caso contrário, esse membro será ignorado.

PerJobUserTimeLimit

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_TIME, esse membro será o limite de notificação para o tempo de execução do modo de usuário por trabalho, em tiques de 100 nanossegundos. Caso contrário, esse membro será ignorado.

O sistema adiciona o tempo de execução acumulado de processos associados ao trabalho a esse limite quando o limite é definido. Por exemplo, se um processo associado ao trabalho já tiver acumulado 5 minutos de tempo de execução no modo de usuário e o limite for definido como 1 minuto, o limite realmente imposto será de 6 minutos.

Para especificar PerJobUserTimeLimit como um limite impositivo e encerrar processos em trabalhos que excedem o limite, consulte a estrutura JOBOBJECT_BASIC_LIMIT_INFORMATION .

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH, esse membro será o limite máximo de notificação para a memória virtual total que pode ser confirmada por todos os processos no trabalho, em bytes. Caso contrário, esse membro será ignorado.

DUMMYUNIONNAME.JobMemoryLimit

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_MEMORY, esse membro será o limite máximo de notificação para a memória virtual total que pode ser confirmada por todos os processos no trabalho, em bytes. Caso contrário, esse membro será ignorado.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.RateControlTolerance

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_RATE_CONTROL, esse membro especificará até que ponto um trabalho pode exceder seus limites de controle de taxa de CPU durante o intervalo especificado pelo membro RateControlToleranceInterval . Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceHigh será usado.

Valor Significado
ToleranceLow
1
O trabalho pode exceder seus limites de controle de taxa de CPU para 20% do intervalo de tolerância.
ToleranceMedium
2
O trabalho pode exceder seus limites de controle de taxa de CPU para 40% do intervalo de tolerância.
ToleranceHigh
3
O trabalho pode exceder seus limites de controle de taxa de CPU para 60% do intervalo de tolerância.

DUMMYUNIONNAME2.CpuRateControlTolerance

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_CPU_RATE_CONTROL, esse membro especificará até que ponto um trabalho pode exceder seus limites de controle de taxa de CPU durante o intervalo especificado pelo membro CpuRateControlToleranceInterval . Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceHigh será usado.

Valor Significado
ToleranceLow
1
O trabalho pode exceder seus limites de controle de taxa de CPU para 20% do intervalo de tolerância.
ToleranceMedium
2
O trabalho pode exceder seus limites de controle de taxa de CPU para 40% do intervalo de tolerância.
ToleranceHigh
3
O trabalho pode exceder seus limites de controle de taxa de CPU para 60% do intervalo de tolerância.

DUMMYUNIONNAME3

DUMMYUNIONNAME3.RateControlToleranceInterval

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_RATE_CONTROL, esse membro especificará o intervalo durante o qual o uso da CPU de um trabalho é monitorado para determinar se o trabalho excedeu seus limites de controle de taxa de CPU. Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceIntervalShort será usado.

Valor Significado
ToleranceIntervalShort
1
O intervalo de tolerância é de 10 segundos.
ToleranceIntervalMedium
2
O intervalo de tolerância é de um minuto.
ToleranceIntervalLong
3
O intervalo de tolerância é de 10 minutos.

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_CPU_LIMIT_RATE_CONTROL, esse membro especificará o intervalo durante o qual o uso da CPU de um trabalho é monitorado para determinar se o trabalho excedeu seus limites de controle de taxa de CPU. Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceIntervalShort será usado.

Valor Significado
ToleranceIntervalShort
1
O intervalo de tolerância é de 10 segundos.
ToleranceIntervalMedium
2
O intervalo de tolerância é de um minuto.
ToleranceIntervalLong
3
O intervalo de tolerância é de 10 minutos.

LimitFlags

Os sinalizadores de limite que estão em vigor. Esse membro é um campo de bits que determina se outros membros da estrutura são usados. Qualquer combinação dos valores a seguir pode ser especificada.

Valor Significado
JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH
0x00000200
Estabelece o limite de notificação para a soma em todo o trabalho de memória confirmada privada para todos os processos associados ao trabalho. O membro JobHighMemoryLimit contém informações adicionais.
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
Estabelece o mínimo de notificação para a soma em todo o trabalho de memória confirmada privada para todos os processos associados ao trabalho. Se esse valor for definido, uma notificação será enviada quando a quantidade de memória confirmada privada ficar abaixo desse limite. O membro JobLowMemoryLimit contém informações adicionais.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Estabelece o limite de bytes de leitura de E/S para a soma de bytes de E/S em todo o trabalho lida por todos os processos associados ao trabalho. O membro IoReadBytesLimit contém mais informações.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Estabelece o limite de bytes de gravação de E/S para a soma em todo o trabalho de bytes de E/S escritos por todos os processos associados ao trabalho. O membro IoWriteBytesLimit contém mais informações.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Estabelece o limite para o tempo de execução do modo de usuário para o trabalho. O membro PerJobUserTimeLimit contém informações adicionais.
JOB_OBJECT_LIMIT_CPU_RATE_CONTROL
0x00040000
Estabelece o limite de notificação para os limites de controle de taxa de CPU estabelecidos para o trabalho. Os membros CpuRateControlTolerance e CpuRateControlToleranceInterval contêm informações adicionais.

Os limites de controle de taxa de CPU são estabelecidos chamando SetInformationJobObject com a classe de informações JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Estabelece o limite de notificação para os limites de controle de taxa de CPU estabelecidos para o trabalho. Os membros RateControlTolerance e RateControlToleranceInterval contêm informações adicionais.

Os limites de controle de taxa de CPU são estabelecidos chamando SetInformationJobObject com a classe de informações JobObjectCpuRateInformationClass .

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
Estabelece o limite de notificação para os limites de controle de taxa de E/S estabelecidos para o trabalho. Os membros IoRateControlTolerance e IoRateControlToleranceInterval contêm informações adicionais.

Os limites de controle de taxa de E/S são estabelecidos chamando SetIoRateControlInformationJobObject.

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
Estabelece o limite de notificação para os limites de controle de taxa de rede estabelecidos para o trabalho. Os membros NetRateControlTolerance e NetRateControlToleranceInterval contêm informações adicionais.

Os limites de controle de taxa de rede são estabelecidos chamando SetInformationJobObject com a classe de informações JobObjectNetRateInformationClass .

IoRateControlTolerance

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_IO_RATE_CONTROL, esse membro especificará até que ponto um trabalho pode exceder seus limites de controle de taxa de E/S durante o intervalo especificado pelo membro IoRateControlToleranceInterval . Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceHigh será usado.

Valor Significado
ToleranceLow
1
O trabalho pode exceder seus limites de controle de taxa de E/S para 20% do intervalo de tolerância.
ToleranceMedium
2
O trabalho pode exceder seus limites de controle de taxa de E/S para 40% do intervalo de tolerância.
ToleranceHigh
3
O trabalho pode exceder seus limites de controle de taxa de E/S para 60% do intervalo de tolerância.

JobLowMemoryLimit

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_JOB_MEMORY_LOW, esse membro será o mínimo limite de notificação para a memória virtual total que pode ser confirmada por todos os processos no trabalho, em bytes. Caso contrário, esse membro será ignorado.

IoRateControlToleranceInterval

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_IO_LIMIT_RATE_CONTROL, esse membro especificará o intervalo durante o qual o uso de E/S de um trabalho é monitorado para determinar se o trabalho excedeu seus limites de controle de taxa de E/S. Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceIntervalShort será usado.

Valor Significado
ToleranceIntervalShort
1
O intervalo de tolerância é de 10 segundos.
ToleranceIntervalMedium
2
O intervalo de tolerância é de um minuto.
ToleranceIntervalLong
3
O intervalo de tolerância é de 10 minutos.

NetRateControlTolerance

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_LIMIT_IO_RATE_CONTROL, esse membro especificará até que ponto um trabalho pode exceder seus limites de controle de taxa de rede durante o intervalo especificado pelo membro NetRateControlToleranceInterval . Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceHigh será usado.

Valor Significado
ToleranceLow
1
O trabalho pode exceder seus limites de controle de taxa de rede para 20% do intervalo de tolerância.
ToleranceMedium
2
O trabalho pode exceder seus limites de controle de taxa de rede para 40% do intervalo de tolerância.
ToleranceHigh
3
O trabalho pode exceder seus limites de controle de taxa de rede para 60% do intervalo de tolerância.

NetRateControlToleranceInterval

Se o parâmetro LimitFlagsespecificar JOB_OBJECT_NET_LIMIT_RATE_CONTROL, esse membro especificará o intervalo durante o qual o uso de rede de um trabalho é monitorado para determinar se o trabalho excedeu seus limites de controle de taxa de rede. Caso contrário, esse membro será ignorado.

Esse membro pode ser um dos valores a seguir. Se nenhum valor for especificado, ToleranceIntervalShort será usado.

Valor Significado
ToleranceIntervalShort
1
O intervalo de tolerância é de 10 segundos.
ToleranceIntervalMedium
2
O intervalo de tolerância é de um minuto.
ToleranceIntervalLong
3
O intervalo de tolerância é de 10 minutos.

Comentários

Quando um limite de notificação é excedido, o sistema envia uma mensagem JOB_OBJECT_MSG_NOTIFICATION_LIMIT para a porta de conclusão de E/S associada ao trabalho. Os processos no trabalho continuam a ser executados e podem continuar a alocar memória ou transmitir bytes de leitura ou gravação além dos limites especificados.

Quando o aplicativo que monitora a porta de conclusão de E/S recebe uma mensagem JOB_OBJECT_MSG_NOTIFICATION_LIMIT , ele deve chamar QueryInformationJobObject com a classe de informação JobObjectLimitViolationInformation2 . Informações de violação de limite são recebidas em uma estrutura de JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 que contém informações sobre todos os limites de notificação que foram excedidos no momento da consulta. O sistema não enviará outra mensagem JOB_OBJECT_MSG_NOTIFICATION_LIMIT até que QueryInformationJobObject seja chamado.

Os limites de controle de taxa de CPU para um trabalho são estabelecidos em uma estrutura JOBOBJECT_CPU_RATE_CONTROL_INFORMATION . Os valores de controle de taxa de CPU na estrutura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 especificam quanto o trabalho pode exceder seus limites de controle de taxa de CPU estabelecidos antes que a notificação seja enviada.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Cabeçalho winnt.h

Confira também

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject