我有一个调用多个线程的进程(例如6个线程).如果我在具有6 CPU或4 CPU的服务器机器上运行它会对其性能产生什么影响
每个CPU内部的线程CPU和内核之间的关系是什么.
我已经读过,线程只在一个CPU内的不同内核中运行.这是真的吗?
这取决于.
如果你的任务是CPU绑定的,没有管道停顿,那么你将从每个物理CPU核心产生一个线程获得最佳性能.
如果您的CPU绑定任务有来自缓存未命中,分支错误预测,依赖关系等的管道停滞,那么您可以利用超线程并为每个虚拟核心生成一个线程.在没有超线程的CPU上,虚拟内核的数量等于物理内核的数量.
如果您的任务阻止IO,那么您可以从产生比CPU核心更多的线程中受益.Apache Web服务器就是这种方法的一个例子.