Share via


estrutura JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION (winnt.h)

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

Sintaxe

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;

Membros

IoReadBytesLimit

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

IoWriteBytesLimit

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

PerJobUserTimeLimit

Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_TIME, esse membro será o limite de notificação para o tempo de execução por 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 dos 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 efetivamente 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 .

JobMemoryLimit

Se o parâmetro LimitFlags especificar JOB_OBJECT_LIMIT_JOB_MEMORY, esse membro será o 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.

Para especificar JobMemoryLimit como um limite impositivo e impedir que processos em trabalhos que excedam o limite continuem a confirmar memória, consulte a estrutura JOBOBJECT_EXTENDED_LIMIT_INFORMATION .

RateControlTolerance

Se o parâmetro LimitFlags especificar 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.

RateControlToleranceInterval

Se o parâmetro LimitFlags especificar 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.

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
0x00000200
Estabelece o limite de memória confirmada para a soma de memória confirmada em todo o trabalho para todos os processos associados ao trabalho. O membro JobMemoryLimit 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_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 .

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 JobObjectLimitViolationInformation . Informações de violação de limite são recebidas em um JOBOBJECT_LIMIT_VIOLATION_STRUCTURE que contém informações sobre todos os limites de notificação que foram excedidos no momento da consulta. O sistema não enviará outro JOB_OBJECT_MSG_NOTIFICATION_LIMIT mensagem 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 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 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Cabeçalho winnt.h

Confira também

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject