进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性

好多年前就学习过 进程的 CPU 亲和性这个概念,说直白些就是CPU的进程绑定,也就是指定某个进程绑定到某个CPU核心上,以此提高进程切换时缓存的命中率,加快进程的运算速度。

虽然在编程的时候中会遇到这个进程的CPU绑定操作,但是总觉得这个好像也不是很有用,自己也编写过一些这方面的代码进行benchmark毕竟,但是总是没有什么效果,最终得到的结论就是使用CPU绑定和不使用基本对性能无影响。

但是前段时间写国超超算平台(华为超算)代码的时候又遇到了这个CPU绑定操作,于是又多了一些研究,于是就有了本文。

说下个人观点:

在个人电脑上这个CPU绑定基本可以认为是没有意义和价值的,但是在商用服务器上这个绑定是有意义的。

个人电脑的CPU一般就是Intel的酷睿系列,一个电脑上只有一个CPU插槽,只能安装一个物理CPU,然后在这个物理CPU上集成了8个物理核心并虚拟化16个逻辑核心,这就是一般的家用电脑CPU的配置情况。

一般的家用CPU的特点就是核心少,一般物理核心为8个左右,运行主频高,一般有5.0Ghz,甚至有6.0Ghz,所有核心都集成在一个物理CPU板子上;缓存大,L2缓存可以做到每个核心4MB大小;内存读写速度快,80GB/s。

而商用服务器的CPU,特点就是核心多,一般一个物理CPU可以有24个物理核心48个逻辑核心,甚至是28个物理核心56个逻辑核心;CPU主频低,一般在3.0Ghz左右,基本为家用CPU的50%以内;每个CPU核心的缓存小,基本一个物理核心CPU的缓存为1MB左右,基本在2MB以内;内存读写速度慢,一般为家用CPU的50%以内。可以说商品服务器CPU除了物理核心多以及稳定性高以外,几乎在所有性能指标上都不如家用CPU高。

而且最为关键的是,家有电脑是一个电脑只能安装一个CPU,而商品服务器往往可以安装2个CPU以上,甚至很多商用服务器安装4个CPU以上:

家有电脑的CPU和主板的示意图:

进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性

商用的CPU和主板的示意图:

进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性


正是由于家用电脑CPU和商用服务器CPU的不同,因此进程的CPU绑定在家用电脑上往往是并没有什么实际意义和价值的,因为并不能有明显的性能提升;而对于商用服务器来说,这个进程的CPU绑定往往可以提高进程的运算速度,尤其是那种超算情况下有上百个进程同时进行计算密集型任务的科学计算时,进行进程的CPU绑定是可以提升整体的运算速度的。

进程的CPU绑定是否有意义,需要看具体的运算平台,如果你是个人电脑上的话,那就没有必要做这个设置了,但是如果你是商用服务器平台上,那么用这个设置还是有必要的。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...