我正在查看“os”和“process”模块源代码,但似乎没有办法在运行前/运行期间/运行后确定 node.js 进程在哪个核心上运行。
我正在寻找类似的东西:
process.env.CORE_ID //not real
我只是想确认不同的node.js进程运行在不同的内核上。这似乎是合理的,尽管操作系统最终选择在哪个核心上执行 node.js 进程,但一旦操作系统启动进程,我们应该能够读取该数据。
最佳答案
进程不附加到任何操作系统中的特定核心(除了,可能在一些实时导向的操作系统中)。
处理器(和核心)是可以在需要时分配给任何进程的资源。一个线程一次只能在一个核心中执行,但核心由所有进程共享。操作系统负责在可用内核上调度进程。因此,当任何进程由于 let 执行(或继续执行)同一内核中的另一个进程而“暂停”时,没有理由期望下次在同一内核中恢复该进程。
当您在一台 CPU 事件相对较低的(多核)机器中通过简单地执行 htop
来获得具有高 CPU 消耗的单个进程时,这会稍微观察到。然后你可以看到总是有一个高占用的核心,但是它是哪个核心会定期变化。
关于node.js - 在运行时确定哪个内核正在运行 Node.js 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496989/