En general, el programador hará un buen trabajo sin ayuda. En la naturaleza, solo he visto una situación donde esto importaba ...
Implementamos un servicio de nodo en una caja de 8 núcleos y durante la prueba de carga hicimos la observación más extraña ... el servicio realmente se realizó mejor con 7 trabajadores que con 8. Un poco de depuración más tarde y nos dimos cuenta de que todas las interrupciones de red estaban siendo manejadas por el núcleo 0. Jugué con el uso de 15 trabajadores para que core0 tuviera una 1/2 parte de la carga en comparación con el otros núcleos. En última instancia, creo que terminamos yendo con 7 trabajadores porque era más simple y más predecible y la complejidad simplemente no valía la pena para obtener ~ 7% más de rendimiento teórico.
Dicho esto, para establecer afinidad de CPU en Linux:
$ taskset -pc 3089
pid 3089's current affinity list: 0,1
$ taskset -p 3089
pid 3089's current affinity mask: 3 # core 0 = 0x1, core 1 = 0x2
$ taskset -pc 1,2,3 3089
pid 3089's current affinity list: 0,1
pid 3089's new affinity list: 1
Con PM2 se puede hacer eso: https://github.com/Unitech/pm2 – Unitech
@Unitech ha podido añadir una respuesta con un código? ¿Cómo se dirige a un núcleo de CPU específico? – styfle