Should I Micromanage CPU Affinities?

In some cases, yes, but it depends on your goal, and you need to be smart about it.

If your goal is increased performance, remember that the Windows CPU Scheduler tries to manage which threads are on what cores itself, and it’s not entirely dumb. So, when you micro-manage CPU affinities, you are second guessing it. This can only be appropriate when you are certain of what the loads are going to be and know what you’re doing. There is overhead every time a thread is switched from one core to another (context switch), but, aware of this, the OS’s CPU scheduler doesn’t usually swap threads around frequently – but if you know exactly what your execution load will be, then you could conceivably further reduce context switches.

If your goal is to limit CPU use, then you can do so by giving a problematic process access to only a limited subset of available cores. However, you must be sure that this process isn’t ‘blocking’, meaning slowing it doesn’t slow something else, or even everything else. Similarly, you obviously must be willing to tolerate the proportional decrease in that application’s performance.

 We do NOT recommend limiting the CPU affinities of ALL processes with a broad rule like *.*; we also don’t recommend limiting the CPU affinity of system or security software.

In general, be conservative, cautious, selective, and smart!