多媒体类计划程序服务

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

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

有关使用 MMCSS 的程序的示例,请参阅 独占模式流

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 支持以下任务:

  • 音频:
  • 捕获
  • Distribution
  • 游戏
  • 播放
  • 专业音频
  • 窗口管理器

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 资源配额。 如果没有准备好运行低优先级线程,它们可以继续运行。