Pro Tip: Assign specific processor cores for certain apps in Windows 10

For the last few weeks, Windows Central has been documenting and explaining various tips for Windows 10 meant for novices and those new to Windows. Today, we are taking a look at a more advanced tip that some enthusiasts may like. Once again, this is a carry-over from previous iterations of Windows so it is not new, but like 'God Mode' many people may not know about it or have simply forgotten the feature.

In Windows 10 and under an administrative account you can specify which cores (of your presumably multi-core processor) gets used for explicit apps.

Why would you want to do this setting? In this regard, it is only for the power user as most consumer-level users either won't reap the benefits or may even make things worse. The longer explanation is assigning specific cores to an app can, in some cases, improve overall system effectiveness. For instance, if you are doing some heavy rendering, compiling, or video work, this ensures that part of the processor is always dedicated to the task.

Looking at Wikipedia, this is what they say on the matter for those more technically inclined:

"Processor affinity takes advantage of the fact that some remnants of a process that was run on a given processor may remain in that processor's memory state (for example, data in the CPU cache) after another process is run on that CPU. Scheduling that process to execute on the same processor could result in an efficient use of process by reducing performance-degrading situations such as cache misses. A practical example of processor affinity is executing multiple instances of a non-threaded application, such as some graphics-rendering software."

Mind you, Windows, and by extension Windows 10, is actually very good at managing your processor cores and allocating resources where it is needed. However, this is Windows, so you are the master and you can override things when you want.

Your best bet: Proceed with caution and take notes on what you change so you can easily revert if things get wonky.

How to designate cores to a particular app

1. Make sure you are using the Administrator account or have Admin privileges

2. Right click on the Task Bar and choose Task Manager (or type in Task Manager in the search bar)

3. Once Task Manager is launched choose More Details near the bottom

4. Choose the app (that is already running) that you would like to designate cores for

5. Right-click on the app and select Go to details

6. Under details again right-click on the app and now choose Set Affinity

7. In the Processor Affinity windows uncheck the CPU cores but leave the ones you want to set core affinity for

8. Once done, click OK to save the settings

9. Close the Task Manager box and the effect is immediate

10. Restarting the computer will revert the changes

Wrap up

Overall, this is a simple change that is very easy to implement. The real question is, Do you need to do it?

If you are considering this modification, you likely know why you want to do it. However, for regular users you likely won't get much value.

Do you have specific instances where setting core affinity for specific apps is beneficial? How do you use this setup and for which apps? Share with us your experience in comments!

If you think this guide is helpful, we have many more posts like this in our Windows 10 help, tips, and tricks page. Or try our massive Windows 10 Forums at Windows Central for more help!

Thanks, @Nabkawe5, for the tip!

Daniel Rubino

