Являются ли существенные затраты на координацию между двумя процессами?

У меня 24 процесса интенсивного вычисления, каждый процесс работает в одном потоке, каждый из которых работает около 2 часов. У меня 8-процессорный процессор.

Влияет ли это на общее время выполнения, если я запускаю все 24 процесса одновременно, в отличие от одновременного запуска всего 8 процессов?

Я говорю о накладных расходах на координацию между процессами, поэтому в этом случае каждому процессору будут назначены 3 процесса – это значительная накладная?

Это будет зависеть от вашей конкретной рабочей нагрузки и более подробной информации о вашей архитектуре (например, обрабатывают ли процессы одну и ту же память, которые могут быть на отдельных узлах NUMA?), Поэтому было бы лучше, если бы вы могли измерить производительность и посмотреть, что получите.

Запуск 24 задач с интенсивным процессором на 8 блоков исполнения потребует включения и выключения задач планирования, тогда как выполнение множества задач, таких как исполнительные устройства, в принципе потребует меньшего переключения. Я бы не ожидал, что накладные расходы, связанные с запуском кода для переключения между задачами, высоки, но когда задача запланирована с CPU, одним из эффектов является то, что состояние кэшей этого CPU может быть очищено (они, вероятно, станут бесполезно для запланированной новой задачи); если это происходит достаточно часто, это может привести к снижению производительности.

В вашем случае может иметь смысл сопоставить эти три друг с другом:

  1. Запуск 24 одновременных задач;
  2. запустить 8 задач;
  3. запускать 8 задач, назначая конкретный процессор каждому из них.

Вы можете сделать (3), используя, например, cpuset в Linux.