cpu三大架构 numa smp mpp

https://www.jianshu.com/p/81233f3c2c14

系统的性能很大程度上依赖于cpu 硬件架构的支持。这里记录一下cpu 常见的三大架构的区别

smp

SMP (Symmetric Multiprocessing) , 对称多处理器. 顾名思义, 在SMP中所有的处理器都是对等的, 它们通过总线连接共享同一块物理内存,这也就导致了系统中所有资源(CPU、内存、I/O等)都是共享的,当我们打开服务器的背板盖,如果发现有多个cpu的槽位,但是却连接到同一个内存插槽的位置,那一般就是smp架构的服务器,日常中常见的pc啊,笔记本啊,手机还有一些老的服务器都是这个架构,其架构简单,但是拓展性能非常差,从linux 上也能看到:

 ls /sys/devices/system/node/# 如果只看到一个node0 那就是smp架构

可以看到只有仅仅一个node,经过大神们的测试发现,2至4个CPU比较适合smp架构。

NUMA

NUMA ( Non-Uniform Memory Access),非均匀访问存储模型,这种模型的是为了解决smp扩容性很差而提出的技术方案,如果说smp 相当于多个cpu 连接一个内存池导致请求经常发生冲突的话,numa 就是将cpu的资源分开,以node 为单位进行切割,每个node 里有着独有的core ,memory 等资源,这也就导致了cpu在性能使用上的提升,但是同样存在问题就是2个node 之间的资源交互非常慢,当cpu增多的情况下,性能提升的幅度并不是很高。所以可以看到很多明明有很多core的服务器却只有2个node区。

MPP

MPP (Massive Parallel Processing) ,这个其实可以理解为刀片服务器,每个刀扇里的都是一台独立的smp架构服务器,且每个刀扇之间均有高性能的网络设备进行交互,保证了smp服务器之间的数据传输性能。相比numa 来说更适合大规模的计算,唯一不足的是,当其中的smp 节点增多的情况下,与之对应的计算管理系统也需要相对应的提高。

关于几个基本概念

下面这个命令可以很简单的看出cpu的架构以及配置

#lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    1 #每个core 有几个线程
Core(s) per socket:    4 #每个槽位有4个core
Socket(s):             2 #服务器面板上有2个cpu 槽位
NUMA node(s):          2 #nodes的数量
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 44
Stepping:              2
CPU MHz:               2128.025
BogoMIPS:              4256.03
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0,2,4,6 #对应的core
NUMA node1 CPU(s):     1,3,5,7

由于numa 架构经常会有内存分配不均匀的情况,常常需要手动干预,除了代码以外,还有linux命令进行cpu的绑定:

taskset  -cp 1,2  25718 #将进程ID 25718 绑定到cpu的第1和第2个core 里

参考资料:

收藏了几篇非常好的文章,都是大神呀
http://cenalulu.github.io/linux/numa/ #关于numa 内存分配不平均导致mysql 阻塞
http://blog.c1gstudio.com/archives/1260 #修改numa以及IO调度对mysql的提升

作者:钟大發
链接:https://www.jianshu.com/p/81233f3c2c14
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/dhcn/p/12272491.html

时间: 2024-10-10 05:18:14

cpu三大架构 numa smp mpp的相关文章

CPU 的三大架构 —— numa smp mpp

SMP 模式 SMP模式将多个处理器与一个集中的存储器相连.在SMP模式下,所有处理器都可以访问同一个系统物理存储器,这就意味着SMP系统只运行操作系统的一个拷贝. 因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值. 很显然,SMP的缺点是可伸缩性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得更高的性能. MPP 模式 一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器. 一个分布式存储器

服务器三大体系SMP、NUMA、MPP介绍

http://server.51cto.com/sCollege-198840.htm 从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构(SMP:Symmetric Multi-Processor),非一致存储访问结构(NUMA:Non-Uniform Memory Access),以及海量并行处理结构(MPP:Massive Parallel Processing).它们的特征分别描述如下: SMP(Symmetric Multi-Processor) 所谓对称多处理器结构

SMP、NUMA、MPP体系结构介绍

从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform Memory Access) ,以及海量并行处理结构 (MPP : Massive Parallel Processing) . 从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA

SMP、NUMA、MPP体系结构

从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构(SMP:Symmetric Multi-Processor),非一致存储访问结构(NUMA:Non-Uniform Memory Access),以及海量并行处理结构(MPP:Massive Parallel Processing). SMP(Symmetric Multi-Processor) SMP(Symmetric Multi-Processor),对称多处理系统内有许多紧耦合多处理器,在这样的系统中,所有的CPU共享

linux下利用adb连接Android模拟器查看内核版本、cpu体系架构版本、删除密码锁

在前面的两篇文章中,讲述了编译android源码和内核源码,此篇文章建立在之前的基础上,不清楚的请先转战: 源码编译 内核编译 --------------------------------------------------------------------------------------------- 在使用了下面的命令启动了模拟器之后: export PATH=$PATH:/usr/local/Android/Android2.3.7/out/host/linux-x86/bin

Java并发编程里的volatile。Java内存模型核CPU内存架构的对应关系

CPU内存架构:https://www.jianshu.com/p/3d1eb589b48e Java内存模型:https://www.jianshu.com/p/27a9003c33f4 多线程下的缓存一致性问题:https://www.jianshu.com/p/97dc5242c3a6 java volatile关键字解惑:https://www.jianshu.com/p/195ae7c77afe Google-Java Memory Model:https://www.jianshu.

[转帖]intel发布会之前,漫谈CPU核心架构:CCX、Ring Bus、Mesh

intel发布会之前,漫谈CPU核心架构:CCX.Ring Bus.Mesh https://baijiahao.baidu.com/s?id=1607585351741429318&wfr=spider&for=pc intel和amd的架构特点 喻拓 发布时间:18-08-0116:41优质原创作者 从Ryzen 开始,CPU的核心数仿佛失去了控制.不到一年,主流的四核心处理器直接被“安排的明明白白”.不久之后,AMD就将发布首款民用级32核处理器,使用改进后的CCX,降低了L3缓存的

关于面对对象过程中的三大架构以及数据访问层(实体类、数据操作类)

面向对象开发项目三层架构: 界面层.业务逻辑层.数据访问层 数据访问层,分为实体类和数据访问类 在项目的下面添加一个App_Code文件夹把所有的类放在App_Code这个文件夹下边. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性(也就是对每个数据库中的字段封装) 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,

nios软核cpu中架构类shell的一种解决方式

在nios中要实现一个类shell的交互系统,用户在终端可以通过命令调用系统函数. 想到linus当年在写下系统函数调用时,其实基于的思想是一样的,就是查表,每一种系统函数都对应一种中断服务号,然后通过0x80系统调用进入内核,然后查表,这里就可以找到对应的内核系统函数,回顾一下linus是怎么做到的. 就以系统函数open为例子 int open(const char * filename, int flag, ...) { register int res; va_list arg; va_