进程的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个 ...
随机推荐
- 深入剖析C++多态的实现与原理-详解
目录 多态基础 虚函数 虚函数的继承 虚类/虚基类 重写/覆盖 条件: 概念: 多态的条件 其他的多态行为 多态中子类可以不写virtual 协变 代码举例 继承遗留问题解决 析构函数 具体解决方式: ...
- 刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动
刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动 解决方法: 进游戏前,在游戏设置中,选择"后台渲染",然后再进游戏.
- 《Android开发卷——HTTP网络通信,HTTP网络连接》
为了访问互联网,需要设置应用程序获取"androd.permission.INTERNET"权限的许可. 一.使用Apache接口(org.apache.http)并实现网络连接的 ...
- JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路
JSONObject应用Json字符串和Object对象之间的转换,Map封装数据思路 package com.example.core.mydemo.json5; import com.alibab ...
- Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算
Java设计模式-责任链模式,应用接口多个参数验证,订单多个费用的计算 1.定义请求和返回对象的上下文对象 package com.example.core.mydemo.java.filter; i ...
- 支付宝APP支付 订单已付款成功,请勿重复提交 和 微信H5支付 INVALID_REQUEST 201 商户订单号重复
支付宝APP支付 返回请求给前端SDK 提示报错"订单已付款成功,请勿重复提交" 产生原因:存在商家订单号已经支付成功,重复再次请求的情况.每一笔的支付项目商家订单号是唯一的,如果 ...
- linux elasticsearch-8.2.0安装
1.下载,解压缩,命令行前不要留空格 官网下载地址: https://www.elastic.co/cn/downloads/elasticsearch https://artifacts.elast ...
- 国内外公共 DNS调研
结论 国内可以在以下DNS选择:114DNS.阿里DNS.(阿里请联系我,给我广告费^_^) 国外可以在以下DNS选择:谷歌DNS.1.1.1.1 DNS.Cisco Umbrella DNS. 国内 ...
- 解决登录服务器报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
背景 登录服务器的时候报错: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST ID ...
- 数据标注工具 doccano | 命名实体识别(Named Entity Recognition,简称NER)
目录 安装 数据准备 创建项目 创建抽取式任务 上传 定义标签 构建抽取式任务标签 任务标注 命名实体识别 导出数据 查看数据 命名实体识别(Named Entity Recognition,简称NE ...