【发布时间】:2013-08-09 00:30:06
【问题描述】:
我有一个运行长时间执行进程的应用程序。为了让它更快,我对数据进行了简单的分片,并希望并行运行它们,只需 .fork() 相同应用程序的 2 个实例。
我在那里有 2 个核心机器,并希望确保使用 2 个核心,并且第一个实例在第一个核心上运行,第二个在第二个核心上运行。
我知道cluster 模块,但在这种情况下似乎不相关,因为我不需要运行 HTTP 服务并在它们之间进行负载平衡。只是工作人员(意思是,他们不需要相互通信、发送消息或其他任何东西——他们只需执行 HTTP 请求并将数据存储到数据库中)。
是否有可能控制 node.js 进程占用哪个 CPU 内核?如何在 Mac/Linux 上监控?
【问题讨论】:
-
你可以查看这个话题:stackoverflow.com/questions/663958/…
-
我不认为你可以编写一个线程来运行一个 CPU 内核。这将妨碍操作系统,因为它无法进行上下文切换,因此无法进行多任务处理。这样的决定最好留给操作系统。
-
谷歌“cpu 亲和力”。虽然它不是特定于节点的,但不同的操作系统会有所不同。另外,从我自己的谷歌搜索看来,在 Mac 上这样做可能会降低性能,因为内核不再能够智能地管理缓存关联性。
标签: node.js fork multiprocessing