Serviço de Agendador de Classes Multimédia
O serviço MMCSS (Multimedia Class Scheduler) permite que os aplicativos multimídia garantam que seu processamento sensível ao tempo receba acesso prioritário aos recursos da CPU. Este serviço permite que as aplicações multimédia utilizem o máximo possível da CPU sem negar recursos da CPU a aplicações de prioridade mais baixa.
O MMCSS usa informações armazenadas no Registro para identificar tarefas suportadas e determinar a prioridade relativa dos threads que executam essas tarefas. Cada thread que está executando trabalho relacionado a uma tarefa específica chama o AvSetMmMaxThreadCharacteristics ou função de AvSetMmThreadCharacteristics para informar ao MMCSS que está trabalhando nessa tarefa.
Para obter um exemplo de um programa que usa 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 a porcentagem de recursos da CPU que devem ser garantidos para tarefas de baixa prioridade. Por exemplo, se esse valor for 20, 20% dos recursos da CPU serão reservados para tarefas de baixa prioridade. Observe que os valores que não são uniformemente divisíveis 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 Tarefas que contém a lista de tarefas. Por predefinição, o Windows suporta as seguintes tarefas:
- Audio
- Capture
- Distribuição
- Jogos
- Reprodução
- Pro Audio
- Window Manager
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. |
Apenas antecedentes | REG_SZ | Indica se esta é 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 de fundo. O intervalo de valores é 1-8. |
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 se juntar a 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. |
de prioridade da GPU | REG_DWORD | A prioridade da GPU. O intervalo de valores é 0-31. Esta prioridade ainda não foi utilizada. |
Prioridade | REG_DWORD | A prioridade da tarefa. O intervalo de valores é de 1 (baixo) a 8 (alto). Para tarefas com um de Categoria de Agendamento de de Alto, 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 SFIO | REG_SZ | A prioridade de E/S agendada. Esse valor pode ser definido como Ocioso, Baixo, Normal ou Alto. Este valor não é utilizado. |
Observação
Para economizar energia, os aplicativos não devem definir a resolução do temporizador em todo o sistema para um pequeno valor, a menos que seja absolutamente necessário. Para obter mais informações, consulte de desempenho no Windows 7 Developers Guide.
Prioridades do Thread
O MMCSS aumenta a prioridade de 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 pedido está em primeiro plano.
- Quanto tempo de CPU está sendo consumido pelos threads em cada categoria.
O MMCSS define a prioridade dos threads de cliente dependendo de sua categoria de agendamento.
Categoria | Prioridade | Descrição |
---|---|---|
Alto | 23-26 | Esses threads são executados em uma prioridade de thread que é menor do que apenas determinadas tarefas no nível do sistema. Esta categoria foi concebida para tarefas Pro Audio. |
Média | 16-22 | Esses threads fazem parte do aplicativo que está em primeiro plano. |
Baixo | 8-15 | Esta categoria contém o restante dos threads. Eles são garantidos uma porcentagem mínima dos recursos da CPU, se necessário. |
1-7 | Esses threads usaram sua cota de recurso de CPU. Eles podem continuar a ser executados se nenhum thread de baixa prioridade estiver pronto para ser executado. |