Ответ 1
В общем, планировщик будет очень хорошо справляться с этим без какой-либо помощи. В дикой природе я видел только одну ситуацию, когда это имело значение....
Мы развертывали службу node на 8-ядерном ящике, и во время нагрузочного тестирования мы сделали самое странное наблюдение... служба действительно улучшилась с 7 работниками, чем с 8. Немного отладки позже, и мы выяснили что все сетевые прерывания обрабатывались ядром 0. Я играл с использованием 15 рабочих, так что core0 имел бы половину доли нагрузки по сравнению с другими ядрами. В конечном счете, я думаю, что мы закончили работу с 7 рабочими, потому что это было проще и предсказуемо, и сложность просто не стоила того, чтобы получить ~ 7% больше теоретической пропускной способности.
Говоря, чтобы установить близость процессора к Linux:
$ taskset -pc 3089
pid 3089 current affinity list: 0,1
$ taskset -p 3089
pid 3089 current affinity mask: 3 # core 0 = 0x1, core 1 = 0x2
$ taskset -pc 1,2,3 3089
pid 3089 current affinity list: 0,1
pid 3089 new affinity list: 1