Servicio de programador de clases multimedia

El servicio De programador de clases multimedia (MMCSS) permite a las aplicaciones multimedia asegurarse de que su procesamiento sensible al tiempo recibe acceso prioritario a los recursos de CPU. Este servicio permite que las aplicaciones multimedia utilicen la mayor cantidad de CPU posible sin denegar los recursos de CPU a aplicaciones de prioridad inferior.

MMCSS usa información almacenada en el registro para identificar las tareas admitidas y determinar la prioridad relativa de los subprocesos que realizan estas tareas. Cada subproceso que realiza un trabajo relacionado con una tarea determinada llama a la función AvSetMmMaxThreadCharacteristics o AvSetMmThreadCharacteristics para informar a MMCSS de que está trabajando en esa tarea.

Para obtener un ejemplo de un programa que usa MMCSS, consulte Secuencias en modo exclusivo.

Windows Server 2003 y Windows XP: MMCSS no está disponible.

Configuración del Registro

La configuración de MMCSS se almacena en la siguiente clave del Registro:

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

Esta clave contiene un valor de REG_DWORD denominado SystemResponsiveness que determina el porcentaje de recursos de CPU que se deben garantizar para tareas de prioridad baja. Por ejemplo, si este valor es 20, el 20 % de los recursos de CPU se reservan para tareas de prioridad baja. Tenga en cuenta que los valores que no se pueden dividir uniformemente en 10 se redondean hasta el múltiplo más cercano de 10. Un valor de 0 también se trata como 10.

La clave también contiene una subclave denominada Tasks que contiene la lista de tareas. De forma predeterminada, Windows admite las siguientes tareas:

  • Audio
  • Capture
  • Distribución
  • Juegos
  • Reproducción
  • Pro Audio
  • Administrador de ventanas

Los OEM pueden agregar tareas adicionales según sea necesario.

Cada clave de tarea contiene el siguiente conjunto de valores que representan las características que se aplicarán a los subprocesos asociados a la tarea.

Value Formato Valores posibles
Afinidad REG_DWORD Máscara de bits que indica la afinidad del procesador. Tanto 0x00 como 0xFFFFFFFF indican que no se usa la afinidad del procesador.
Solo fondo REG_SZ Indica si se trata de una tarea en segundo plano (sin interfaz de usuario). Los subprocesos de una tarea en segundo plano no cambian debido a un cambio en el foco de la ventana. Este valor se puede establecer en True o False.
BackgroundPriority REG_DWORD Prioridad en segundo plano. El intervalo de valores es 1-8.
Frecuencia del reloj REG_DWORD Sugerencia usada por MMCSS para determinar la granularidad de la programación de recursos del procesador. Windows Server 2008 y Windows Vista: La velocidad de reloj máxima garantizada que usa el sistema si un subproceso se une a esta tarea, en intervalos de 100 nanosegundos. A partir de Windows 7 y Windows Server 2008 R2, esta garantía se quitó para reducir el consumo de energía del sistema.
Prioridad de GPU REG_DWORD Prioridad de GPU. El intervalo de valores es 0-31. Esta prioridad aún no se usa.
Prioridad REG_DWORD Prioridad de la tarea. El intervalo de valores es de 1 (bajo) a 8 (alto). Para las tareas con una categoría de programación alta, este valor siempre se trata como 2.
Categoría de programación REG_SZ Categoría de programación. Este valor se puede establecer en Alto, Medio o Bajo.
Prioridad de SFIO REG_SZ Prioridad de E/S programada. Este valor se puede establecer en Inactivo, Bajo, Normal o Alto. Este valor no se utiliza.

 

Nota

Para conservar la energía, las aplicaciones no deben establecer la resolución del temporizador de todo el sistema en un valor pequeño a menos que sea absolutamente necesario. Para obtener más información, consulta Rendimiento en la Guía para desarrolladores de Windows 7.

 

Prioridades de subprocesos

MMCSS aumenta la prioridad de los subprocesos que trabajan en tareas multimedia de alta prioridad.

MMCSS determina la prioridad de un subproceso mediante los siguientes factores:

  • Prioridad base de la tarea.
  • Parámetro Priority de la función AvSetMmThreadPriority .
  • Si la aplicación está en primer plano.
  • Cuánto tiempo de CPU consumen los subprocesos de cada categoría.

MMCSS establece la prioridad de los subprocesos de cliente en función de su categoría de programación.

Category Prioridad Descripción
Alto 23-26 Estos subprocesos se ejecutan en una prioridad de subproceso inferior a solo determinadas tareas de nivel de sistema. Esta categoría está diseñada para tareas de Pro Audio.
Media 16-22 Estos subprocesos forman parte de la aplicación que está en primer plano.
Bajo 8-15 Esta categoría contiene el resto de los subprocesos. Se garantiza un porcentaje mínimo de los recursos de CPU si es necesario.
1-7 Estos subprocesos han usado su cuota de recursos de CPU. Pueden seguir ejecutándose si no hay subprocesos de prioridad baja listos para ejecutarse.