gpt4 book ai didi

javascript - Node.js 子进程 fork : CPU affinity

转载 作者:行者123 更新时间:2023-11-30 15:07:59 25 4
gpt4 key购买 nike

我想在 Node.js 中使用 child_process.fork 函数来生成一个新进程。此示例还适用于 spawn 函数。

为了确保这些子进程均匀地利用机器上的所有内核,我想设置它们的 CPU 亲和性,从而迫使它们迁移到所需的内核。

我知道如何在 C 和终端中执行此操作,但我如何在 Node.js 中执行此操作?

最佳答案

我首先要说的是,设置进程的处理器亲和性可能不是一个好主意。每个 Node 进程都有许多线程(运行 JS 的主 V8 线程加上用于执行 I/O 和其他 native 操作的 libuv 线程),并且将 Node 进程限制为单个内核必然会减慢速度。

什么也不做,让操作系统调度程序处理您的 fork 进程及其线程可能会产生更好的性能。

当然,真正知道的唯一方法是在负载下对系统进行基准测试。测试不同级别的负载(轻、中、高),看看哪个表现更好。


我可以想到两种设置进程关联的方法:

  1. 丑陋:使用exec() 运行taskset 来设置进程的亲和性。 (对当前进程使用 process.pid,或者从 fork() 返回的 ChildProcesspid property。)

  2. 更好的方法:编写与平台 API 的 native 绑定(bind)。 (你如何在 C 中做到这一点)This module似乎这样做;是旧的,所以它可能会或可能不会工作。

关于javascript - Node.js 子进程 fork : CPU affinity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45475004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com