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 ele está trabalhando nessa tarefa.
Para obter um exemplo de um programa que usa o MMCSS, consulte Exclusive-Mode Streams.
Windows Server 2003 e Windows XP: 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 da CPU que devem ser garantidos para tarefas de baixa prioridade. Por exemplo, se esse valor for 20, 20% de 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 de 0 também é tratado como 10.
A chave também contém uma subchave chamada Tasks que contém a lista de tarefas. Por padrão, o Windows dá suporte às seguintes tarefas:
- Audio
- Capture
- de Distribuição
- Games
- de Reprodução
- de áudio do Pro
- do Gerenciador de Janelas do
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 | Formato | Valores possíveis |
---|---|---|
de 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. |
de taxa de 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 ingressar nessa 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. |
de prioridade de GPU | REG_DWORD | A prioridade da GPU. O intervalo de valores é de 0 a 31. Essa prioridade ainda não foi usada. |
de prioridade | REG_DWORD | A prioridade da tarefa. O intervalo de valores é de 1 (baixo) a 8 (alto). Para tarefas com uma categoria de agendamento de Alta, esse valor é sempre tratado como 2. |
de categoria de agendamento | REG_SZ | A categoria de agendamento. Esse valor pode ser definido como Alto, Médio ou Baixo. |
de prioridade de SFIO | REG_SZ | A prioridade de E/S agendada. Esse valor pode ser definido como Ocioso, Baixo, Normal ou Alto. Esse valor não é usado. |
Nota
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 de desempenho no guia de desenvolvedores do Windows 7.
Prioridades de 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çãoAvSetMmThreadPriority.
- 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édia | 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 ser executado. |