节点 worker_threads + 集群 + affinity

Node worker_threads + cluster + affinity

我刚刚发现了 Node.js 的 worker_threads 模块,看起来很有前途!

问题: worker_threads 与集群结合是否有趣/高效,或者创建的线程是否自动分布在机器的不同 CPU 上?在这种情况下,有没有办法知道线程的亲和力?

我没有来 across 文档中提到亲和力的任何内容 - 我的假设是这是另一个 OS 级别的线程并且 os' 调度程序将占用关心它在哪个进程上运行。

我一直在测试(在设置了多个 CPU 的 Vagrant 上)。 当多个线程为 运行 时,我使用 top 来监视 cpu 使用情况(如果百分比高于 100%,则意味着多个 CPU's/cores被使用了。

结果:
CPU's: 4, worker-threads: NO, cluster: NO, maximum %CPU 122
CPU 的:4,工作线程:否,集群:是,最大值 %CPU 115 + 105(两个进程)
CPU 的:4,工作线程:是,集群:否,最大值 %CPU 257(对于 2 个线程)
CPU's: 4, worker-threads: YES, cluster: YES, maximum %CPU 122 + 127 (for 2 threads in 2 processes)

从这些测试中我得出结论,线程在可用时使用多个 CPU's/cores。所以使用集群不会提高工作线程的性能。