Daniel Rubino is the Editor-in-chief of Windows Central, head reviewer, podcast co-host, and analyst. He has been covering Microsoft since 2007 when this site was called WMExperts (and later Windows Phone Central). His interests include Windows, laptops, next-gen computing, and for some reason, watches. Before all this tech stuff, he worked on a Ph.D. in linguistics, watched people sleep (for medical purposes!), and ran the projectors at movie theaters because it was fun.

  • hmmm I wonder if this will be neneficial on my SP3 to use on lightroom when exporting/editing photos.
  • Do you use the smart previews? if you are having problems editing photos and exporting. that's the best way of optimizing the workflow if you are having performace issues since it's a lighter file.
  • This sounds cool
  • It does!!
  • Isn't this available in earlier versions including Win 7?  Many intensive programs like this usually have settings to help throttle how much resources your are chewing up too.
  • This is available since windows vista I think
  • Reinvented by Windows 10! :)
  • I think I have noted in the opening paragraph that this is not new. Let's see:
    "Once again, this is a carry-over from previous iterations of Windows so it is not new, but like 'God Mode' many people may not know about it or have simply forgotten the feature."
    Yup ;)
  • I don't think this is new. ;)
  • I think it's available since Windows 2000 or maybe even earlier.
  • It's been around since xp as last I checked thats when dual core came in(ht on the other hand while its been around for longer there was never any kind of management like this) but this type of tweak isn't as necessary when applications are coded properly
  • Nice reminder, but it was always there at least from Win7 as far I remember.. :)
  • Thanks. I do say this in the opening paragraph.
  • Hey dan off topics when W-10 will be released for more windowsphone model in the insider like the BLU WIN series?
  • Thanks for your comment on this article :D
  • It's neat but 99% of users will never need to do this. As the article says, Windows is pretty good at making these changes on its own. This is generally going to more helpful in a commercial setting where you have a PC doing some heavy graphics rendering and would like to keep it confined to one thread. I've become more "don't touch it" lately. Of all of the issues I've dealt with when dealing with other people's computers, only a handful were not operator error.
  • default settings for everything ftw!
  • This is a "always there" option. Nothing new. Probably since Windows XP or Vista, I don't remember. Sadly there's no improvements doing this, only downsides. It's useless.
  • You guys are very good at not reading the opening paragraph where I say this not new, lol. But thanks? Also, it's not useless, just needed for specific, rare scenarios.
  • Even more, it's not so "pro". It may save your nostalgic mood when you run Fallout 3 which has some critical issues with OSs later XP, just assign a core to the game and you cure most of the crashes.
  • I mean it may be for rare scenarios at all.
  • Man, you can't catch a break. Fwiw, I did read your open (and the rest), and, it was new info for me, so - thanks for writing it up!
  • Useful for me, since CPU-intensive tasks are separated, your computer will be more responsive. Just give it a try on your computer with 99% CPU process (and maybe on an infected computer by a CPU-eater virus?).
  • It's not useless you just haven't found the right use for it, here's a scenario I'm watching a movie but at the same time rendering my latest video, odds are my movie will stutter and that's when assigning a cpu just for the movie player and the other 3 for the video editor saves the day
  • Actually just assign 2/3 for your video editor and windows should make sure your movie player will use the others ;)
  • This is a nice tip for users who didn't know about it, that's for sure Rubino Daniel San. Not new, but Windows has many features not everyone knows about. I never used this before but it's becuase I really didn't need to.  
  • An error in the article. Restarting your PC resets your settings back to default (all CPU threads). Changes made to a programs' affinity are immediate.
  • Thanks, will update.
  • Cryio and Daniel Rubino: the affinity specified in task manager is per process launch: If the application process is closed, the next time it runs will be with those cores assigned by default, even if you don't restart Windows.That means, you'll have to set the affinity everytime the process is launched.Unless you use a batch file to start the application using Command Prompt's START command (where you can also specify the affinity).
  • No, it really *resets* the affinity. That's the short answer for you. If you don't believe it, just give it a shot. I just did that frequently and it resets back to default.
  • Actually messing with a game's affinity on CPUs with more than 4 threads (i7, AMD FX 6x00/8x00/9xx0, also Phenom II x6) increases performance in CPU bottlenecked games.
  • Guys this has already been around since....just kidding Daniel
  • "this ensures that part of the processor is always dedicated to the task"
    just to clarify - the MS's explanation fits the reality a bit better. It doesn't dedicate things - it limits the app to certain threads (it's threads not necessarily cores) - to prevent too much context-switching (for that app) - if intensive enough may make a difference. On the other hand - if you do similar thing for some other 'heavy load' apps (non-system) on the system you may eventually get the 'dedicated' aspect of it (and further help reduce the switching above). And amount of system optimization for such things is very high - so it's hard to say if it could help or hurt the performance, best to try - restart to cancel.
  • I used to do this for an architecture 3D modeling program (Revit) back before it was multithreaded and multi-core capable. I even wrote a blog post on it... The biggest downside to me is that Windows doesn't retain the settings after the program closes or when Windows restarts.
  • can set this using command line also - and run that as a batch or something
  • Core affinity has drawbacks: If a task is allowed to stay on one core, this can lead to high temperatures and consequently lower performance, higher energy consumption and reduced lifetime of the component. Symmetrical loads should always be preferred. This is especially evident on mobile CPUs as heat dissipation and battery drainage are crucial factors. There was a very informative session at this year's Build conference going very deep into this. If however you have a server or workstation with many predictable long running loads that fully occupy your CPU then it can provide some marginal or maybe even meaningful advantage.
  • If you can honestly get to through the lifetime of a CPU core, then it's time for a new one even if it was just running at 100% alll the time. But yes, you are correct. Having onecore at 100% 24/7 vs, having different cores at 100% after each other is better as they have time to cool down.
  • Ok...never done this before and I'm not a power user. But let's say I do a lot of browsing for watching YouTube or Windows Central forums, etc. In parallel I have some random resource hog open. If I were to use this feature, would it make sense to assign MS Edge (or browser of choice) to one core and the "resource hog" to other 3 cores? Or assign the resource hog to one core and let Win10 manage the rest? A dumb question I know, but just wondering how a casual user could take advantage of this.
  • Only move resource hogs to a specific core. This will free up the rest to let windows do what it does pretty well normally.
  • My Pro Tip: Don't use this. Microsoft's algorithm for scheduling tasks is smart enough. It looks to me like something next to nobody would get a benefit from, but the self proclaimed "Pro Users" will use to make themselves feel smarter. Just like cleaning their registry. These users may then do something with it which will create a performance problem and then complain how bad windows is because it has performance problems "Even with my" core assignment enhancements, when they should realise they should have said, "Caused by my" core assignment enhancements.
  • Try assigning a heavy game just two cores on an i7 or any other quad core system and see how better the performance becomes. I easily got a boost of 10fps.
  • Cryio and Daniel Rubino: the affinity specified in task manager is per process launch: If the application process is closed, the next time it runs will be with those cores assigned by default, even if you don't restart Windows.That means, you'll have to set the affinity everytime the process is launched.Unless you use a batch file to start the application using Command Prompt's START command (where you can also specify the affinity).
  • I did this one before since the age of Windows 7 (XP is also available?), and that's very nice to see that we can choose what apps should use the specific processors... By the way, not just restarting the computer will revert the effect, but also by closing the particular app will did that also.
  • Yeah, like how is it that we've been through 50 years (ok, I'm exagerrating) of Windows and we still can't make these settings permanent? I don't want to hear about custom shortcuts and batch files either because most processes are not started by the user and even many programs are started by some kind of launcher. When Task Manager starts remembering process priorities and cpu core affinities across restarts of Windows and/or the apps, then we can start tossing out terms like "God Mode".
  • Sorry for the thread necro, but I have a different use case.  As somethig of a hobby, I utilize old hardware and try to keep it relevant as long as possible.  As I type this my laptop was built in 2009 with a dual-core 2.1GHz Pentium.  Now sporting an SSD (most critical) and Windows 10 my problem is windows processes (specifically Microsoft services) eating up all of my CPU.  Anti-virus, malware, windows update, encrypted cloud drives, Trusted Installer and other low-priority process and service hogs may work wonderfully on 8-cores but suck on 2.  My need is to lump all of these low priority tasks to fight over a single core while the browser, Office and UI can run unmolested.  It helps, and I can afford to burn out my CPU if it comes to that.   My problem, like others, is getting the process to run on boot (I'll look into that Start CMD), This will help but most of the offending programs are services.  Cool, the instructions in your article taught me I can set the affinity and priority of a service.  Now how might I get a service to be assigned affinity or priority on boot?  Manually setting a dozen process and services each boot blunts the benefit received even if the UI responsiveness still makes it worthwhile.   I haven't tried this but when assigning a process to a specific core to improve performance due to caching, registry usage and such, upping the priority of the process to something like real-time should keep intruding threads from forcing a significant context switch. If anyone has cracked the book limitation I'd love to hear it.
  • is there a way to run multiple instances of the same program in separate cores per instance?