How to Disable CPU Cores or Limit Apps to Specific Cores in Windows

How to disable CPU cores guide
There are plenty of reasons you might want an application — or Windows itself — to run on fewer cores than your CPU actually has:

  • Limit resource usage. Prevent a single process from hogging every core on a multi-tasking system.
  • Compatibility. Some older software misbehaves, crashes, or desyncs on modern multi-core, multi-thread systems and only runs reliably when pinned to one or two cores.
  • Performance — specifically on high-core-count Xeons. Chips like the Xeon E5 v3/v4 feature high core counts paired with a fixed power budget. Under load, the CPU has to spread that budget across every active core, so all-core clocks end up lower than the chip is actually capable of. Disable a chunk of the cores, and the remaining ones get a bigger share of the power budget — often letting them boost noticeably higher. This is a common trick on LGA2011-3 boards when you’re running something single- or lightly-threaded and don’t need all 18-22 cores anyway.

Disabling cores in BIOS/UEFI

Disabling CPU cores in Aptio BIOS setup
This method disables cores at the hardware level. It’s guaranteed to work, though less convenient since re-enabling them requires entering the BIOS and rebooting.

On Chinese LGA2011-3 boards, the setting usually lives at:
IntelRCSetup > Processor Configuration > Pre-Socket Configuration > CPU Socket 0 Configuration > Cores Enabled

On LGA2011 boards:
Advanced > CPU Configuration > Active Processor Cores

On other sockets and platforms, the wording varies slightly, but the option is typically located under the CPU or Processor Configuration menu.

Disabling cores via msconfig

Windows has a built-in way to cap the number of active cores without touching the BIOS at all:

  1. Press Win + R, type msconfig, and hit Enter.
  2. In System Configuration, open the Boot tab.System Configuration Boot tab
  3. Click Advanced options.
  4. Check the “Number of processors” box and select a value from the drop-down menu. Keep in mind that with Hyper-Threading enabled, Windows sees each physical core as two logical processors, so this count is logical cores, not physical ones.Boot Advanced Options Number of processors setting
  5. Back in the main System Configuration window, check “Make all boot settings permanent” if you don’t want to repeat this process each time. Click Apply, then OK.
  6. Reboot.

Faster way to toggle this: bcdedit

The msconfig GUI is really just a front-end for a boot configuration value. You can set (and unset) the same limit directly from an elevated Command Prompt or PowerShell, which is much quicker if you switch core counts often:

bcdedit /set numproc 4 — limits Windows to 4 logical processors on next boot

bcdedit /deletevalue numproc — removes the limit, all cores come back

Save each line as its own .bat file (“Run as administrator”) and you’ve got one-click scripts to cap or restore your core count — no digging through menus, no BIOS reboot loop. A reboot is still required either way, since this is a boot-time setting.

Limiting how many cores a program can use

This approach doesn’t disable any cores — they all keep running — but a specific application is restricted to using only some of them. It won’t necessarily affect performance as dramatically as fully disabling cores, but it doesn’t require a reboot and can be applied on the fly.

There are three ways to do it: Task Manager, the command line, or a shortcut.

Using Task Manager

  1. Open Task Manager (Ctrl + Alt + Delete or Ctrl + Shift + Esc).
  2. Go to the Processes tab (Windows 7) or Details tab (Windows 8 and newer).
  3. Right-click the process you want to restrict and choose Set affinity.Set affinity option in Task Manager
  4. Uncheck the logical processors you don’t want the program to use and click OK. The change applies immediately.Processor affinity selection dialog

The downside: this has to be redone every time you relaunch the app, since Windows doesn’t remember affinity settings between runs.

Using the command line or a shortcut (CPU affinity)

The same thing can be done from the command line — and baked into a shortcut so you don’t have to repeat it manually. Since Windows 7, the start command supports an /affinity switch.

Example — launch Notepad++ restricted to a specific set of cores:

start "Notepad++" /affinity 5555 "C:\Program Files\Notepad++\notepad++.exe"

The value right after /affinity5555 in this example — is the affinity mask: a hexadecimal number that tells Windows exactly which logical cores the process is allowed to use.

How the affinity mask works

Write out your logical cores as a string of binary digits, one bit per logical core, where 1 means “allowed” and 0 means “not allowed.” The rightmost bit is logical core 0, the leftmost bit is the highest-numbered core.

