JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 構造体 (winnt.h)

ジョブ オブジェクトの CPU レート制御情報を格納します。 この構造体は、 SetInformationJobObject 関数と QueryInformationJobObject 関数と JobObjectCpuRateControlInformation 情報クラスで使用されます。

構文

typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
  DWORD ControlFlags;
  union {
    DWORD CpuRate;
    DWORD Weight;
    struct {
      WORD MinRate;
      WORD MaxRate;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
} JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;

メンバー

ControlFlags

CPU レート制御のスケジュール ポリシー。 このメンバーには、次のいずれかの値を指定できます。

意味
JOB_OBJECT_CPU_RATE_CONTROL_ENABLE
0x1
このフラグを使用すると、ジョブの CPU レートを重みまたはハード キャップに基づいて制御できます。 JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASEDJOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP、またはJOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEも設定する場合は、この値を設定する必要があります。
JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
0x2
ジョブの CPU レートは、他のジョブの重みへの相対的な重み付けに基づいて計算されます。 このフラグが設定されている場合、 Weight メンバーには詳細情報が含まれます。 このフラグがクリアされている場合、 CpuRate メンバーには詳細情報が含まれます。

JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASEDを設定した場合は、JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEも設定できません。

JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
0x4
ジョブの CPU レートはハード制限です。 ジョブが現在のスケジュール間隔の CPU サイクル制限に達すると、ジョブに関連付けられているスレッドは次の間隔まで実行されません。

JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAPを設定した場合、JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEも設定できません。

JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY
0x8
ジョブの CPU レートが許容範囲内のジョブのレート制限を超えたときにメッセージを送信します。
JOB_OBJECT_ CPU_RATE_CONTROL_MIN_MAX_RATE
0x10
ジョブの CPU レートは、 MinRate メンバーと MaxRate メンバーで指定した最小レートと最大レートによって制限されます。

JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEを設定した場合は、JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASEDJOB_OBJECT_CPU_RATE_CONTROL_HARD_CAPも設定できません。

DUMMYUNIONNAME

DUMMYUNIONNAME.CpuRate

10,000 サイクルあたりのサイクル数として、ジョブ オブジェクト内のスレッドがスケジュール間隔ごとに使用できるプロセッサ サイクルの部分を指定します。 ControlFlags メンバーがJOB_OBJECT_CPU_RATE_WEIGHT_BASEDまたはJOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEを指定している場合、このメンバーは使用されません。

CpuRate を 100 の割合に設定します。 たとえば、ジョブで CPU の 20% を使用できるようにするには、 CpuRate を 100 倍または 2,000 回に設定します。

CpuRate を 0 に設定しないでください。 CpuRate が 0 の場合、SetInformationJobObjectINVALID_ARGSを返します。

DUMMYUNIONNAME.Weight

ControlFlags メンバーがJOB_OBJECT_CPU_RATE_WEIGHT_BASEDを指定する場合、このメンバーはジョブ オブジェクトのスケジュールの重みを指定します。これにより、プロセッサ上の他のワークロードに対するジョブに対するプロセッサ時間の共有が決定されます。

このメンバーには、1 から 9 までの値を指定できます。ここで、1 は最小の共有、9 は最大の共有です。 既定値は 5 で、ほとんどのワークロードに使用する必要があります。

ControlFlags メンバーがJOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATEを指定している場合、このメンバーは使用されません。

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MinRate

ジョブ・オブジェクト内のスレッドがスケジューリング間隔ごとに予約できるプロセッサー・サイクルの最小部分を指定します。 この率を 100 の割合として指定します。 たとえば、最小レートを 50% に設定するには、50 回 100 または 5,000 を指定します。

最小レートが正しく機能するためには、システム内のすべてのジョブ オブジェクトの最小レートの合計が 10,000 を超えることはできません。これは 100% に相当します。

DUMMYUNIONNAME.DUMMYSTRUCTNAME.MaxRate

ジョブ・オブジェクト内のスレッドがスケジューリング間隔ごとに使用できるプロセッサー・サイクルの最大部分を指定します。 この率を 100 の割合として指定します。 たとえば、最大レートを 50% に設定するには、100 回 50 回または 5,000 回を指定します。

ジョブがスケジュール間隔のこの制限に達すると、次のスケジュール間隔までジョブに関連付けられているスレッドは実行できません。

注釈

入れ子になったジョブの階層内の複数のジョブに対して CPU レート制御を設定できます。 ジョブ オブジェクトの CPU レート制御を設定すると、階層内のジョブとその子ジョブに設定が適用されます。 入れ子になった階層内のジョブに対して CPU レート制御を設定すると、システムは、ジョブの直接親ジョブの CPU レート制御に関して対応するクォータを計算します。 言い換えると、ジョブに設定されたレートは、親ジョブに割り当てられる CPU レートの部分を表します。 ジョブ オブジェクトの親ジョブのチェーンで CPU レート制御が有効になっている親がない場合、ジョブのレート制御はシステム全体の CPU の部分を表します。

動的公平共有スケジューリング (DFSS) が有効な場合、 リモート デスクトップ サービス (旧称ターミナル サービス) で実行されているアプリケーションのジョブ オブジェクトで CPU レート制御を使用することはできません。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
Header winnt.h

こちらもご覧ください

JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION

QueryInformationJobObject

SetInformationJobObject