winnt.h) (JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 結構

包含作業物件的CPU速率控制資訊。 SetInformationJobObjectQueryInformationJobObject 函式會使用這個結構與 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_CAPJOB_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 速率受限於您在 MinRateMaxRate 成員中指定的最小和最大速率。

如果您設定 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_BASEDJOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE,則不會使用此成員。

CpuRate 設定為 100 的百分比。 例如,若要讓作業使用 20% 的 CPU,請將 CpuRate 設定為 20 倍 100 或 2,000。

請勿將 CpuRate 設定為 0。 如果 CpuRate0,SetInformationJobObject 會傳回 INVALID_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%,請指定 50 倍 100 或 5,000。

在作業達到排程間隔的這個限制之後,與作業相關聯的線程將無法執行,直到下一個排程間隔為止。

備註

您可以在巢狀作業階層中設定多個作業的 CPU 速率控制。 當您設定作業物件的CPU速率控制時,這些設定會套用至階層中的作業及其子作業。 當您在巢狀階層中設定作業的CPU速率控制時,系統會針對作業的立即父作業計算對應的配額。 換句話說,為作業設定的速率代表其配置給父作業的CPU速率部分。 如果作業物件在其父作業鏈結中沒有開啟 CPU 速率控制的父代,作業的速率控制代表整個系統的 CPU 部分。

如果動態公平共用排程 (DFSS) 有效,在 遠端桌面服務 (先前稱為終端機服務) 下執行的應用程式中,無法使用 CPU 速率控制。

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
標頭 winnt.h

另請參閱

JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION

QueryInformationJobObject

SetInformationJobObject