2

I have 24 compute intensive processes, each process running in a single thread, each running about 2 hours. I'm on a 8 core CPU.

Does it make a difference on the total run time, if I run all 24 processes at the same time in contrast to running only 8 processes simultaneously?

I'm speaking of coordination overhead between the processes, so in this case each CPU would be assigned 3 processes - is this overhead significant?

lukstei
  • 141
  • 1
  • 3

1 Answers1

1

This will depend on your specific workload and more details of your architecture (e.g., do the processes read the same memory, which may be on separate NUMA nodes?), so it would be best if you could measure performance and see what you get.

Running 24 CPU-intensive tasks over 8 execution units will require scheduling tasks on and off, whereas running as many tasks as execution units should in principle require less switching. I wouldn't expect that the overhead related to running code to switch between tasks is that high, but, when a task is scheduled off a CPU, one effect is that the state of that CPU's caches risks being flushed (they are likely to become useless for the new task being scheduled); if this happens often enough, it could lead to degraded performance.

In your case, it may make sense to benchmark those three against each other:

  1. Run 24 concurrent tasks;
  2. run 8 tasks;
  3. run 8 tasks, assigning a specific CPU to each of them.

You can do (3) using e.g. cpuset on Linux.

dhag
  • 15,440
  • 4
  • 54
  • 65