【问题标题】:Do multiple node apps run on different CPU cores?多个节点应用程序是否在不同的 CPU 内核上运行?
【发布时间】:2020-05-14 03:18:51
【问题描述】:

如果我多次启动同一个 Node 应用程序,每个应用程序是否运行在不同的 CPU 内核上?

例如在四核上,我启动应用程序 4 次。

我想使用 Nginx 作为代理,它比 PM2 在集群模式下使用的 Node 的集群功能更高效。 Nginx 还具有用于 PM2 机器人具有的粘性会话的 ip 哈希函数。

【问题讨论】:

  • 这是操作系统的工作
  • Linux 会这样做吗?还是 macOS?还是窗户?

标签: node.js pm2


【解决方案1】:

不一定。这取决于 CPU 架构、操作系统、负载和内核的决定。在某些情况下,在一个内核上运行所有进程并保持该内核高速运行而其他内核被故意关闭会更有效。

如果您完全运行它们,每个都使用 100% 的 CPU,那么它们将可能在不同的内核上运行,但是对于超线程之类的东西,你不能指望它。它们可以在两个内核上运行,每个内核有两个线程。

【讨论】:

    【解决方案2】:

    操作系统决定哪个进程/线程在哪个内核上运行。如果您只有四个繁忙的进程和四个 CPU,操作系统通常会将这四个进程分散到四个 CPU 上。这是操作系统任务调度程序的工作以及它正在尝试做的事情。

    但是,这些都不是硬连线的。如果操作系统决定需要运行其他东西,那么它将动态调整。操作系统的目标是让每个需要 CPU 周期的进程都能获得公平的 CPU 份额,而唯一的办法就是将来自不同进程的工作负载分散到不同的 CPU 中。

    Linux 和 Windows 在如何准确地分配负载方面各有一些不同的特点,但它们都在朝着相同的总体目标努力,即在不同的内核之间分配负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      相关资源
      最近更新 更多