进程的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 亲和性的更多相关文章
- linux 将进程或者线程绑定到指定的cpu上
基本概念 cpu亲和性(affinity) CPU的亲和性, 就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性:再简单的点的描述就将指定的进程或线程绑定到相应的 ...
- Linux进程或线程绑定到CPU
Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程 ...
- Java基础知识强化之多线程笔记03:进程与线程 和 多线程的意义
1. 要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在. 2. 什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出 ...
- linux 查看内存和cpu占用比较多的进程
1.可以使用一下命令查使用内存最多的10个进程 ps -aux | sort -k4nr | head -n 102. 可以使用一下命令查使用CPU最多的10个进程 ps ...
- inux如何查看当前占用CPU或内存最多的进程
一.可以使用以下命令查使用内存最多的进程 方法1: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3 说明:ps -aux中(a指代a ...
- 进程和线程之间的关系和区别 和 CPU牒
流程具有一定独立功能的程序关于某个数据集合上的一次执行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立执行的基本单位. 进 ...
- 关于linux系统CPU篇--->不容易发现的占用CPU较高进程
1.系统的CPU使用率,不仅包括进程用户态和内核态的运行,还包括中断处理,等待IO以及内核线程等等.所以,当你发现系统的CPU使用率很高的时候,不一定能找到相对应的高CPU使用率的进程 2.案例分析, ...
- 分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
下面是详细步骤: 1. 首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看 2. 查看该进程中哪个线程占用大量 CPU,执行 top -H -p [PID] 结果如下: 可以发 ...
- vmstat---有关进程、虚存、页面交换空间及 CPU信息
虚拟内存运行原理 在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间.当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存 ...
- 查询进程内存,cpu占用情况。僵尸进程
查使用内存最多的5个进程:ps aux | head -1 && ps aux | grep -v USER | sort -nr -k 4 | head -5 查使用CPU最多的5个 ...
随机推荐
- LVGL8文本框设置长文本会自动滚动到文本最后解决方法
在创建完成并设置完文本之后加一句 lv_obj_scroll_to_y(obj,0, LV_ANIM_OFF); 就可以了 原因:官方控件里面设置文本的接口里面设置文本后会设置一次光标位置到文本末尾, ...
- WIN10 WIN11 12代 13代 大小核 电源选项
WIN10 WIN11 12代 13代 大小核;性能核:电源选项:P-core,E-core; 说明: WIN10 也是能正常用 12,13代大小核的. 方法: 1.右键开始菜单,选择"Wi ...
- C#.NET Winform承载WCF RESTful API (硬编码配置)
1.新建一个名为"WindowsForms承载WCF"的WINFORM程序. 2.在解决方案里添加一个"WCF 服务库"的项目,名为"WcfYeah& ...
- flutter 尝试创建第一个页面(三)
新建目录 assets 存放图片 在pubspec..yaml 中添加 flutter: # The following line ensures that the Material Icons f ...
- Math.ceil,Math.round,Math.floor区别
Math.ceil,Math.round,Math.floor区别 //向上取整 System.out.println("amt1=" + Math.ceil(71.01)); / ...
- 随机二次元图片API第三弹
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 随机二次元图片API第三弹 日期:2020-3-10 阿珏 ...
- python之基本类型
1 *********************************pyhton基本数据类型***************** 2 数字 int 3 ******************* 4 - ...
- 云服务器通过内网穿透的方式ssh访问内网服务器
云服务器通过内网穿透的方式ssh访问内网服务器 背景 买了一台云服务器,了解到可以通过外部服务器连接到公司内部服务器. 为了加快办公的效率,配置了一下. 以Ubuntu为例. 原文(有删改):http ...
- MySQL 并发控制(锁得使用)
导读 并发问题:同一时刻进行读写,并发问题回引发数据不一致问题. 解决并发问题:MySQL采用了锁定机制去解决并发问题 锁的分类 MySQL使用两种锁机制去解决问题:共享锁和排他锁,也叫读锁或者写锁. ...
- Solo 开发者周刊 (第 1 期):开源产品的探索之路
产品推荐 如何着手将一个简单的想法转变为一个成熟的开源项目,以及如何在此过程中利用和贡献于开源社区.同时使其达到商业化的同时,保持原有的开源精神.这些是我们需要探索的. Spug 开源运维平台 Spu ...