Serviço agendador de classe multimídia

O MMCSS (Serviço de Agendador de Classe Multimídia) permite que os aplicativos multimídia garantam que o processamento com diferenciação de tempo receba acesso priorizado aos recursos da CPU. Esse serviço permite que os aplicativos multimídia utilizem o máximo possível da CPU sem negar recursos de CPU a aplicativos de menor prioridade.

O MMCSS usa informações armazenadas no registro para identificar tarefas com suporte e determinar a prioridade relativa dos threads que executam essas tarefas. Cada thread que está executando um trabalho relacionado a uma tarefa específica chama a função AvSetMmMaxThreadCharacteristics ou AvSetMmThreadCharacteristics para informar ao MMCSS que está trabalhando nessa tarefa.

Para obter um exemplo de um programa que usa o MMCSS, consulte Fluxos de modo exclusivo.

Windows Server 2003 e Windows XP: O MMCSS não está disponível.

Configurações do Registro

As configurações do MMCSS são armazenadas na seguinte chave do Registro:

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

Essa chave contém um valor REG_DWORD chamado SystemResponsiveness que determina o percentual de recursos de CPU que devem ser garantidos para tarefas de baixa prioridade. Por exemplo, se esse valor for 20, 20% dos recursos de CPU serão reservados para tarefas de baixa prioridade. Observe que os valores que não são uniformemente divisível por 10 são arredondados para o múltiplo mais próximo de 10. Um valor igual a 0 também é tratado como 10.

A chave também contém uma subchave chamada Tarefas que contém a lista de tarefas. Por padrão, o Windows dá suporte às seguintes tarefas:

  • Áudio
  • Captura
  • Distribuição
  • Jogos
  • Reprodução
  • Áudio Pro
  • Gerenciador de Janelas

Os OEMs podem adicionar tarefas adicionais conforme necessário.

Cada chave de tarefa contém o seguinte conjunto de valores que representam características a serem aplicadas a threads associados à tarefa.

Valor Formatar Valores possíveis
Afinidade REG_DWORD Uma máscara de bits que indica a afinidade do processador. Tanto 0x00 quanto 0xFFFFFFFF indicam que a afinidade do processador não é usada.
Somente em segundo plano REG_SZ Indica se essa é uma tarefa em segundo plano (sem interface do usuário). Os threads de uma tarefa em segundo plano não são alterados devido a uma alteração no foco da janela. Esse valor pode ser definido como True ou False.
BackgroundPriority REG_DWORD A prioridade em segundo plano. O intervalo de valores é de 1 a 8.
Taxa do relógio REG_DWORD Uma dica usada pelo MMCSS para determinar a granularidade do agendamento de recursos do processador. Windows Server 2008 e Windows Vista: A taxa máxima de relógio garantida que o sistema usa se um thread unir essa tarefa, em intervalos de 100 nanossegundos. A partir do Windows 7 e do Windows Server 2008 R2, essa garantia foi removida para reduzir o consumo de energia do sistema.
Prioridade de GPU REG_DWORD A prioridade da GPU. O intervalo de valores é de 0 a 31. Essa prioridade ainda não é usada.
Prioridade REG_DWORD A prioridade da tarefa. O intervalo de valores é de 1 (baixo) a 8 (alto). Para tarefas com uma categoria de agendamento alta, esse valor é sempre tratado como 2.
Categoria de Agendamento REG_SZ A categoria de agendamento. Esse valor pode ser definido como Alto, Médio ou Baixo.
Prioridade de SFIO REG_SZ A prioridade de E/S agendada. Esse valor pode ser definido como Ocioso, Baixo, Normal ou Alto. Este valor não é usado.

 

Observação

Para economizar energia, os aplicativos não devem definir a resolução do temporizador em todo o sistema como um valor pequeno, a menos que seja absolutamente necessário. Para obter mais informações, consulte Desempenho no Guia de Desenvolvedores do Windows 7.

 

Prioridades do thread

O MMCSS aumenta a prioridade dos threads que estão trabalhando em tarefas multimídia de alta prioridade.

O MMCSS determina a prioridade de um thread usando os seguintes fatores:

  • A prioridade base da tarefa.
  • O parâmetro Priority da função AvSetMmThreadPriority .
  • Se o aplicativo está em primeiro plano.
  • Quanto tempo de CPU está sendo consumido pelos threads em cada categoria.

O MMCSS define a prioridade dos threads do cliente dependendo da categoria de agendamento.

Categoria Prioridade Descrição
Alto 23-26 Esses threads são executados em uma prioridade de thread menor do que apenas determinadas tarefas no nível do sistema. Essa categoria foi projetada para tarefas de Áudio Pro.
Médio 16-22 Esses threads fazem parte do aplicativo que está em primeiro plano.
Baixo 8-15 Essa categoria contém o restante dos threads. Eles têm garantia de um percentual mínimo dos recursos da CPU, se necessário.
1-7 Esses threads usaram sua cota de recurso de CPU. Eles poderão continuar a ser executados se nenhum thread de baixa prioridade estiver pronto para execução.