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

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

Синтаксис

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;

Члены

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 .

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

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

DUMMYUNIONNAME.JobMemoryLimit

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

DUMMYUNIONNAME2

DUMMYUNIONNAME2.RateControlTolerance

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

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

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

DUMMYUNIONNAME2.CpuRateControlTolerance

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

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

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

DUMMYUNIONNAME3

DUMMYUNIONNAME3.RateControlToleranceInterval

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

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

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

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

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

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

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

LimitFlags

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

Значение Значение
JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH
0x00000200
Устанавливает пороговое значение уведомления для суммы частной зафиксированной памяти на уровне задания для всех процессов, связанных с заданием. Член JobHighMemoryLimit содержит дополнительные сведения.
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
Устанавливает минимальный объем уведомлений для всей суммы частной зафиксированной памяти для всех процессов, связанных с заданием. Если это значение задано, отправляется уведомление, когда объем частной зафиксированной памяти падает ниже этого порогового значения. Член JobLowMemoryLimit содержит дополнительные сведения.
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_CPU_RATE_CONTROL
0x00040000
Устанавливает пороговое значение уведомлений для ограничений управления скоростью ЦП, установленных для задания. Элементы CpuRateControlTolerance и CpuRateControlToleranceInterval содержат дополнительные сведения.

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

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
Устанавливает пороговое значение уведомлений для ограничений управления скоростью ЦП, установленных для задания. Элементы RateControlTolerance и RateControlToleranceInterval содержат дополнительные сведения.

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

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
Устанавливает пороговое значение уведомлений для ограничений управления скоростью ввода-вывода, установленных для задания. Элементы IoRateControlTolerance и IoRateControlToleranceInterval содержат дополнительные сведения.

Ограничения управления скоростью ввода-вывода устанавливаются путем вызова Метода SetIoRateControlInformationJobObject.

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
Устанавливает порог уведомлений для ограничений управления скоростью сети, установленных для задания. Элементы NetRateControlTolerance и NetRateControlToleranceInterval содержат дополнительные сведения.

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

IoRateControlTolerance

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

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

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

JobLowMemoryLimit

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

IoRateControlToleranceInterval

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

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

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

NetRateControlTolerance

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

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

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

NetRateControlToleranceInterval

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

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

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

Комментарии

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

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

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

Требования

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

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

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject