Por que o Core Parking Bloqueia Cargas de Trabalho em um Único CCD em um PC Ryzen
🔍 WiseChecker

Por que o Core Parking Bloqueia Cargas de Trabalho em um Único CCD em um PC Ryzen

Você pode notar que um processador Ryzen com múltiplos Core Complex Dies executa um aplicativo exigente com desempenho inferior ao esperado. O sistema parece ignorar metade dos núcleos, deixando-os ociosos enquanto um CCD lida com toda a carga. Esse comportamento é causado pelo agendador de core parking do Windows 11, que bloqueia cargas de trabalho a um único CCD sob condições específicas. Este artigo explica por que o agendador estaciona núcleos em outros CCDs, como isso afeta o desempenho e o que você pode fazer para recuperar o desempenho completo de múltiplos CCDs.

Principais Conclusões: Core Parking em Sistemas Ryzen Multi-CCD

  • Agendador de core parking do Windows 11: Estaciona núcleos em CCDs não utilizados para economizar energia quando as cargas são baixas, mas falha em desestacioná-los sob cargas sustentadas de thread única.
  • Design dual-CCD do Ryzen 9 7950X e 9950X: Cada CCD tem seu próprio cache L3; a comunicação entre CCDs adiciona latência, então o agendador prefere um CCD para eficiência de cache.
  • Comando Powercfg para desabilitar core parking: Execute powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 0 em um Prompt de Comando elevado para forçar todos os núcleos a ficarem desestacionados.

ADVERTISEMENT

Por que o Windows 11 Estaciona Núcleos em um Único CCD

Core parking é um recurso de gerenciamento de energia introduzido no Windows 7 e refinado no Windows 11. O agendador marca processadores lógicos selecionados como estacionados, o que significa que o sistema operacional evita agendar threads neles. O objetivo é reduzir o consumo de energia e calor concentrando o trabalho em menos núcleos, permitindo que os núcleos restantes entrem em um estado de inatividade profunda.

Em um processador Ryzen com múltiplos CCDs, como o Ryzen 9 7950X ou 9950X, o agendador aplica core parking no nível do CCD. Cada CCD contém até oito núcleos e seu próprio cache L3 de 32 MB. Quando uma carga de trabalho não exige todos os núcleos, o agendador estaciona todo o segundo CCD. Isso mantém todas as threads em um CCD, evitando a penalidade de latência da comunicação entre CCDs. As transferências entre CCDs passam pelo interconnect Infinity Fabric, que adiciona aproximadamente 70–100 nanossegundos de latência em comparação com transferências intra-CCD.

O problema ocorre quando uma carga de trabalho é de thread única ou levemente threadada, mas exige alto desempenho sustentado. O agendador vê baixa utilização de núcleos em ambos os CCDs e estaciona o segundo CCD. Mesmo quando a carga de trabalho aumenta, o agendador pode não desestacionar imediatamente o segundo CCD. A carga de trabalho permanece bloqueada no primeiro CCD, fazendo com que o desempenho seja limitado à taxa de transferência de um único CCD.

O Papel do Driver CPPC2

O Windows 11 usa o driver Collaborative Processor Performance Control versão 2 para se comunicar com processadores Ryzen. O CPPC2 fornece dicas ao firmware sobre níveis de desempenho desejados. Quando o agendador estaciona um CCD, o CPPC2 reduz o orçamento de energia para aquele CCD, dificultando ainda mais o desestacionamento rápido. Essa interação pode causar um atraso de vários segundos antes que o segundo CCD fique disponível, o que é tempo suficiente para degradar o desempenho em cargas de trabalho intermitentes, como carregamento de níveis de jogos ou tarefas de compilação.

Passos para Forçar Todos os Núcleos Desestacionados em um PC Ryzen

