Compartilhar via


estrutura JOBOBJECT_CPU_RATE_CONTROL_INFORMATION (winnt.h)

Contém informações de controle de taxa de CPU para um objeto de trabalho. Essa estrutura é usada pelas funções SetInformationJobObject e QueryInformationJobObject com a classe de informação JobObjectCpuRateControlInformation .

Sintaxe

typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
  DWORD ControlFlags;
  union {
    DWORD CpuRate;
    DWORD Weight;
    struct {
      WORD MinRate;
      WORD MaxRate;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
} JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;

Membros

ControlFlags

A política de agendamento para controle de taxa de CPU. Esse membro pode ser um dos valores a seguir.

Valor Significado
JOB_OBJECT_CPU_RATE_CONTROL_ENABLE
0x1
Esse sinalizador permite que a taxa de CPU do trabalho seja controlada com base no peso ou no limite rígido. Você deverá definir esse valor se também definir JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED, JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP ou JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.
JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
0x2
A taxa de CPU do trabalho é calculada com base em seu peso relativo ao peso de outros trabalhos. Se esse sinalizador estiver definido, o membro Weight conterá mais informações. Se esse sinalizador estiver claro, o membro CpuRate conterá mais informações.

Se você definir JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED, também não poderá definir JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.

JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
0x4
A taxa de CPU do trabalho é um limite rígido. Depois que o trabalho atingir seu limite de ciclo de CPU para o intervalo de agendamento atual, nenhum thread associado ao trabalho será executado até o próximo intervalo.

Se você definir JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP, também não poderá definir JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.

JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY
0x8
Envia mensagens quando a taxa de CPU para o trabalho excede os limites de taxa do trabalho durante o intervalo de tolerância.
JOB_OBJECT_ CPU_RATE_CONTROL_MIN_MAX_RATE
0x10
A taxa de CPU para o trabalho é limitada por taxas mínimas e máximas especificadas nos membros MinRate e MaxRate .

Se você definir JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, não poderá definir nem JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED nem JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP.

DUMMYUNIONNAME

DUMMYUNIONNAME.CpuRate

Especifica a parte dos ciclos de processador que os threads em um objeto de trabalho podem usar durante cada intervalo de agendamento, como o número de ciclos por 10.000 ciclos. Se o membro ControlFlagsespecificar JOB_OBJECT_CPU_RATE_WEIGHT_BASED ou JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, esse membro não será usado.

Defina CpuRate como um percentual vezes 100. Por exemplo, para permitir que o trabalho use 20% da CPU, defina CpuRate como 20 vezes 100 ou 2.000.

Não defina CpuRate como 0. Se CpuRate for 0, SetInformationJobObject retornará INVALID_ARGS.

DUMMYUNIONNAME.Weight

Se o membro ControlFlagsespecificar JOB_OBJECT_CPU_RATE_WEIGHT_BASED, esse membro especificará o peso de agendamento do objeto de trabalho, que determina o compartilhamento de tempo do processador fornecido ao trabalho em relação a outras cargas de trabalho no processador.

Esse membro pode ser um valor de 1 a 9, em que 1 é o menor compartilhamento e 9 é o maior compartilhamento. O padrão é 5, que deve ser usado para a maioria das cargas de trabalho.

Se o membro ControlFlagsespecificar JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, esse membro não será usado.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MinRate

Especifica a parte mínima dos ciclos do processador que os threads em um objeto de trabalho podem reservar durante cada intervalo de agendamento. Especifique essa taxa como uma porcentagem vezes 100. Por exemplo, para definir uma taxa mínima de 50%, especifique 50 vezes 100 ou 5.000.

Para que as taxas mínimas funcionem corretamente, a soma das taxas mínimas para todos os objetos de trabalho no sistema não pode exceder 10.000, o que equivale a 100%.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MaxRate

Especifica a parte máxima dos ciclos de processador que os threads em um objeto de trabalho podem usar durante cada intervalo de agendamento. Especifique essa taxa como uma porcentagem vezes 100. Por exemplo, para definir uma taxa máxima de 50%, especifique 50 vezes 100 ou 5.000.

Depois que o trabalho atingir esse limite para um intervalo de agendamento, nenhum thread associado ao trabalho poderá ser executado até o próximo intervalo de agendamento.

Comentários

Você pode definir o controle de taxa de CPU para vários trabalhos em uma hierarquia de trabalhos aninhados. Quando você define o controle de taxa de CPU para um objeto de trabalho, as configurações se aplicam ao trabalho e seus trabalhos filho na hierarquia. Quando você define o controle de taxa de CPU para um trabalho em uma hierarquia aninhada, o sistema calcula as cotas correspondentes em relação ao controle de taxa de CPU do trabalho pai imediato para o trabalho. Em outras palavras, as taxas definidas para o trabalho representam sua parte da taxa de CPU alocada para seu trabalho pai. Se um objeto de trabalho não tiver um pai com controle de taxa de CPU ativado na cadeia de trabalhos pai, o controle de taxa para o trabalho representará a parte da CPU para todo o sistema.

O controle de taxa de CPU não pode ser usado por objetos de trabalho em aplicativos em execução em Serviços de Área de Trabalho Remota (anteriormente Serviços de Terminal) se o DFSS (Dynamic Fair Share Scheduling) estiver em vigor.

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_NOTIFICATION_LIMIT_INFORMATION

QueryInformationJobObject

SetInformationJobObject