Choosing which core to use when running a program

0

I work on a Fedora server running on an Intel Xeon with 15 cores. Some users are running simulations that take up four of the cores, but others seem to be unused. Is there a way I can have a program run on the free cores instead of waiting for the used cores to be freed?

lesolorzanov

Posted 2013-11-29T16:12:29.680

Reputation: 166

1It should be automatic... did you find out that it is not? – MariusMatutiae – 2013-11-29T16:19:54.880

1

As Marius said, it should automatically do that (it would be absurd to queue processes on used cores when there are free ones available). If you are not seeing that to be the case, then you will need to find the problem and fix that. In the meantime, you can manually set the affinity for processes.

– Synetech – 2013-11-29T16:24:52.790

I found out it is not. I was running a process on one core and then someone started a process that takes 4 cores and my process was still on one of those four and the other process cosumed all the resources and mine was eternally slowed down. I am going to look for manually setting the affinity and see if that works, thank you. – lesolorzanov – 2013-11-29T16:27:59.780

Answers

2

I found out it was matlab's fault. It did not respect my process. I ran it again after the other simulations were run and now it works on a separate core. Thanks to Synetech I found out anyway that the linux command taskset allows me to do what I need, in case I needed to do it manually.

$ taskset
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]

Options:
 -p, --pid               operate on existing given pid
 -c, --cpu-list          display and specify cpus in list format
 -h, --help              display this help
 -V, --version           output version information

The default behavior is to run a new command:
    taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
    taskset -p 700
Or set it:
    taskset -p 03 700
List format uses a comma-separated list instead of a mask:
    taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
    e.g. 0-31:2 is equivalent to mask 0x55555555

For more information see taskset(1).

lesolorzanov

Posted 2013-11-29T16:12:29.680

Reputation: 166