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. |