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,則此成員是作業中所有進程讀取之 I/O 位元組總數的通知限制。 否則,會忽略這個成員。
IoWriteBytesLimit
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_JOB_WRITE_BYTES,則此成員是作業中所有進程所寫入之 I/O 位元組總數的通知限制。 否則,會忽略這個成員。
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 成員所指定的間隔期間超過其 CPU 速率控制限制的範圍。 否則,會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceHigh 。
值 | 意義 |
---|---|
|
作業可以超過其 20% 容錯間隔的 CPU 速率控制限制。 |
|
此作業可以超過其 40% 容錯間隔的 CPU 速率控制限制。 |
|
此作業可以超過其 60% 容錯間隔的 CPU 速率控制限制。 |
DUMMYUNIONNAME2.CpuRateControlTolerance
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_CPU_RATE_CONTROL,此成員會指定作業可以在 CpuRateControlToleranceInterval 成員所指定的間隔期間超過其 CPU 速率控制限制的範圍。 否則,會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceHigh 。
值 | 意義 |
---|---|
|
作業可以超過其 20% 容錯間隔的 CPU 速率控制限制。 |
|
此作業可以超過其 40% 容錯間隔的 CPU 速率控制限制。 |
|
此作業可以超過其 60% 容錯間隔的 CPU 速率控制限制。 |
DUMMYUNIONNAME3
DUMMYUNIONNAME3.RateControlToleranceInterval
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_RATE_CONTROL,此成員會指定監視作業 CPU 使用量的間隔,以判斷作業是否已超過其 CPU 速率控制限制。 否則,會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort 。
值 | 意義 |
---|---|
|
容錯間隔為10秒。 |
|
容錯間隔為一分鐘。 |
|
容錯間隔為10分鐘。 |
DUMMYUNIONNAME3.CpuRateControlToleranceInterval
如果 LimitFlags 參數指定 JOB_OBJECT_CPU_LIMIT_RATE_CONTROL,此成員會指定監視作業 CPU 使用量的間隔,以判斷作業是否已超過其 CPU 速率控制限制。 否則,會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort 。
值 | 意義 |
---|---|
|
容錯間隔為10秒。 |
|
容錯間隔為一分鐘。 |
|
容錯間隔為10分鐘。 |
LimitFlags
作用中的限制旗標。 這個成員是位欄位元,可判斷是否使用其他結構成員。 您可以指定下列值的任何組合。
值 | 意義 |
---|---|
|
針對與作業相關聯的所有進程,建立全作業認可記憶體私人認可記憶體總和的通知臨界值。 JobHighMemoryLimit 成員包含其他資訊。 |
|
針對與作業相關聯的所有進程,建立整個作業認可記憶體總和的通知最小值。 如果設定此值,則會在私人認可記憶體數量低於此閾值時傳送通知。 JobLowMemoryLimit 成員包含其他資訊。 |
|
建立與作業相關聯之所有進程所讀取的整個作業 I/O 位元組總和的 I/O 讀取位元組限制。 IoReadBytesLimit 成員包含詳細資訊。 |
|
建立與作業相關聯之所有進程所寫入之全作業 I/O 位元組總和的 I/O 寫入位元組限制。 IoWriteBytesLimit 成員包含詳細資訊。 |
|
建立作業的使用者模式運行時間限制。 PerJobUserTimeLimit 成員包含其他資訊。 |
|
建立針對作業所建立之 CPU 速率控制限制的通知閾值。 CpuRateControlTolerance 和 CpuRateControlToleranceInterval 成員包含其他資訊。
使用 JobObjectCpuRateInformationClass 資訊類別呼叫 SetInformationJobObject 來建立 CPU 速率控制限制。 |
|
建立針對作業所建立之 CPU 速率控制限制的通知閾值。 RateControlTolerance 和RateControlToleranceInterval成員包含其他資訊。
使用 JobObjectCpuRateInformationClass 資訊類別呼叫 SetInformationJobObject 來建立 CPU 速率控制限制。 |
|
建立針對作業所建立 I/O 速率控制限制的通知閾值。 IoRateControlTolerance 和 IoRateControlToleranceInterval 成員包含其他資訊。
藉由呼叫 SetIoRateControlInformationJobObject 來建立 I/O 速率控制限制。 |
|
建立針對作業所建立網路速率控制限制的通知閾值。 NetRateControlTolerance 和 NetRateControlToleranceInterval 成員包含其他資訊。
網路速率控制限制的建立方式是使用JobObjectNetRateInformationClass資訊類別呼叫 SetInformationJobObject。 |
IoRateControlTolerance
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_IO_RATE_CONTROL,此成員會指定作業在 IoRateControlToleranceInterval 成員指定的間隔期間,可超過其 I/O 速率控制限制的範圍。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceHigh 。
值 | 意義 |
---|---|
|
作業可以超過其 20% 容錯間隔的 I/O 速率控制限制。 |
|
作業可以超過其 40% 容錯間隔的 I/O 速率控制限制。 |
|
作業可以超過其 60% 容錯間隔的 I/O 速率控制限制。 |
JobLowMemoryLimit
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_JOB_MEMORY_LOW,此成員是作業中所有進程可認可之虛擬記憶體總數的通知限制最小值,以位元組為單位。 否則會忽略這個成員。
IoRateControlToleranceInterval
如果 LimitFlags 參數指定 JOB_OBJECT_IO_LIMIT_RATE_CONTROL,此成員會指定監視作業 I/O 使用量的間隔,以判斷作業是否已超過其 I/O 速率控制限制。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort 。
值 | 意義 |
---|---|
|
容錯間隔為10秒。 |
|
容錯間隔為一分鐘。 |
|
容錯間隔為10分鐘。 |
NetRateControlTolerance
如果 LimitFlags 參數指定 JOB_OBJECT_LIMIT_IO_RATE_CONTROL,此成員會指定作業可以在 NetRateControlToleranceInterval 成員指定的間隔期間超過其網路速率控制限制的範圍。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceHigh 。
值 | 意義 |
---|---|
|
作業可以超過其 20% 容錯間隔的網路速率控制限制。 |
|
作業可以超過其 40% 容錯間隔的網路速率控制限制。 |
|
作業可以超過其 60% 容錯間隔的網路速率控制限制。 |
NetRateControlToleranceInterval
如果 LimitFlags 參數指定 JOB_OBJECT_NET_LIMIT_RATE_CONTROL,此成員會指定監視作業網路使用量的間隔,以判斷作業是否已超過其網路速率控制限制。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort 。
值 | 意義 |
---|---|
|
容錯間隔為10秒。 |
|
容錯間隔為一分鐘。 |
|
容錯間隔為10分鐘。 |
備註
超過通知限制時,系統會將 JOB_OBJECT_MSG_NOTIFICATION_LIMIT 訊息傳送至與作業相關聯的 I/O 完成埠。 作業中的進程會繼續執行,而且可以繼續配置記憶體,或傳輸超出指定限制的讀取或寫入位元組。
當監視 I/O 完成埠的應用程式收到JOB_OBJECT_MSG_NOTIFICATION_LIMIT訊息時,它必須使用 JobObjectLimitViolationInformation2 資訊類別呼叫 QueryInformationJobObject。 在 JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 結構中收到限制違規資訊,其中包含查詢期間超過之所有通知限制的相關信息。 在呼叫 QueryInformationJobObject 之後,系統才會傳送另一個JOB_OBJECT_MSG_NOTIFICATION_LIMIT訊息。
作業的CPU速率控制限制是在 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 結構中建立的。 JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2結構中的 CPU 速率控制值指定在傳送通知之前,作業可以超過其已建立的 CPU 速率控制限制。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2016 [僅限傳統型應用程式] |
標頭 | winnt.h |
另請參閱
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION
JOBOBJECT_IO_RATE_CONTROL_INFORMATION
JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2