节点 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。所以使用集群不会提高工作线程的性能。
我刚刚发现了 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。所以使用集群不会提高工作线程的性能。