【发布时间】:2018-08-08 15:23:57
【问题描述】:
我刚刚发现了 Node.js 的 worker_threads 模块,它看起来很有前途!
问题:将worker_threads与集群结合起来是否有趣/高效,或者创建的线程是否自动分布在机器的不同CPU上?在这种情况下,有没有办法知道线程的亲和性?
【问题讨论】:
标签: node.js multithreading cluster-computing worker affinity
我刚刚发现了 Node.js 的 worker_threads 模块,它看起来很有前途!
问题:将worker_threads与集群结合起来是否有趣/高效,或者创建的线程是否自动分布在机器的不同CPU上?在这种情况下,有没有办法知道线程的亲和性?
【问题讨论】:
标签: node.js multithreading cluster-computing worker affinity
我一直在测试(在设置了多个 CPU 的 Vagrant 上)。
我使用top 来监控多个线程运行时的 cpu 使用率(如果百分比高于 100%,则意味着使用了多个 CPU/内核。
结果:
CPU:4,工作线程:否,集群:否,最大 %CPU 122
CPU:4,工作线程:否,集群:是,最大 %CPU 115 + 105(两个进程)
CPU:4,工作线程:是,集群:否,最大 %CPU 257(用于 2 个线程)
CPU:4,工作线程:YES,集群:YES,最大 %CPU 122 + 127(对于 2 个进程中的 2 个线程)
从这些测试中,我得出结论,线程在可用时会利用多个 CPU/内核。所以使用集群并不会提高工作线程的性能。
【讨论】:
我在文档中没有遇到任何提及亲和力的内容 - 我的假设是这是另一个操作系统级别的线程,操作系统的调度程序将负责它运行在哪个 proc 上。
【讨论】: