[转帖]NUMA
作者:ibless 来源:CSDN 原文:https://blog.csdn.net/ibless/article/details/80114009 其实 很早之前对这一块有了解 比较多的的是 CCNUMA 高速缓存一致性的 非一致性内存访问 需要在CPU之间架设高速缓存通路 这样才能提高相应的性能 AMD 最新的处理器架构 采取的CX 其实同一个物理插座上面的核 访问内存的延迟也不一样. 会出现掉速的现象.
通常,在业界存在两种主要类型的并行体系结构:共享内存体系结构(Shared Memory Architecture)和分布式内存体系结构(Distributed Memory Architecture)。而共享内存结构有两种类型:统一内存访问(UMA)和非同一内存访问(NUMA),有些博客中多一种只用高速缓存的存储器架构(Cache-Only Memory Architecture,简称COMA)。目前,三大商用服务器架构又分为SMP(对称多处理架构)、NUMA(非同一内存访问架构)、MMP(大规模并行处理架构)。本文先讲述UMA和NUMA,接下来的博客会陆续讲述SMP、MMP和NUMA的特点以及区别。
因为UMA和NUMA都是共享内存共享内存架构的并行体系机构,所以它们有一个相同点就是内存共享。共享内存,简单来说就是多个CPU可以访问系统中所有的内存。下图是共享内存的模型:

图1 共享内存架构

图2 分布式内存架构
接下来,我们先说一下UMA,在UMA中,内存访问时间取决于是哪个处理器发出的请求,或者哪个内存芯片包含传输的数据。下面是一张示意图:

在UMA中,所有的处理器平等的访问内存,因此CPU对内存的存取在速度上等是没有差异的,这也是称为统一内存访问的原因。各处理器与内存单元通过互联总线进行连接,各个CPU之间没有主从关系,其实SMP架构可以说成是UMA的。
下面我们来说一下NUMA架构,下图是NUMA架构的一个示例:

从上面的图中,我们可以看到一台计算机有多个Node(节点),每个节点中有多个Core(核),上图中是4个核,在每个节点内部都有自己的内存,称之为本地内存。与本地内存相对的是远端内存,对于Node0来说,Node1、Node2、Node3中的内存都是远端内存。在节点中,CPU与内存之间通过片内总线进行连接。各个节点之间通过互联模块(Crossbar Switch)进行连接。需要注意的是,NUMA节点中CPU对节点内部内存与节点外部内存的访问是有差异的。依旧是一个CPU对本地内存和远端内存的访问时间是不同的,一般来说,CPU对本地内存的时间要比远端内存的访问速度快1.3--5倍。这也就是称为NUMA(非统一内存访问)的原因。NUMA既然属于共享内存架构,也就是每个CPU都可以访问系统中所有的内存,只不过访问这些内存的速度或方式是有差异的。一般来说,NUMA节点之间是相互连接的,这个有一个Node Distance的概念,也就是节点与节点之间的距离是不同的。下图是一个获取Node Distance的截图:
参考:
https://en.wikipedia.org/wiki/Uniform_memory_access
https://en.wikipedia.org/wiki/Non-uniform_memory_access
http://cs.nyu.edu/~lerner/spring10/projects/NUMA.pdf
---------------------
[转帖]NUMA的更多相关文章
- [转帖]NUMA架构的CPU -- 你真的用好了么?
NUMA架构的CPU -- 你真的用好了么? 本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于 ...
- 【转帖】深挖NUMA
深挖NUMA http://www.litrin.net/2017/10/31/深挖numa/ 首先列出本站之前相关的几篇帖子: Linux的NUMA机制 NUMA对性能的影响 cgroup的cpus ...
- 【转帖】Linux的NUMA机制
Linux的NUMA机制 http://www.litrin.net/2014/06/18/linux的numa机制/ NUMA(Non-Uniform Memory Access)字面直译为“非一致 ...
- NUMA架构的CPU -- 你真的用好了么?
本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...
- [转帖] sqlserver CAL 授权模式下 只能够有20个core的使用问题
http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进 ...
- 【ZT】NUMA架构的CPU -- 你真的用好了么?
本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...
- SMP、NUMA、MPP(Teradata)体系结构介绍
从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform ...
- 如何知道SQL Server机器上有多少个NUMA节点
如何知道SQL Server机器上有多少个NUMA节点 文章出处: How can you tell how many NUMA nodes your SQL Server has? http://i ...
- 我有几个NUMA节点
在SQL Server交流会,经常被问到的一个问题,SQL Server在几个NUMA节点上运行.因此,在今天的文章里,我想向你展示下几个方法和技术,找出你的SQL Server有几个NUMA节点. ...
随机推荐
- 1.01-url-open_code
import urllib.request def load_data(): url = "http://www.baidu.com/" #get的请求 #http请求 #resp ...
- wait和notify
① wait() 与 notify/notifyAll 方法必须在同步代码块中使用 synchronized修饰的同步代码块或方法里面调用wait() 与 notify/notifyAll()方法 ...
- centos7 开机启动服务链接说明
环境:centos7 创建的开机启动的链接地址: /etc/systemd/system/multi-user.target.wants/ 如: [root@tiaobanji system]# ll ...
- Python:Day06 元组、字典、字符串
tuple(元组) 元组被称为只读列表,即数据可以被查询,但不能被修改,所以列表的切片操作同样适用于元组. 元组写在( )里,元素之间用逗号隔开. tul1 = ( ) #空元组 tul2 = (20 ...
- day25 Python
一.day24复习 class school: x=1 #__init__初始化函数,用来帮类实例化一个具体的对象 def __init__(self,name,addr): #前面的Name是一个需 ...
- Oracle BBED 工具 说明
一. BBED介绍 有关BBED 详细使用说明的pdf文档,也是从网上下载的: http: Thename bbed is an acro ...
- springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback
springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...
- centos 7 安装 MySQL 5.6
由于Centos7 默认数据库是mariabd,所以通过rpm安装MySQL需要卸载原有的Mariabd,再下载所有的依赖包比较麻烦且容易出错.通过yum的方式安装.yum其实是rpm的一个升级将所有 ...
- Vue-比较方法、计算属性和侦听器
分别用方法.计算属性和侦听器实现当fristName和lastName改变时,fullName跟着改变. 一.方法: html: <div id="app"> {{fu ...
- Omi教程-组件通讯攻略大全
组件通讯 Omi框架组建间的通讯非常遍历灵活,因为有许多可选方案进行通讯: 通过在组件上声明 data-* 传递给子节点 通过在组件上声明 data 传递给子节点 (支持复杂数据类型的映射) 父容器设 ...