2014-10-03 35 views
0

假设我有一台16核心的机器,并且我想让一个Node.js Web服务器使用8个内核,并且我希望Java REST/API服务器使用另一个8 。即使API服务器可能处理来自其他地方的请求,Node也会通过本地主机进行API调用。Node.js集群模块:与其他进程共享内核不重叠

我正在使用Node的集群模块来完成此操作;基本上,做cluster.fork() 8倍。我假设Java有自己的方式来利用X核心,但其他人正在编写该软件。

从节点的角度来看,我需要做些什么来确保我的代码不能在Java运行的任何相同内核上运行?似乎很简单,运行fork() n/2次,其中n = numCpus,如果这就是我所需要担心的,很好,但我想问这个问题以确保我不会错过重要的东西。

+0

在node.js中,您可以分叉n/2次。但是更大的问题将是如果Java中的nodejs使用哪些n/2核心,那么通过java可以完全相同。 :) – mithunsatheesh 2014-10-03 17:33:49

+0

运行'fork()'会产生一个新的进程,是的,但没有可行的方法来保持核心进程而不使用某种虚拟化。 – 2014-10-03 17:59:28

回答

1

这是内核调度程序管理这个,但你可以通过设置processor affinity给内核一些提示。例如,在Linux上,您可能可以使用taskset为每个启动的进程设置进程关联。

+0

我明白了。谢谢。你是否对处理器亲和力暗示是否是多进程软件部署经常完成的事情感兴趣?还是更多地是最后的手段?除非事情似乎没有正常工作,否则我倾向于在这一点*不使用它。 – greim 2014-10-03 18:20:48

+0

(标记为“处理器亲和力”是我所期待的术语,并开辟了更多谷歌搜索结果。) – greim 2014-10-03 18:23:15