How do I assign different CPU cores to different processes?

Solution 1:

The accepted answer may be good advice, but it certainly isn't an answer to your question. Your question doesn't indicate to me that you aren't qualified to hear the answer either, in fact it sounds like a good example of a situation in which you'd want to specifically indicate which processors should do what.

Getting to the point, what you want are CPU Sets. They are supported in 11.10 of Ubuntu, since it uses a recent enough Linux Kernel. I believe Linux 2.6 is required.

You can read the man page for cpuset here: http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html

Here is another page for general reading: http://www.bullopensource.org/cpuset/

Linux may be "great" at deciding how to allocate CPU time, but it isn't perfect.

Solution 2:

I hope this doesn't come across as rude, but if you ask this question, you shouldn't even consider it. This is one of those things that Linux is seriously good at figuring out all by itself. If you did this, it'd likely have a very negative impact on performance. Even if the program isn't designed for make use of more processors, Linux will move them to different cores as needed. The program won't notice.

You might want to give them both low nice values with the nice command to give them higher priorities.