进程的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个 ...
随机推荐
- 查看es结构,es _search查询基础语法
查看es结构,es _search查询基础语法 http://xx.xx.xx.xx:9200/ ES地址 car_info/_search POST {} POST { "query&qu ...
- http请求方式-HttpClient 微信退款的接口,需要证书请求 https请求
http请求方式-HttpClient import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import ...
- 解决git 区分文件名大小写
问题:两人协作开发同一分支时,由于一方将组件文件名小写开头,并且推送到远程分支,导致我每次拉取代码会将我本地文件名改成小写,并且我手动改成大写后推送到远端仓库,远端仓库文件名无变化,还是小写. 查证后 ...
- 实验四:WinRAR漏洞
[实验目的] 通过打开rar文件,获取到目标机shell. [知识点] winrar漏洞 [实验原理] 该漏洞是由于WinRAR所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库 ...
- 背包DP——完全背包
完全背包模型与 0-1 背包类似,与 0-1 背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次. 而状态转移方程于01背包区别在于可以直接从[i][j-w[i]]转移 理由是当我们这样转移时, ...
- uniapp+thinkphp5实现微信扫码支付(APP支付)
前言 统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口.下面介绍的是其中APP的支付的配置与实现流程 配置 1.首先登录 ...
- 如何在不能求逆的时候做子集卷积 exp(即便能求逆也比常见方法优雅)
为什么要求逆?正常做子集卷积 exp 的时候递推求 \(G=\exp(F)\) 的系数时要用. 什么情况下不能求逆?模 \(2^{64}\),或者压根不取模. 我们可能会想,算出来肯定除得尽啊,因为组 ...
- vba--将excel单元格格式改为常规格式
Sub 改格式() ActiveWorkbook.activesheet.Select For Each Rng In ActiveSheet.UsedRange With Rng .NumberFo ...
- canvas绘制飞线效果
在我们做的可视化大屏项目中,经常会遇到飞线的效果. 在我们的大屏编辑器中,可以通过拖拽+配置参数的方式很快就能够实现.下面是我们使用大屏编辑器实现的一个项目效果: 中间地图就有飞线的效果. 抛开编辑器 ...
- nginx负载均衡session共享解决方案
解决方案: 1.使用客户端的cookie作为存放登录信息的媒介 cookie是将用户登录信息存储在用户终端的数据载体,与session的最大区别就是,session是存储在服务器端的:所以这就很容易解 ...