【问题标题】:Controlling the process allocation to a processor控制分配给处理器的进程
【发布时间】:2017-09-05 06:27:18
【问题描述】:

fork 是否总是在单独的处理器中创建进程?

有没有办法,我可以控制对特定处理器的分叉。例如,如果我有 2 个处理器并希望 fork 创建一个并行进程,但在包含 parent 的同一处理器中。 NodeJS 是否为此提供了任何方法?我正在寻找对流程分配的控制。 ...这甚至是个好主意吗?

另外,可以分叉的最大进程数是多少?为什么?

【问题讨论】:

  • 在不知道您为什么要这样做的情况下,无法回答这是否是个好主意。不过像github.com/saquibkhan/nodeaffinity 这样的东西是存在的。
  • @Ryan 我为什么要这样做:我想,是因为对NodeJS如何处理fork的理解不完全。
  • 所以你是说你没有理由再想在同一个核心上运行子进程了?
  • @Ryan 我想了解一切是如何处理的,我是否有办法使用 NodeJS 直接控制这些分配。
  • 为什么要指定你的进程在哪个内核上运行?

标签: node.js parallel-processing fork multicore


【解决方案1】:

我没有 Node.js 的智慧可传授,只是一些关于操作系统通常做什么的信息。

任何现代操作系统都会根据机器上的主要负担来调度 CPU 和内核上的进程/线程。关键是他们非常擅长这一点,所以人们将不得不非常努力地提出能够击败操作系统的调度/核心亲和力决策。几乎没人打扰。除非您在非常特定的硬件上运行(也许人们可能会很好地理解这些硬件),否则您必须为运行代码的每一台不同的机器做出许多复杂的决定。

如果您确实想尝试,那么我假设您必须深入挖掘 node.JS 以调用底层 C 库。大多数操作系统(包括 Linux)都为进程提供了控制核心亲和性的方法(它在 Linux 的 glibc 中公开)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 2013-02-05
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多