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_BASED ,也不能 设置JOB_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。 如果 CpuRate 为 0, 则 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 速率控制的父对象,则作业的速率控制表示整个系统的 CPU 部分。

如果动态公平共享计划 (DFSS) 有效,则远程桌面 服务 (以前终端服务) 下运行的应用程序中的作业对象无法使用 CPU 速率控制。

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
标头 winnt.h

另请参阅

JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION

QueryInformationJobObject

SetInformationJobObject