[转帖]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节点. ...
随机推荐
- NGINX Load Balancing – TCP and UDP Load Balancer
This chapter describes how to use NGINX Plus and open source NGINX to proxy and load balance TCP and ...
- 微信小程序多层嵌套循环,二级数组遍历
小程序中的遍历循环类似于angularJS的遍历. 二级数组遍历有一个坑.二级遍历wx:for循环的时候,需要注意.(代码如下) JS代码: data: { groups: [ [ { title: ...
- windows 增加右键功能 -->用命令行打开
windows 增加右键功能 -->用命令行打开 实现 注册表 以管理员权限CMD 到指定文件夹 Windows Registry Editor Version 5.00 [HKEY_CLASS ...
- shzr要填的各种坑
shzr要填的各种坑 如果大家看到我学了什么算法没写总结,或者做了什么题没写题解,欢迎让我填坑. 计划要写的: [ ] 点分治 [ ] 整体二分 [ ] CDQ分治 [ ] Min-Max容斥 [√] ...
- 使用ECharts来实现地图下钻功能(某省的市级下钻到县级)
var cityMap = { "长沙市": "430100", "株洲市": "430200", "湘潭市& ...
- 【转】MFC内嵌cef3浏览器内核
一.cef3内核的下载 可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_b ...
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- maven install 错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-c ...
- js 原生ajax实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Java NIO2:NIO概述
一.概述 从JDK1.4开始,Java提供了一系列改进的输入/输出处理的新特性,被统称为NIO(即New I/O).新增了许多用于处理输入输出的类,这些类都被放在java.nio包及子包下,并且对原j ...