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

Содержит сведения об ограничениях уведомлений для объекта задания. Эта структура используется функциями SetInformationJobObject и QueryInformationJobObject с информационным классом JobObjectNotificationLimitInformation .

Синтаксис

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;

Члены

IoReadBytesLimit

Если элемент LimitFlags указывает JOB_OBJECT_LIMIT_JOB_READ_BYTES, это ограничение уведомлений для общего числа байтов ввода-вывода, прочитанных всеми процессами в задании. В противном случае этот элемент игнорируется.

IoWriteBytesLimit

Если параметр LimitFlags указывает JOB_OBJECT_LIMIT_JOB_WRITE_BYTES, этот член является ограничением на общее количество байтов ввода-вывода, записанных всеми процессами в задании. В противном случае этот элемент игнорируется.

PerJobUserTimeLimit

Если параметр LimitFlags указывает JOB_OBJECT_LIMIT_JOB_TIME, этот член является ограничением на уведомления для времени выполнения в пользовательском режиме задания в 100 наносекундных тактов. В противном случае этот элемент игнорируется.

Система добавляет к этому ограничению накопленный период выполнения процессов, связанных с заданием, при установке ограничения. Например, если процесс, связанный с заданием, уже накопил 5 минут времени выполнения в пользовательском режиме, а ограничение равно 1 минуте, фактически примененное ограничение составляет 6 минут.

Сведения о том, как указать PerJobUserTimeLimit в качестве принудительного ограничения и завершить процессы в заданиях, превышающих это ограничение, см. в разделе структура JOBOBJECT_BASIC_LIMIT_INFORMATION .

JobMemoryLimit

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

Сведения о том, как указать JobMemoryLimit в качестве принудительного ограничения и предотвратить продолжение фиксации памяти процессами в заданиях, превышающими это ограничение, см. в JOBOBJECT_EXTENDED_LIMIT_INFORMATION структуре .

RateControlTolerance

Если параметр LimitFlags указывает JOB_OBJECT_LIMIT_RATE_CONTROL, этот член указывает, в какой степени задание может превысить пределы управления скоростью ЦП в течение интервала, заданного элементом RateControlToleranceInterval . В противном случае этот элемент игнорируется.

Этот элемент может быть одним из следующих значений. Если значение не указано, используется ToleranceHigh .

Значение Значение
ToleranceLow
1
Задание может превысить пределы управления скоростью ЦП на 20 % от допустимого интервала.
ToleranceMedium
2
Задание может превысить пределы управления скоростью ЦП на 40 % от допустимого интервала.
ToleranceHigh
3
Задание может превысить пределы управления скоростью ЦП на 60 % от допустимого интервала.

RateControlToleranceInterval

Если параметр LimitFlags указывает JOB_OBJECT_LIMIT_RATE_CONTROL, этот член задает интервал, в течение которого выполняется мониторинг использования ЦП задания, чтобы определить, превысило ли задание пределы управления скоростью ЦП. В противном случае этот элемент игнорируется.

Этот элемент может быть одним из следующих значений. Если значение не указано, используется ToleranceIntervalShort .

Значение Значение
ToleranceIntervalShort
1
Интервал допуска составляет 10 секунд.
ToleranceIntervalMedium
2
Интервал допуска составляет одну минуту.
ToleranceIntervalLong
3
Интервал допуска составляет 10 минут.

LimitFlags

Флаги ограничения, которые действуют. Этот элемент представляет собой битовое поле, определяющее, используются ли другие элементы структуры. Можно указать любое сочетание следующих значений.

Значение Значение
JOB_OBJECT_LIMIT_JOB_MEMORY
0x00000200
Устанавливает предельное количество зафиксированной памяти на уровне задания для всех процессов, связанных с заданием. Элемент JobMemoryLimit содержит дополнительные сведения.
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
Устанавливает ограничение байтов чтения ввода-вывода до суммы байтов ввода-вывода на уровне задания, считанных всеми процессами, связанными с заданием. Элемент IoReadBytesLimit содержит дополнительные сведения.
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
Устанавливает ограничение количества байтов записи ввода-вывода в пределах всего задания байтов ввода-вывода, записанных всеми процессами, связанными с заданием. Элемент IoWriteBytesLimit содержит дополнительные сведения.
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
Устанавливает ограничение времени выполнения задания в пользовательском режиме. Элемент PerJobUserTimeLimit содержит дополнительные сведения.
JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Устанавливает пороговое значение уведомления для ограничений управления скоростью ЦП, установленных для задания. Элементы RateControlTolerance и RateControlToleranceInterval содержат дополнительные сведения.

Ограничения для управления скоростью ЦП устанавливаются путем вызова SetInformationJobObject с информационным классом JobObjectCpuRateInformationClass .

Комментарии

При превышении ограничения на уведомления система отправляет JOB_OBJECT_MSG_NOTIFICATION_LIMIT сообщение на порт завершения ввода-вывода, связанный с заданием. Процессы в задании продолжают выполняться и могут продолжать выделять память или передавать байты для чтения или записи за пределами указанных ограничений.

Когда приложение, отслеживающее порт завершения ввода-вывода, получает JOB_OBJECT_MSG_NOTIFICATION_LIMIT сообщение, оно должно вызвать QueryInformationJobObject с информационным классом JobObjectLimitViolationInformation . Сведения о нарушении ограничений получаются в JOBOBJECT_LIMIT_VIOLATION_STRUCTURE, который содержит сведения обо всех ограничениях уведомлений, которые были превышены во время запроса. Система не будет отправлять другое сообщение JOB_OBJECT_MSG_NOTIFICATION_LIMIT до тех пор, пока не будет вызван QueryInformationJobObject .

Ограничения для управления скоростью ЦП для задания устанавливаются в JOBOBJECT_CPU_RATE_CONTROL_INFORMATION структуре. Значения управления скоростью ЦП в структуре JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION указывают, насколько задание может превысить установленные пределы управления скоростью ЦП перед отправкой уведомления.

Требования

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

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

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject