Поделиться через


структура JOBOBJECT_CPU_RATE_CONTROL_INFORMATION (winnt.h)

Содержит сведения об управлении скоростью ЦП для объекта задания. Эта структура используется функциями SetInformationJobObject и QueryInformationJobObject с информационным классом JobObjectCpuRateControlInformation .

Синтаксис

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;

Члены

ControlFlags

Политика планирования для управления скоростью ЦП. Этот элемент может иметь одно из следующих значений.

Значение Значение
JOB_OBJECT_CPU_RATE_CONTROL_ENABLE
0x1
Этот флаг позволяет управлять скоростью ЦП задания на основе веса или жесткого ограничения. Это значение необходимо задать, если вы также задали JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED, JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP или JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.
JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
0x2
Скорость ЦП задания рассчитывается на основе его относительного веса и веса других заданий. Если этот флаг установлен, элемент Weight содержит дополнительные сведения. Если этот флаг не задан, элемент CpuRate содержит дополнительные сведения.

Если вы задали JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED, вы также не сможете задать JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.

JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
0x4
Скорость ЦП задания является жестким ограничением. После достижения задания предела цикла ЦП для текущего интервала планирования потоки, связанные с заданием, не будут выполняться до следующего интервала.

Если вы задали JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP, вы также не сможете задать JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE.

JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY
0x8
Отправляет сообщения, когда скорость ЦП для задания превышает ограничения скорости задания в течение допустимого интервала.
JOB_OBJECT_ CPU_RATE_CONTROL_MIN_MAX_RATE
0x10
Скорость ЦП для задания ограничена минимальной и максимальной скоростью, указанной в элементах MinRate и MaxRate .

Если задать JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, вы не сможете задать ни JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED , ни JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP.

DUMMYUNIONNAME

DUMMYUNIONNAME.CpuRate

Указывает часть циклов процессора, которую потоки в объекте задания могут использовать в течение каждого интервала планирования, в виде количества циклов на 10 000 циклов. Если элемент ControlFlags указывает JOB_OBJECT_CPU_RATE_WEIGHT_BASED или JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, этот элемент не используется.

Задайте значение CpuRate в процентах 100 раз. Например, чтобы позволить заданию использовать 20 % ресурсов ЦП, задайте для параметра CpuRate значение 20 раз 100 или 2000.

Не устанавливайте для cpuRate значение 0. Если cpuRate равно 0, SetInformationJobObject возвращает INVALID_ARGS.

DUMMYUNIONNAME.Weight

Если элемент ControlFlags указывает JOB_OBJECT_CPU_RATE_WEIGHT_BASED, этот элемент задает вес планирования объекта задания, который определяет долю процессорного времени, отдаваемого заданию, относительно других рабочих нагрузок на процессоре.

Этот элемент может быть значением от 1 до 9, где 1 — наименьшая доля, а 9 — самая большая доля. Значение по умолчанию — 5, которое следует использовать для большинства рабочих нагрузок.

Если элемент ControlFlags указывает JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE, этот элемент не используется.

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MinRate

Указывает минимальную часть циклов процессора, которую потоки в объекте задания могут зарезервировать в течение каждого интервала планирования. Укажите этот показатель в процентах 100 раз. Например, чтобы задать минимальную ставку в 50 %, укажите 50 раз 100 или 5000.

Для правильной работы минимальных ставок сумма минимальных ставок для всех объектов заданий в системе не может превышать 10 000, что эквивалентно 100 %.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MaxRate

Указывает максимальную часть циклов процессора, которую потоки в объекте задания могут использовать в течение каждого интервала планирования. Укажите этот показатель в процентах 100 раз. Например, чтобы задать максимальную ставку 50 %, укажите 50 раз 100 или 5000.

После достижения задания этого предела для интервала планирования никакие потоки, связанные с заданием, не могут выполняться до следующего интервала планирования.

Комментарии

Вы можете задать управление скоростью ЦП для нескольких заданий в иерархии вложенных заданий. При установке элемента управления скоростью ЦП для объекта задания параметры применяются к заданию и его дочерним заданиям в иерархии. При задании управления скоростью ЦП для задания во вложенной иерархии система вычисляет соответствующие квоты относительно контроля скорости ЦП непосредственного родительского задания для задания. Другими словами, скорость, заданная для задания, представляет его часть скорости ЦП, выделенной его родительскому заданию. Если у объекта задания нет родительского элемента с включенным управлением скоростью ЦП в цепочке его родительских заданий, то элемент управления скоростью для задания представляет часть ЦП для всей системы.

Управление скоростью ЦП не может использоваться объектами заданий в приложениях, работающих в службах удаленных рабочих столов (прежнее название — Службы терминалов), если действует динамическое планирование общей общей папки (DFSS).

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Верхняя часть winnt.h

См. также раздел

JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION

QueryInformationJobObject

SetInformationJobObject