Javascript Node.js子进程分支:CPU关联
我想使用Node.js中的Javascript Node.js子进程分支:CPU关联,javascript,node.js,fork,cpu,spawn,Javascript,Node.js,Fork,Cpu,Spawn,我想使用Node.js中的child\u process.fork函数生成一个新进程。此示例也适用于spawn函数 为了确保这些子进程均匀地利用机器上的所有核心,我想设置它们的CPU相关性,从而迫使它们迁移到所需的核心 我知道如何在C和终端中实现这一点,但在Node.js中如何实现这一点?我会在前面说,设置进程的处理器相关性可能是个坏主意。每个节点进程都有许多线程(JS运行的主V8线程加上执行I/O和其他本机工作的libuv线程),将节点进程限制在单个核心必然会降低速度 什么都不做,让操作系统调
child\u process.fork
函数生成一个新进程。此示例也适用于spawn
函数
为了确保这些子进程均匀地利用机器上的所有核心,我想设置它们的CPU相关性,从而迫使它们迁移到所需的核心
我知道如何在C和终端中实现这一点,但在Node.js中如何实现这一点?我会在前面说,设置进程的处理器相关性可能是个坏主意。每个节点进程都有许多线程(JS运行的主V8线程加上执行I/O和其他本机工作的libuv线程),将节点进程限制在单个核心必然会降低速度 什么都不做,让操作系统调度器处理分叉进程及其线程,可能会产生更好的性能 当然,真正了解的唯一方法是在负载下对系统进行基准测试。测试不同级别的负载(轻、中、高),看看哪些性能更好
我可以想出两种设置流程关联性的方法:
exec()
运行taskset
设置进程的关联性。(对当前进程使用process.pid
,或从fork()返回的ChildProcess
的
我觉得这是个坏主意;让操作系统调度器来做它自己的事情。至少尝试在有关联性和无关联性的情况下对整个系统的性能进行基准测试。(根据分叉进程的工作方式,您可以尝试从终端手动更改分叉PID的关联性,以便进行测试。)@josh3736,嗯,可能是这样。@josh3736,好主意。如何获取进程的PID?
spawn()
返回一个包含一个参数的参数。@josh3736,好的,谢谢!也许把它记下来作为答案?