Node.js – 针对一个CPU核心

你如何开始一个节点进程,针对特定的CPU核心?

我见过节点集群,但我有兴趣在不同的内核上启动两个不同的进程。

我假设从命令行启动节点时有这样做的方式,即:

节点myapp.js

我有兴趣知道如何做到这一点在Windows和Linux,如果有所不同。

一般来说,调度程序在没有任何帮助的情况下会做的很好。 在野外,我只看到了一个重要的情况。

我们在一个8核心的盒子上部署了一个节点服务,在负载testing期间,我们做出了奇怪的观测结果,这个服务实际上在7个工作人员中比在8上performance得更好。稍后debugging了一下,我们发现所有的networking中断都是由核心0处理。我使用15个工人玩,所以core0将有一个1/2的负载份额相比,其他核心。 最终,我认为我们最终select了7名员工,因为这样做更简单,更具可预测性,而复杂性不足以使理论吞吐量增加7%。

也就是说,要在linux上设置CPU亲和力:

$ 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 

在Linux上,您可以使用taskset以给定的CPU关联运行节点。 有关在Windows中使用start命令的信息,请参阅此文章 。