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