线程数增加会不会导致cpu负载越来越高

线程也不是越多越好,多少是好?

坦率地说,线程越多越好。
关键取决于如何将任务与正确的硬件相匹配。
我们先来说说最重要的事情。
CPU核心数为上限。
超过这个数字会降低效率。
当我去年运行一个基因组比较项目时,1 0 核 CPU 上的 STAR 工具已达到 1 0 个线程的末尾。
添加更多人员不仅会减慢速度,还会导致线程在争夺资源时陷入困境。
还有一点就是任务类型太关键了。
对于CPU密集型任务,例如密码计算能力,最好将线程数与核心数相匹配。
例如,STAR 在 1 0 个内核上使用 8 到 1 0 个线程,每个附加线程都会提高速度。
还有另一个重要的细节。
I/O 密集型任务可以打开更多线程来填补空白,但需要 CPU 空闲才能实现成本效益。
如果需要填满CPU,等待很长时间会减慢整体I/O。
等等,还有别的事。
内存也需要跟上。
在我的测试中,随着线程的打开,内存不断增加。
例如,在我们的测试中,线程加倍会使内存增加 1 3 %。
如果没有足够的物理内存,则必须依赖虚拟内存,这将导致比没有线程时更大的性能损失。
老实说,这很令人困惑。
很多人认为超线程CPU无需思考就可以开启线程。
事实上,您还应该测试具有 2 0 个线程的 CPU。
无需将您的系统拖过筛子。
为了找到性能拐点,我们建议运行多个基准测试,例如使用 STAR 工具使用 1 、2 、4 、8 、1 0 和 1 5 个线程进行测试。
注意不要超过纯计算任务的核心数量。
又开了几个混合任务,但还是需要监控。
不要让您的 CPU、内存和 I/O 过度拥挤。

CPU的“核心数”、“线程数”的关系和区别分别是什么?