Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Wouldn't it be efficient for the user to be able to assign a certain core to a certain application on modern multicore systems?

share|improve this question
    
"Wouldn't it be efficient..." -- Please define your terms; "efficiency" of what? Power? Time? Or do you simply mean "I want a feature that..." but want to sound technical? Also note that these multi-core and multiprocessor systems are symmetrical; the cores/processors are identical to each other. So choosing one over the other would typically not make a difference. –  sawdust Oct 15 '13 at 19:35

2 Answers 2

First of all, the real answer to your question is, why should you as a user care? OSes are developed to utilize the resources given them in the most efficient way possible. Its unlikely, unless you have specialized requirements, that your machine will perform better doing this job yourself.

Having said that, I think most OSes do give you the option. In Windows you can open the task manager application, select a process and one of the options in the context menu is to "Set Affinity." This will allow you to select which cores the process will run on.

Task manager Window

Set Affinity Dialog

share|improve this answer
    
The OS scheduler certainly is not "the most efficient possible". That said, it's quite difficult to do better, even for specific cases. –  Ben Voigt Oct 15 '13 at 14:58
    
Just my 2 cents. I run an i5-2500K, Radeon 7870, and 240gb ssd. Diablo III is a game optimized for dual-core CPUs. When played on a quad-core you run the possibility of getting extremely laggy and choppy gameplay. Opening Task Manager reveals that one core gets taxed 98% and the other 3 rest around 5%. After setting the affinity to cores 0+1 exclusively then the gameplay butters up nice an smooth and each core reports even usage. On a hyper-threaded chip you would set it to cores 0+2 because intermittent cores are just hyperthreading. –  MonkeyZeus Oct 15 '13 at 16:20
    
However I do agree that the overall answer is "No, it would not be efficient to carry out OPs question for all applications, all the time" –  MonkeyZeus Oct 15 '13 at 16:23

Hard question, it's different in every situation.

The thread/process scheduler in any operating system is way more complicated and efficient than you and it can react to different work-loads very quickly. The user shouldn't be aware of all the mechanics behind "how my process is scheduled", and (my personal note) why does it really matter to you?

You will risk to leave 3 cores sleeping, with the only working core scheduling 2132121 threads in your application..

By the way, if you really want to do it, in any operating system you can define the "cpu affinity" for each process.

In windows you can change which core can a process use in "Task manager", right click on a PROCESS (not on an application) and click "affinity".

EDIT: I used it once, when I had a "very important application": on a overloaded server, THAT application had to run with high-priority, every few minutes (when requested from the customer). We forced the OS to assign two cores (over 8 total cores) exclusively to that application. We got our result, but for the 90% of the time two cores were sleeping.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.