winnt.h) (JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION 結構
包含作業物件之通知限制的相關信息。 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,此成員是作業中所有進程所讀取之 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 結構。
JobMemoryLimit
如果 LimitFlags 參數指定JOB_OBJECT_LIMIT_JOB_MEMORY,此成員是作業中所有進程可認可之虛擬記憶體總數的通知限制,以位元組為單位。 否則會忽略這個成員。
若要將 JobMemoryLimit 指定為可強制執行的限制,並防止超過限制的作業中的進程繼續認可記憶體,請參閱 JOBOBJECT_EXTENDED_LIMIT_INFORMATION 結構。
RateControlTolerance
如果 LimitFlags 參數指定JOB_OBJECT_LIMIT_RATE_CONTROL,此成員會指定作業在 RateControlToleranceInterval 成員指定的間隔期間,可超過其 CPU 速率控制限制的範圍。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceHigh 。
值 | 意義 |
---|---|
|
作業可以超過其 20% 容錯間隔的 CPU 速率控制限制。 |
|
作業可以超過其 40% 容錯間隔的 CPU 速率控制限制。 |
|
作業可以超過其 60% 容錯間隔的 CPU 速率控制限制。 |
RateControlToleranceInterval
如果 LimitFlags 參數指定JOB_OBJECT_LIMIT_RATE_CONTROL,此成員會指定監視作業 CPU 使用量的間隔,以判斷作業是否已超過其 CPU 速率控制限制。 否則會忽略這個成員。
這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort 。
值 | 意義 |
---|---|
|
容錯間隔為10秒。 |
|
容錯間隔為一分鐘。 |
|
容錯間隔為10分鐘。 |
LimitFlags
作用中的限制旗標。 這個成員是一個位字段,可判斷是否使用其他結構成員。 您可以指定下列值的任何組合。
值 | 意義 |
---|---|
|
針對與作業相關聯的所有進程,建立已認可記憶體的全作業記憶體總和。 JobMemoryLimit 成員包含其他資訊。 |
|
建立與作業相關聯之所有進程所讀取之全作業 I/O 位元組總和的 I/O 讀取位元組限制。 IoReadBytesLimit 成員包含詳細資訊。 |
|
建立與作業相關聯之所有進程所寫入之全作業 I/O 位元組總和的 I/O 寫入位元組限制。 IoWriteBytesLimit 成員包含詳細資訊。 |
|
建立作業的使用者模式運行時間限制。 PerJobUserTimeLimit 成員包含其他資訊。 |
|
建立針對作業所建立之 CPU 速率控制限制的通知閾值。 RateControlTolerance 和RateControlToleranceInterval成員包含其他資訊。
使用 JobObjectCpuRateInformationClass 資訊類別呼叫 SetInformationJobObject 來建立 CPU 速率控制限制。 |
備註
超過通知限制時,系統會將JOB_OBJECT_MSG_NOTIFICATION_LIMIT訊息傳送至與作業相關聯的 I/O 完成埠。 作業中的進程會繼續執行,而且可以繼續配置記憶體,或傳輸超出指定限制的讀取或寫入位元組。
當監視 I/O 完成埠的應用程式收到JOB_OBJECT_MSG_NOTIFICATION_LIMIT訊息時,它必須使用 JobObjectLimitViolationInformation 資訊類別呼叫 QueryInformationJobObject。 在JOBOBJECT_LIMIT_VIOLATION_STRUCTURE中收到限制違規資訊,其中包含查詢期間超過之所有通知限制的相關信息。 在 呼叫 QueryInformationJobObject 之後,系統才會傳送另一個JOB_OBJECT_MSG_NOTIFICATION_LIMIT訊息。
作業的CPU速率控制限制是在 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 結構中建立的。 JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION結構中的CPU速率控制值會指定在傳送通知之前,作業可以超過其已建立的CPU速率控制限制。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 [僅限傳統型應用程式] |
標頭 | winnt.h |
另請參閱
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION