Enable all CPU cores on Windows 10 and 11

Windows 10 and Windows 11 already use every CPU core by default, so enabling all cores means removing a boot limit someone set with numproc or onecpu, or a core disabled in firmware.

This guide covers removing those limits, counting cores and logical processors, setting a core limit at boot on purpose, CPU affinity for single apps, and fixes when Windows shows fewer cores than the CPU has.

Enable all CPU cores on Windows 10 and 11
After a numproc or onecpu limit is removed, Logical processors under Performance > CPU should match the processor's specification. (Image: Microsoft)

How to enable all cores on Windows

A processor limit lives in the boot configuration data (BCD) store. Removing the numproc and onecpu values returns Windows to its default of using every processor. You need an administrator account.

  1. Select Start, type cmd, right-click Command Prompt and select Run as administrator. Select Yes at the User Account Control prompt.
  2. Run bcdedit /enum {current} and look for a numproc or onecpu line in the output.
  3. If numproc is listed, run bcdedit /deletevalue {current} numproc.
  4. If onecpu is listed, run bcdedit /deletevalue {current} onecpu.
  5. Restart the PC.
  6. Press Ctrl + Shift + Esc, select Performance > CPU, and check that Logical processors matches the processor's specification.

Run these in Command Prompt. In PowerShell, quote the identifier as '{current}', because PowerShell reads bare braces as a script block. If neither line was listed, Windows was already using all cores. A lower count than the CPU's specification then points to firmware settings or a processor group limit, covered in the troubleshooting section.

Find the number of available CPUs and cores on Windows

Task Manager shows both counts on Windows 11 and Windows 10. Cores are physical; logical processors include the extra threads from hyper-threading.

  1. Right-click Start and select Task Manager, or press Ctrl + Shift + Esc.
  2. Select More details if Task Manager opens in its compact view.
  3. Select Performance in the left pane, then select CPU.
  4. Read the values next to Cores: and Logical processors: below the graph.
  5. To see the load on each logical processor, right-click the graph and select Change graph to > Logical processors.

With the per-processor graph on, each logical processor gets its own small graph. Uneven CPU utilization across them is normal; the scheduler moves threads between processors as work arrives. If every core sits near 100 percent under load, it is also worth a look at CPU temperature on Windows 11.

Find the number of CPU cores: Task Manager compact view with More details
Task Manager can open in this compact view; select More details before opening Performance and then CPU. (Image: Microsoft)

Check CPU cores and logical processors with PowerShell

The Win32_Processor class reports physical cores, cores enabled in firmware, and logical processors for each CPU socket, which settles whether a core is switched off.

Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfEnabledCore, NumberOfLogicalProcessors, ThreadCount

Lists one row per physical processor. NumberOfCores is the core count the firmware reports, NumberOfEnabledCore is how many of those cores are enabled, and NumberOfLogicalProcessors is what Windows can schedule on that processor.

You should see: NumberOfEnabledCore equals NumberOfCores, and NumberOfLogicalProcessors is equal to or higher than NumberOfCores. A higher logical count means hyper-threading is on.

NumberOfEnabledCore is supported from Windows 10 and Windows Server 2016 onward. For the whole PC, Get-CimInstance Win32_ComputerSystem | Select-Object NumberOfProcessors, NumberOfLogicalProcessors returns the socket count and the total logical processors.

Check CPU cores with PowerShell: Win32_Processor NumberOfCores and NumberOfEnabledCore properties
When NumberOfEnabledCore reads lower than NumberOfCores, cores are switched off in firmware rather than in Windows. (Image: Microsoft)

CPU cores vs logical processors in Windows

Term What it means Where Windows shows it
Processor (socket) A physical CPU package; most desktops and laptops have one NumberOfProcessors in Win32_ComputerSystem
Core A physical execution unit inside the CPU Task Manager Cores, NumberOfCores
Logical processor What Windows schedules work on; two per core when hyper-threading is on Task Manager Logical processors, NumberOfLogicalProcessors
Enabled core A core the firmware has left switched on NumberOfEnabledCore
Processor group A set of up to 64 logical processors the OS schedules as one unit Only matters on PCs with more than 64 logical processors
Processor affinity The set of logical processors a process is allowed to run on; by default, all of them ProcessorAffinity on a process in PowerShell
CPU cores vs logical processors: Task Manager per-processor graphs for 8 threads
With hyper-threading on, this 4-core CPU shows 8 logical processors, each drawn as its own small graph. (Image: Microsoft)

Change the number of cores used at Windows boot

Limiting Windows to fewer processors is a testing tool, for example to reproduce a fault on a smaller machine. It never makes a normal PC faster. Microsoft warns that changing some boot entry options with BCDEdit can make a computer inoperable, so note the command to undo it before you start.

  1. Open Command Prompt with Run as administrator.
  2. Run bcdedit /set {current} numproc 4, replacing 4 with the number of logical processors Windows should use.
  3. To force Windows onto only the boot CPU instead, run bcdedit /set {current} onecpu on.
  4. Restart the PC and check Logical processors in Task Manager.
  5. To go back to all cores, run bcdedit /deletevalue {current} numproc and bcdedit /deletevalue {current} onecpu, then restart.

The Boot tab of System Configuration (press Windows key + R, type msconfig, press Enter) is Microsoft's graphical editor for the same boot settings. If a processor limit was set there, bcdedit /enum {current} shows it as numproc, and deleting it with the steps above clears it.

Change the number of cores at boot in msconfig BOOT Advanced Options
A processor limit set here on the Boot tab appears as numproc in bcdedit, and deleting numproc clears it. (Image: Microsoft Q&A)

How to restrict app to specific cores on Windows (CPU affinity)

Affinity limits one program to chosen logical processors without changing the rest of Windows. The start command in Command Prompt applies an affinity mask, written in hexadecimal, when it launches the program.

  1. Press Windows key + R, type cmd and press Enter.
  2. Work out the mask from the table below: each bit is one logical processor, starting with bit 0 for the first.
  3. Run start /affinity 3 notepad.exe to start Notepad on the first two logical processors only.
  4. Replace notepad.exe with the full path to your program in quotes if it is not on the PATH, and add an empty title first: start "" /affinity 3 "C:\Path\App.exe".
  5. Close the program to end the affinity; the next normal launch uses all processors again.

CPU affinity mask values for start /affinity

Mask (hex) Binary Logical processors allowed
1 0001 1
3 0011 1 and 2
7 0111 1, 2 and 3
9 1001 1 and 4
F 1111 1 to 4
7F 0111 1111 1 to 7
FF 1111 1111 1 to 8

The default affinity for a process is 2^n – 1, where n is the number of processors, which is every bit set. A value of 0 hands the choice back to the Windows scheduler.

Set CPU affinity for a running process with PowerShell

For a program that is already open, change the ProcessorAffinity property of its process. Run PowerShell as administrator for processes started by another account.

$p = Get-Process -Name notepad; $p.ProcessorAffinity = 3

Get-Process returns the running Notepad process, and setting ProcessorAffinity to 3 (binary 0011) lets its threads run only on logical processors 1 and 2. Use the decimal value of your mask, or a hex literal such as 0xF.

You should see: Running (Get-Process -Name notepad).ProcessorAffinity returns 3. The setting lasts until the process closes.

If several processes share the name, Get-Process returns them all; pick one with Get-Process -Id <PID> instead. The process ID is in the PID column of Task Manager's Details tab.

Windows not showing all CPU cores

Task Manager shows fewer logical processors than the CPU specification

A numproc limit is set in the boot configuration.

  1. Run bcdedit /enum {current} in Command Prompt opened with Run as administrator.
  2. If numproc appears, run bcdedit /deletevalue {current} numproc.
  3. Restart and check Task Manager again.

Windows uses only one CPU core

The onecpu boot option forces Windows onto the boot CPU.

  1. Run bcdedit /enum {current} and look for onecpu.
  2. Run bcdedit /deletevalue {current} onecpu.
  3. Restart the PC.

NumberOfEnabledCore is lower than NumberOfCores

Cores are switched off in the PC's UEFI or BIOS firmware, not in Windows.

  1. Restart into the firmware setup using the key or method in your PC or motherboard maker's manual.
  2. Find the CPU or processor configuration settings the manufacturer documents and set the active core count to all cores.
  3. Save, restart, and run the Win32_Processor command again.

Task Manager Cores is half of Logical processors

Hyper-threading is on, so each core shows as two logical processors. This is normal.

  1. Compare NumberOfCores with NumberOfLogicalProcessors in PowerShell.
  2. Leave it as it is; no core is disabled.

Only 64 processors used, or %NUMBER_OF_PROCESSORS% too low on a large workstation

PCs with more than 64 logical processors split them into processor groups, and before Windows 11 each process ran in one group by default.

  1. Update to Windows 11: processes and their threads span all processor groups by default.
  2. On Windows 11 version 22H2 and later, %NUMBER_OF_PROCESSORS% reports the total across all groups.
  3. On Windows 10, the application has to set thread affinity to other groups itself.

Enable all CPU cores FAQ

Does Windows use all CPU cores by default?

Yes. Windows 10 and Windows 11 schedule work on every logical processor unless a boot option such as numproc or onecpu limits them, or the firmware disables cores. A process's default affinity includes every processor.

Will enabling all cores make my PC faster?

Only if cores were disabled before. On a PC with no numproc, onecpu or firmware limit, Windows is already using every core, and there is nothing further to switch on. Removing an existing limit does restore the missing processors.

How do I check how many cores my CPU has in Windows 11?

Press Ctrl + Shift + Esc, select Performance, then CPU. The Cores and Logical processors values appear under the graph. In PowerShell, Get-CimInstance Win32_Processor returns NumberOfCores and NumberOfLogicalProcessors.

What is the difference between cores and logical processors?

Cores are physical execution units in the CPU. Logical processors are what Windows schedules on; with hyper-threading each core appears as two. Microsoft's example: two hyper-threaded processors give NumberOfCores 2 and NumberOfLogicalProcessors 4.

How do I undo a processor limit set with bcdedit?

Open Command Prompt as administrator, run bcdedit /deletevalue {current} numproc, and also bcdedit /deletevalue {current} onecpu if that option was set. Restart the PC so Windows starts with every processor again.

How do I make a program use only certain cores?

Start it with start /affinity and a hex mask in Command Prompt, such as start /affinity 3 app.exe for the first two logical processors. For a running program, set its ProcessorAffinity property from PowerShell. Both last until the program closes.

Why does Windows 10 only use 64 of my logical processors?

Windows groups logical processors in sets of up to 64, and before Windows 11 each process ran in a single group by default. Windows 11 lets processes span all groups, or applications on Windows 10 must assign threads to other groups.

Philip Celasco

Philip is a Texas-based technology writer and IT administrator at Techdows.com with more than 10 years of experience creating practical content for everyday users and professionals. He specializes in web browsers, particularly Chromium-based platforms such as Google Chrome, Microsoft Edge, Brave, and Opera. Through his work as an IT administrator, Philip has hands-on experience managing devices, configuring browser policies, troubleshooting software and network issues, and helping people resolve problems that affect productivity and security. His articles are based on practical testing and real-world technical experience. He covers browser settings, extensions, performance problems, privacy controls, security features, and Windows troubleshooting. Outside work, Philip enjoys the quieter side of life in Texas and stepping away from the screen when he can. He has two kids, two cats and loves to play golf with his mother during the weekends.

Leave a Reply

Your email address will not be published. Required fields are marked *