Automatic CPU Affinity Switcher for XP/Vista


Hi there. I would like to see a program that intercepts program requests and assigns them to different cpus. I try doing this manually and it helps improves performance of the computer system by a long way. It would be good if it optimized itself depending on how many cpus that it finds and senses whether a program is multiple core optimized, then it just assigns the program that number of cores. I hope this thread makes sense and I don't know easy it is to do this, but optimizing multi-core computers would be brilliant!
This would have to be done at the programs coding level. What you are talking about is turning a single core application into a dual core application right?

Say something like your browser. IF it needs the extra CPU to use the other core instead of taxing the 1 core.

This can only be done by the coders by making the applicationa a SMP (Symetrical Multiprocessing) applicaiton. Using 3rd party software wont help.
Thanks for your reply, but I mean more just shifting multiple single-core applications to different cores so that the task load is spread more efficiently. Would that be possible as a system tray application?
But what sort of criterion would you use to decide which applications run on which core?

More to the point, how would you differentiate between single-threaded applications that can be managed by such a utility and multi-threaded applications that do this all on their own?


Oh, and welcome to NeoSmart Technologies and thanks for sharing your ideas with us :grinning:

If you want to introduce yourself, we have an introduction thread for just that.
Last edited:
Dunno if it is what original author wanted, but I suspect scenarios where we would like certain applications run on specific cores, one, two, many. Criteria for automatic switching are hard to define, besides, this would mean kinda rewriting kernel scheduler.

In my opinion a nice feature would be to automatically switch certain applications to specific cores. For example, I run two Folding@Home clients, one for GPU and one for CPU. While running both of them on dual cores causes GPU client to starve on data bandwidth, splitting them to separate cores works like a charm.

...but doesn't OS allow us to do this from command line (even if I don't know how) ? :wink: The only improvement could be a tray app that would sit in the background and do it automatically for any app we want to control