Take an 8-core / 16-thread CPU as an example. All cores enabled looks like this:

1111111111111111

To use only the physical cores and skip their Hyper-Threading siblings, you’d alternate:

0101010101010101

Convert that binary string to hexadecimal (any binary-to-hex converter will do it instantly) and you get 5555 — the exact value used in the command above.

CPU Affinity Mask Table (Cores 0–15)

Cores Used Binary Mask Decimal (Affinity Mask) Hex (for /affinity)
Core 0 only 0000 0000 0000 0001 1 1
Core 1 only 0000 0000 0000 0010 2 2
Cores 0–1 0000 0000 0000 0011 3 3
Cores 0–2 0000 0000 0000 0111 7 7
Cores 0–3 0000 0000 0000 1111 15 F
Cores 0–4 0000 0000 0001 1111 31 1F
Cores 0–5 0000 0000 0011 1111 63 3F
Cores 0–6 0000 0000 0111 1111 127 7F
Cores 0–7 0000 0000 1111 1111 255 FF
Cores 0–8 0000 0001 1111 1111 511 1FF
Cores 0–9 0000 0011 1111 1111 1023 3FF
Cores 0–10 0000 0111 1111 1111 2047 7FF
Cores 0–11 0000 1111 1111 1111 4095 FFF
Cores 0–12 0001 1111 1111 1111 8191 1FFF
Cores 0–13 0011 1111 1111 1111 16383 3FFF
Cores 0–14 0111 1111 1111 1111 32767 7FFF
Cores 0–15 (All 16) 1111 1111 1111 1111 65535 FFFF

Quick-reference table

To save you from doing the manual conversion, here is a quick reference table for common thread counts:

Logical threads Physical cores All threads enabled (hex) Physical cores only / HT off (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

Once you have the mask, use it either directly from Win + R, from a Command Prompt, or bake it into a desktop shortcut:

  1. Right-click the desktop, choose New > Shortcut.
  2. In the location field, paste the same command:
    cmd.exe /c start "Notepad++" /affinity 5555 "C:\Program Files\Notepad++\notepad++.exe"

Every launch from that shortcut will apply the affinity mask automatically — no need to set it manually in Task Manager each time.

Bonus: setting affinity from PowerShell

If you prefer using PowerShell over a standard command shortcut, you can set the affinity mask on a process when launching it or while it’s already running:

$p = Start-Process "C:\Program Files\Notepad++\notepad++.exe" -PassThru
$p.ProcessorAffinity = 0x5555

Prefer not to do this by hand? There’s dedicated software for it.

Tools like Process Lasso handle all of the above without shortcuts, scripts, or re-doing anything after a reboot. You set an affinity mask (and, optionally, a priority or power profile) for a specific executable once, and it’s applied automatically every single time that program runs — including after Windows updates or restarts. It also has features that go beyond what you can do manually, like ProBalance, which dynamically deprioritizes CPU-hogging background processes without touching the ones you’re actively using. It’s free for personal use, with a paid Pro tier for extra automation and cloud profile sync.

Bonus: doing the same thing on Linux

If you’re running one of these Xeons under Linux instead of Windows, the equivalent tools are:

  • Per-process, on the fly: taskset -c 0,2,4,6 ./your_program pins a program to the listed core numbers, the same idea as the Windows affinity mask.
  • System-wide, at boot: add maxcpus=8 (or nr_cpus=8) to the kernel boot parameters to cap the number of cores the kernel brings online — the Linux equivalent of the msconfig/bcdedit trick above.

FAQ

Does a CPU affinity setting survive closing and reopening the program?
No. Affinity set through Task Manager or a one-off command only applies to that running process. Use a shortcut or script (as above) if you want it applied automatically every time you launch the app — or use dedicated software like Process Lasso, which does this natively.

Will disabling cores actually raise my clock speed?
On CPUs with per-core turbo bins — which covers most Xeon E5 v2/v3/v4 chips — yes, it usually will, since the remaining active cores get a larger share of the power budget. How much you gain depends on the specific SKU and your motherboard’s power limits, so it’s worth comparing clocks before and after under load with a monitoring tool.

Do I need to reboot every time I want to change the core count?
Only for the BIOS and msconfig/bcdedit methods, since both are boot-time settings. The Task Manager / affinity mask method applies instantly, with no reboot.