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を指定した場合、このメンバーはジョブ内のすべてのプロセスによって読み取られた合計 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 秒です。 |
|
許容間隔は 1 分です。 |
|
許容間隔は 10 分です。 |
LimitFlags
有効な制限フラグ。 このメンバーは、他の構造体メンバーを使用するかどうかを決定するビットフィールドです。 次の値の任意の組み合わせを指定できます。
値 | 意味 |
---|---|
|
コミットされたメモリ制限を、ジョブに関連付けられているすべてのプロセスのコミット済みメモリのジョブ全体の合計に設定します。 JobMemoryLimit メンバーには追加情報が含まれています。 |
|
ジョブに関連付けられているすべてのプロセスによって読み取られた I/O バイトのジョブ全体の合計に対する I/O 読み取りバイト数の制限を確立します。 IoReadBytesLimit メンバーには、詳細情報が含まれています。 |
|
ジョブに関連付けられているすべてのプロセスによって書き込まれた I/O バイトのジョブ全体の合計に対する I/O 書き込みバイト数の制限を確立します。 IoWriteBytesLimit メンバーには、詳細情報が含まれています。 |
|
ジョブのユーザー モード実行時間の制限を設定します。 PerJobUserTimeLimit メンバーには追加情報が含まれています。 |
|
ジョブに対して確立された CPU レート制御制限の通知しきい値を確立します。 RateControlTolerance メンバーと RateControlToleranceInterval メンバーには、追加情報が含まれています。
CPU レート制御の制限は、JobObjectCpuRateInformationClass 情報クラスを使用して SetInformationJobObject を呼び出すことによって確立されます。 |
注釈
通知の制限を超えると、システムはジョブに関連付けられている I/O 完了ポートにJOB_OBJECT_MSG_NOTIFICATION_LIMITメッセージを送信します。 ジョブ内のプロセスは引き続き実行され、指定された制限を超えてメモリの割り当てや読み取りまたは書き込みバイトの送信を続行できます。
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 [デスクトップ アプリのみ] |
Header | winnt.h |
こちらもご覧ください
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION