
Índice
- Limitar o uso de recursos. Evitar que um único processo monopolize todos os núcleos em um sistema multitarefa.
- Compatibilidade. Alguns softwares mais antigos se comportam mal, travam ou dessincronizam em sistemas modernos multi-core e multi-thread, funcionando de forma confiável apenas quando fixados em um ou dois núcleos.
- Desempenho — principalmente em Xeons com muitos núcleos. Chips como o Xeon E5 v3/v4 têm alta contagem de núcleos combinada com um orçamento de energia fixo. Sob carga, a CPU precisa distribuir esse orçamento entre todos os núcleos ativos, então os clocks com todos os núcleos ativos acabam mais baixos do que o chip é realmente capaz de atingir. Ao desabilitar uma parte dos núcleos, os que restam recebem uma fatia maior do orçamento de energia — muitas vezes permitindo um boost bem mais alto. Esse é um truque comum em placas LGA2011-3 quando você está rodando algo single-thread ou pouco multithreaded e não precisa de todos esses 18-22 núcleos.
Desabilitando núcleos na BIOS/UEFI

Esse método desabilita os núcleos no nível do hardware. É garantido que funcione, embora seja menos prático, já que reativá-los exige entrar na BIOS e reiniciar.
Em placas chinesas LGA2011-3, essa configuração geralmente fica em:
IntelRCSetup > Processor Configuration > Pre-Socket Configuration > CPU Socket 0 Configuration > Cores Enabled
Em placas LGA2011:
Advanced > CPU Configuration > Active Processor Cores
Em outros soquetes e plataformas, a nomenclatura varia um pouco, mas a opção geralmente fica no menu de CPU ou Processor Configuration.
Desabilitando núcleos pelo msconfig
O Windows tem uma forma nativa de limitar o número de núcleos ativos sem mexer na BIOS:
- Pressione Win + R, digite
msconfige pressione Enter. - Em Configuração do Sistema, abra a aba Inicialização do Sistema (Boot).

- Clique em Opções avançadas.
- Marque a opção “Número de processadores” e selecione um valor no menu suspenso. Tenha em mente que, com o Hyper-Threading habilitado, o Windows enxerga cada núcleo físico como dois processadores lógicos, então essa contagem é de núcleos lógicos, não físicos.

- De volta à janela principal de Configuração do Sistema, marque “Tornar todas as configurações de inicialização permanentes” se você não quiser repetir esse processo toda vez. Clique em Aplicar e depois em OK.
- Reinicie.
Forma mais rápida de alternar isso: bcdedit
A interface do msconfig é, na prática, apenas uma fachada para um valor de configuração de boot. Você pode definir (e remover) o mesmo limite diretamente em um Prompt de Comando ou PowerShell com privilégios elevados, o que é bem mais rápido se você costuma alternar a contagem de núcleos com frequência:
bcdedit /set numproc 4 — limita o Windows a 4 processadores lógicos na próxima inicialização.
bcdedit /deletevalue numproc — remove o limite, todos os núcleos voltam.
Salve cada linha como um arquivo .bat próprio (“Executar como administrador”) e você terá scripts de um clique para limitar ou restaurar a sua contagem de núcleos — sem precisar navegar por menus nem ter que reiniciar o PC para entrar na BIOS. De qualquer forma, uma reinicialização ainda é necessária, já que essa é uma configuração aplicada no momento do boot.
Limitando quantos núcleos um programa pode usar
Isso não reduz o consumo do chip como o método da BIOS, mas tem uma grande vantagem: funciona na hora, sem precisar reiniciar o PC. Todos os núcleos continuam ativos — apenas um aplicativo específico fica restrito a usar alguns deles.
Existem três formas de fazer isso: pelo Gerenciador de Tarefas, pela linha de comando, ou por um atalho.
Usando o Gerenciador de Tarefas
- Abra o Gerenciador de Tarefas (Ctrl + Alt + Delete ou Ctrl + Shift + Esc).
- Vá até a aba Processos (Windows 7) ou Detalhes (Windows 8 e mais recentes).
- Clique com o botão direito no processo que você quer restringir e escolha Definir afinidade.

- Desmarque os processadores lógicos que você não quer que o programa use e clique em OK. A alteração é aplicada imediatamente.

A desvantagem: isso precisa ser refeito toda vez que você reabrir o aplicativo, já que o Windows não guarda as configurações de afinidade entre execuções.
Usando a linha de comando ou um atalho (afinidade de CPU)
A mesma coisa pode ser feita pela linha de comando — e embutida em um atalho para você não precisar repetir manualmente. Desde o Windows 7, o comando start suporta um parâmetro /affinity.
Exemplo — iniciar o Notepad++ restrito a um conjunto específico de núcleos:
start "Notepad++" /affinity 5555 "C:\Program Files\Notepad++\notepad++.exe"
O valor após o /affinity — 5555 nesse exemplo — é a máscara de afinidade: um número hexadecimal que informa ao Windows exatamente quais núcleos lógicos o processo pode usar.
Como a máscara de afinidade funciona
Escreva os seus núcleos lógicos como uma sequência de dígitos binários, um bit por núcleo lógico, onde 1 significa “permitido” e 0 significa “não permitido.” O bit mais à direita é o núcleo lógico 0, e o bit mais à esquerda é o núcleo de número mais alto.
Considerando como exemplo uma CPU de 8 núcleos / 16 threads, com todos os núcleos habilitados fica assim:
1111111111111111
Para usar apenas os núcleos físicos e ignorar os threads secundários do Hyper-Threading, você alternaria:
0101010101010101
Converta essa sequência binária para hexadecimal (qualquer conversor de binário para hexadecimal faz isso na hora) e você obtém 5555 — exatamente o valor usado no comando acima.
Tabela de máscaras de afinidade de CPU (núcleos 0–15)
| Núcleos usados | Máscara binária | Decimal (máscara de afinidade) | Hex (para /affinity) |
|---|---|---|---|
| Somente núcleo 0 | 0000 0000 0000 0001 | 1 | 1 |
| Somente núcleo 1 | 0000 0000 0000 0010 | 2 | 2 |
| Núcleos 0–1 | 0000 0000 0000 0011 | 3 | 3 |
| Núcleos 0–2 | 0000 0000 0000 0111 | 7 | 7 |
| Núcleos 0–3 | 0000 0000 0000 1111 | 15 | F |
| Núcleos 0–4 | 0000 0000 0001 1111 | 31 | 1F |
| Núcleos 0–5 | 0000 0000 0011 1111 | 63 | 3F |
| Núcleos 0–6 | 0000 0000 0111 1111 | 127 | 7F |
| Núcleos 0–7 | 0000 0000 1111 1111 | 255 | FF |
| Núcleos 0–8 | 0000 0001 1111 1111 | 511 | 1FF |
| Núcleos 0–9 | 0000 0011 1111 1111 | 1023 | 3FF |
| Núcleos 0–10 | 0000 0111 1111 1111 | 2047 | 7FF |
| Núcleos 0–11 | 0000 1111 1111 1111 | 4095 | FFF |
| Núcleos 0–12 | 0001 1111 1111 1111 | 8191 | 1FFF |
| Núcleos 0–13 | 0011 1111 1111 1111 | 16383 | 3FFF |
| Núcleos 0–14 | 0111 1111 1111 1111 | 32767 | 7FFF |
| Núcleos 0–15 (todos os 16) | 1111 1111 1111 1111 | 65535 | FFFF |
Tabela de referência rápida
Para poupar você da conversão manual, aqui está uma tabela de referência rápida para contagens de threads comuns:
| Threads lógicos | Núcleos físicos | Todos os threads habilitados (hex) | Somente núcleos físicos / HT desligado (hex) |
|---|---|---|---|
| 8 | 4 | FF | 55 |
| 12 | 6 | FFF | 555 |
| 16 | 8 | FFFF | 5555 |
| 20 | 10 | FFFFF | 55555 |
| 24 | 12 | FFFFFF | 555555 |
| 28 | 14 | FFFFFFF | 5555555 |
| 32 | 16 | FFFFFFFF | 55555555 |
| 36 | 18 | FFFFFFFFF | 555555555 |
| 44 | 22 | FFFFFFFFFFF | 55555555555 |
Depois de ter a máscara, use-a diretamente pelo Win + R, por um Prompt de Comando, ou embuta-a em um atalho na área de trabalho:
- Clique com o botão direito na área de trabalho e escolha Novo > Atalho.
- No campo de localização, cole o mesmo comando:
cmd.exe /c start "Notepad++" /affinity 5555 "C:\Program Files\Notepad++\notepad++.exe"
Toda vez que você abrir o programa por esse atalho, a máscara de afinidade será aplicada automaticamente — sem precisar defini-la manualmente no Gerenciador de Tarefas toda vez.
Bônus: definindo a afinidade pelo PowerShell
Se você prefere usar o PowerShell em vez de um atalho de comando padrão, é possível definir a máscara de afinidade de um processo já ao iniciá-lo ou enquanto ele já está em execução:
$p = Start-Process "C:\Program Files\Notepad++\notepad++.exe" -PassThru
$p.ProcessorAffinity = 0x5555
Prefere não fazer isso manualmente? Existe software dedicado para isso.
Programas como o Process Lasso automatizam todo esse processo. Você define a afinidade (e até a prioridade) para um executável uma única vez, e a regra é mantida mesmo após reiniciar o PC. Ele ainda conta com recursos como o ProBalance, que reduz a prioridade de processos em segundo plano para evitar engasgos no sistema, sem afetar os programas que você está usando ativamente. É gratuito para uso pessoal, com um plano Pro pago para automação extra e sincronização de perfis na nuvem.
Bônus: fazendo a mesma coisa no Linux
Se você estiver rodando um desses Xeons no Linux em vez do Windows, as ferramentas equivalentes são:
- Por processo, na hora:
taskset -c 0,2,4,6 ./seu_programafixa um programa nos números de núcleo listados, o mesmo princípio da máscara de afinidade do Windows. - Para o sistema todo, no boot: adicione
maxcpus=8(ounr_cpus=8) aos parâmetros de boot do kernel para limitar o número de núcleos que o kernel ativa — o equivalente no Linux do truque com msconfig/bcdedit visto acima.
Perguntas frequentes
Uma configuração de afinidade de CPU permanece ao fechar e reabrir o programa?
Não. A afinidade definida pelo Gerenciador de Tarefas ou por um comando único vale apenas para aquele processo em execução naquele momento. Use um atalho ou script (como mostrado acima) se quiser que ela seja aplicada automaticamente toda vez que você abrir o aplicativo — ou use um software dedicado como o Process Lasso, que faz isso nativamente.
Desabilitar núcleos realmente aumenta a minha frequência de clock?
Em CPUs com faixas de turbo por núcleo — o que cobre a maioria dos chips Xeon E5 v2/v3/v4 —, sim, geralmente aumenta, já que os núcleos ativos restantes recebem uma fatia maior do orçamento de energia. O ganho depende do SKU específico e dos limites de energia da sua placa-mãe, então vale a pena comparar os clocks antes e depois sob carga usando uma ferramenta de monitoramento.
Preciso reiniciar toda vez que quiser mudar a contagem de núcleos?
Somente nos métodos via BIOS e msconfig/bcdedit, já que ambos são configurações aplicadas no momento do boot. O método do Gerenciador de Tarefas / máscara de afinidade é aplicado instantaneamente, sem necessidade de reiniciar.