首页 > 系统相关 >进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性

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

时间:2024-02-22 13:46:19浏览次数:30  
标签:核心 亲和性 绑定 进程 服务器 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和主板的示意图:

image

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

image




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


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



标签:核心,亲和性,绑定,进程,服务器,CPU,物理
From: https://www.cnblogs.com/devilmaycry812839668/p/18027142

相关文章

  • python 多进程交互
    frommultiprocessingimportProcess,QueueclassEngine:def__init__(self):self.info="EngineInfo"self.order_queue=Queue()#创建一个用于接收订单的队列self.orders=[]defget_info(self):returnself.info......
  • 当systemd停止父python脚本时,子进程退出
    KillMode参数contorl-group(默认)#当前控制组里所有的子进程都会被杀掉process:#只杀主进程mixed:#主进程将收到SIGTERM(终止进程)信号,子进程将收到SIGKILL(无条件终止)信号none:  #没有进程会被杀掉,只是执行服务的stop命令 解决办法将KillMode改成process或non......
  • c++ 直接读取 cpu id
    c++直接读取cpuid#include<iostream>usingnamespacestd;#include<string>#include<comutil.h>#include"Windows.h"#include<atlconv.h>#include<intrin.h>#include<cctype>#include<iomanip>char*......
  • 对于程序员来说CPU是什么
    通过第一章的学习,我了解到的CPU是计算机的核心组件,它是计算机执行计算和逻辑运算的部分,负责解释和执行指令,控制计算机的各个部分协同工作。CPU按照程序的指令执行相应的操作。CPU是寄存器的集合体(在代码清单中,exa和ebp表示的都是寄存器)。CPU的控制器就会参照程序计数器的数值,从内......
  • 《程序是怎样跑起来的》——第1章对程序员来说CPU是什么
    一、CPU的概念及作用1、概念:CPU是英文CentralProcessingUnit(中央处理器)的缩写,相当于计算机的大脑。(CPU是用来表示计算机内部元件功能的术语。)2、作用:对于程序员来说CPU是程序员用来弄清楚负责保存指令和数据的寄存器的机制。二、CPU的内部构成1、CPU的构成部分:CPU和内存......
  • CPU是什么
    读完《程序是怎样跑起来的》第一章后,我对CPU的内部结构和其工作原理有了更深的认识。CPU是一个复杂的电子系统,它包含多个组成部分,如寄存器、控制器、运算器和时钟。寄存器是CPU的核心组件之一,它们负责临时存储计算过程中的信息。此外,CPU能够直接识别并执行的语言是机器语言,而......
  • Unity手机游戏性能优化系列:针对CPU端的性能调优
    做手机游戏开发的时,经常会遇到手机游戏的性能问题,手机游戏的性能问题可能有很多的方面,今天我们从CPU调优的角度来給大家介绍一下常用的CPU调优的一些经验和手段。这些经验和手段都有可能随着时间与环境的变化改变而改变,具体还是要以实际的为准,先定位性能问题,再上具体的手段。接下......
  • 线程池和进程池
    线程池和进程池(1)简介在Python中,线程池(ThreadPoolExecutor)和进程池(ProcessPoolExecutor)是用于并发执行任务的两种机制。它们都可以有效地管理并发执行的任务,并且能够自动管理线程或进程的生命周期,从而简化了并发编程。(1)线程池基于线程的并发:线程池利用了线程的并发执行来......
  • day17_进程管理
    linux资源管理篇昨日内容回顾1.先看状态,再去启动systemctlstatusfirewalldsystemctlrestartfirewalldsystemctllist-unit-files|grepfirewalld1.先理解服务的意思,服务,就是你安装的软件名字2.服务就是一个软件程序,会提供可用的命令,去操控这个软件3.firewall......
  • Python获取 CPU 温度、CPU 占用、内存总空间、内存占用空间、系统磁盘总空间、系统磁
    先下载依赖pip3installpsutil代码importpsutil#获取CPU温度defget_cpu_temperature():try:temperatures=psutil.sensors_temperatures()if'coretemp'intemperatures:forentryintemperatures['coretemp']:......