我刚刚发现了Node.js的worker_threads模块,它看起来很有希望!
问题:将worker_threads与集群结合起来是否有趣/高效?或者,所创建的线程是否自动分布在计算机的不同CPU上?在这种情况下,有没有办法知道线程的亲和力?
答案 0 :(得分:1)
我一直在测试(在具有多个CPU设置的Vagrant上)。
我使用top
来监视运行多个线程时的CPU使用率(如果百分比超过100%,则意味着使用了多个CPU /内核。
结果:
CPU:4,辅助线程:NO,群集:NO,最大%CPU 122
CPU:4,工作线程:NO,集群:是,最大%CPU 115 + 105(两个进程)
CPU:4,辅助线程:YES,群集:NO,最大%CPU 257(用于2个线程)
CPU:4,工作线程:是,集群:是,最大%CPU 122 + 127(用于2个进程中的2个线程)
从这些测试中,我得出结论,线程在可用时会利用多个CPU /内核。因此,使用群集将无法提高工作线程的性能。
答案 1 :(得分:-1)
我在文档中没有提到任何相关性-我的假设是这是另一个OS级线程,并且OS的调度程序将照顾它在哪个proc上运行。