多媒体类计划程序服务

多媒体类计划程序服务(MMCSS)使多媒体应用程序能够确保其时间敏感处理接收对 CPU 资源的优先访问。 此服务使多媒体应用程序能够尽可能多地利用 CPU,而不会拒绝 CPU 资源到优先级较低的应用程序。

MMCSS 使用注册表中存储的信息来标识支持的任务,并确定执行这些任务的线程的相对优先级。 执行与特定任务相关的工作的每个线程都会调用 AvSetMmMaxThreadCharacteristicsAvSetMmThreadCharacteristics 函数来通知 MMCSS 它正在处理该任务。

有关使用 MMCSS 的程序的示例,请参阅 Exclusive-Mode 流

Windows Server 2003 和 Windows XP: MMCSS 不可用。

注册表设置

MMCSS 设置存储在以下注册表项中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile

此键包含名为 SystemResponsiveness REG_DWORD 值,该值确定应保证为低优先级任务的 CPU 资源的百分比。 例如,如果此值为 20,则为低优先级任务保留 20% CPU 资源。 请注意,不均匀地被 10 分隔的值向上舍入为最接近的 10 的倍数。 值 0 也被视为 10。

该键还包含一个名为 Tasks 的子项,其中包含任务列表。 默认情况下,Windows 支持以下任务:

  • 音频
  • 捕获
  • 分发
  • 游戏
  • 播放
  • Pro Audio
  • 窗口管理器

OEM 可以根据需要添加其他任务。

每个任务键包含以下一组值,这些值表示要应用于与任务关联的线程的特征。

价值 格式 可能的值
相关性 REG_DWORD 指示处理器相关性的位掩码。 0x00和0xFFFFFFFF都表示未使用处理器相关性。
背景 REG_SZ 指示此任务是否为后台任务(无用户界面)。 由于窗口焦点发生更改,后台任务的线程不会更改。 此值可以设置为 True 或 False。
BackgroundPriority REG_DWORD 后台优先级。 值的范围为 1-8。
时钟速率 REG_DWORD MMCSS 用于确定处理器资源计划的粒度的提示。Windows Server 2008 和 Windows Vista: 如果线程以 100 纳秒间隔联接此任务,则系统使用的最大保证时钟速率。 从 Windows 7 和 Windows Server 2008 R2 开始,已删除此保证以减少系统能耗。
GPU 优先级 REG_DWORD GPU 优先级。 值的范围为 0-31。 尚未使用此优先级。
优先级 REG_DWORD 任务优先级。 值的范围是 1(低)到 8(高)。对于具有“高”计划类别 的任务,此值始终被视为 2。
计划类别 REG_SZ 计划类别。 此值可以设置为“高”、“中”或“低”。
SFIO 优先级 REG_SZ 计划的 I/O 优先级。 此值可设置为“空闲”、“低”、“正常”或“高”。 不使用此值。

 

注意

为了节省电源,除非绝对必要,否则应用程序不应将系统范围的计时器的分辨率设置为小值。 有关详细信息,请参阅 Windows 7 开发人员指南中的 性能

 

线程优先级

MMCSS 可提升处理高优先级多媒体任务的线程的优先级。

MMCSS 使用以下因素确定线程的优先级:

  • 任务的基本优先级。
  • AvSetMmThreadPriority 函数的 Priority 参数。
  • 应用程序是否处于前台。
  • 每个类别中的线程消耗了多少 CPU 时间。

MMCSS 根据客户端线程的计划类别设置客户端线程的优先级。

类别 优先权 描述
23-26 这些线程以低于某些系统级任务的线程优先级运行。 此类别专为专业音频任务而设计。
中等 16-22 这些线程是前台的应用程序的一部分。
8-15 此类别包含线程的其余部分。 如果需要,可以保证 CPU 资源的最小百分比。
1-7 这些线程已使用 CPU 资源的配额。 如果没有低优先级线程准备好运行,它们可以继续运行。