Se você deseja evitar que o core parking bloqueie cargas de trabalho em um único CCD, pode desabilitar o core parking no plano de energia ativo. Isso mantém todos os núcleos disponíveis para agendamento, eliminando o bloqueio entre CCDs. Os passos a seguir exigem um Prompt de Comando elevado.

  1. Abra o Prompt de Comando como administrador
    Pressione a tecla Windows, digite cmd, clique com o botão direito em Prompt de Comando nos resultados da pesquisa e selecione Executar como administrador. Clique em Sim na janela de Controle de Conta de Usuário.
  2. Identifique o GUID do plano de energia ativo atual
    Digite powercfg /getactivescheme e pressione Enter. A saída mostra um GUID entre chaves, como {381b4222-f694-41f0-9685-ff5bb260df2e}. Copie este GUID para o próximo passo.
  3. Defina o índice de core parking como zero
    Digite o seguinte comando e pressione Enter:
    powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 0
    Isso define o limite de sobrecarga de desempenho do core parking como zero, efetivamente desabilitando o core parking.
  4. Aplique a alteração ao plano de energia ativo
    Digite powercfg /setactive scheme_current e pressione Enter. Isso aplica as configurações modificadas imediatamente.
  5. Verifique se o core parking está desabilitado
    Digite powercfg /query scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 e pressione Enter. A saída deve mostrar AC Power Setting Index: 0x00000000.

Após aplicar esta alteração, reinicie o PC. Abra o Gerenciador de Tarefas e vá para a guia Desempenho. Em CPU, você deve ver todos os processadores lógicos ativos mesmo sob cargas leves. Observe que desabilitar o core parking aumenta o consumo de energia em inatividade em 5–15 watts em um sistema Ryzen 9, então considere reverter a alteração para laptops com bateria.

ADVERTISEMENT

Se o Core Parking Ainda Bloquear Cargas de Trabalho em um CCD

Carga de Trabalho Permanece no CCD 0 Mesmo Após Desabilitar Core Parking

Desabilitar o core parking via powercfg não garante que o agendador distribuirá threads entre os CCDs. O agendador também usa uma política ciente de NUMA que prefere localidade de memória. Se o aplicativo não for codificado para alocar memória em vários nós NUMA, ele ainda pode ser executado inteiramente no CCD 0. Para forçar a distribuição de threads, defina a afinidade do processo manualmente no Gerenciador de Tarefas: clique com o botão direito no processo, selecione Definir afinidade e desmarque as caixas dos núcleos no CCD 0, deixando apenas os núcleos no CCD 1 selecionados. Isso força o processo a ser executado no segundo CCD.

Queda de Desempenho Após Desabilitar Core Parking

Alguns usuários relatam pontuações mais baixas em benchmarks após desabilitar o core parking. Isso acontece porque o agendador agora permite que threads migrem entre CCDs mais livremente, aumentando a latência entre CCDs. Para cargas de trabalho que se beneficiam da localidade de cache, como jogos com conjuntos de trabalho pequenos, manter threads em um único CCD é benéfico. Se você observar uma queda de desempenho, reative o core parking definindo o índice de volta para 100: powercfg -setacvalueindex scheme_current sub_processor 0cc5b647-c1df-4637-891a-dec35c318583 100 e aplique o esquema novamente.

Core Parking Reativado Após Atualização do Windows

As atualizações cumulativas do Windows 11 às vezes redefinem as configurações do plano de energia para os padrões. Após uma atualização importante, verifique o índice de core parking executando o comando de consulta do passo 5. Se o valor mudou para 100, execute novamente o comando set. Para automatizar isso, crie uma tarefa agendada que execute o comando powercfg na inicialização do sistema.

Core Parking Desabilitado vs Padrão: Comparação de Desempenho e Energia

Item Core Parking Desabilitado Core Parking Padrão
Disponibilidade de núcleos Todos os núcleos desestacionados o tempo todo Segundo CCD estacionado sob carga leve
Latência de thread única Maior devido à possível migração entre CCDs Menor devido à localidade de cache em um CCD
Taxa de transferência multi-thread Maior porque todos os núcleos estão imediatamente disponíveis Menor até o agendador desestacionar o segundo CCD
Consumo de energia em inatividade 5–15 watts maior no Ryzen 9 Menor, segundo CCD entra em sono profundo
Melhor caso de uso Renderização, compilação, codificação de vídeo Jogos, aplicativos de escritório, navegação web

O agendador de core parking é um trade-off entre eficiência energética e capacidade de resposta multi-thread. Para cargas de trabalho que se beneficiam do acesso imediato a todos os núcleos, desabilitar o core parking remove o bloqueio de um único CCD. Para cargas de trabalho sensíveis à latência entre CCDs, o comportamento padrão é preferível. Use o comando powercfg para alternar o core parking com base na tarefa em questão e monitore o desempenho com o Gerenciador de Tarefas ou HWInfo para confirmar o efeito.

ADVERTISEMENT