Numa解释

Posted smlie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numa解释相关的知识,希望对你有一定的参考价值。

原路径:http://www.sohu.com/a/126402403_609500

 

内容概要 今天的文章我们将简单学习下Hyper-V如何通过NUMA(Non-Uniform Memory Access)来对虚机内存访问进行加速。

SMP和NUMA

1

根据 CPU 访问内存中地址所需时间和距离我们可以将CPU和内存结构分为SMP(SMP,Symmetric Multi-Processor,也称之为一致内存访问UMA)、NUMA和MPP(Massive Parallel Processing)三种结构。,NUMA具有更加好的扩展性。NUMA将CPU和相近的内存配对组成节点,在每个NUMA节点里,CPU都有本地内存,访问距离短,性能好。NUMA比SMP具有更好的扩展性,SMP使用共享内存控制器,所有的CPU使用共享内存总线访问内存,如图1所示。在CPU不多的时候,,也可能发生CPU之间相互“争夺”对共享内存总线的访问。,如图2所示。在服务器CPU日益增多和虚拟化普及的时代,NUMA更能适应高密度虚拟化环境的要求。

技术图片

图1

技术图片

图2

虚拟机NUMA拓扑映射

2

那么虚机是否能用到NUMA的特性呢?从Windows Server 2012开始,Hyper-V虚机可以映射虚拟的NUMA拓扑,在虚机配置了较多内存的时候,使用NUMA拓扑映射能保证分配给虚机的CPU只访问本地的内存,从而达到提升性能。Hyper-V为虚机提供虚拟NUMA节点,虚拟NUMA的拓扑结构及原理与物理机的NUMA拓扑及结构一致,虚拟CPU和虚机内存组合成虚拟NUMA节点,每个虚机的虚拟NUMA节点都映射到相关的物理CPU上,如图3所示。Hyper-V虚机能够感知物理机NUMA拓扑并在启用NUMA时进行默认映射,通常如果虚机虚拟CPU没有超过物理机单颗CPU的核数,那么通常只生成一个虚机NUMA节点。虽然我们可以进行自定义给虚机分配设置多个虚拟NUMA节点,但是跨NUMA节点的拓扑偏离了物理机的拓扑结构,会影响性能的提升速度,所以在一些高负载应用场景下不建议不经规划设置多个虚拟NUMA节点。

技术图片

图3

举个例子,物理机有两颗CPU,每颗CPU有20个逻辑核,因此该物理机一共有40个逻辑核和256GB内存,所以每个CPU逻辑核对应约6.4GB内存。每颗CPU和它临近的内存组成一个NUMA拓扑节点,因此物理机一共有两个NUMA节点,每个NUMA节点包含20个逻辑核和128GB内存,如果虚机启用NUMA映射,那么这个虚机的NUMA节点拓扑里包含最大的虚拟CPU数是20,内存数是128GB,如图4所示。

技术图片

图4

虚拟NUMA也支持跨物理NUMA,如果单个虚拟NUMA超过了单个物理NUMA节点的CPU数量,可能会出现虚机NUMA拓扑和物理机NUMA拓扑出现偏离的情况,导致CPU访问远程内存的情况发生,如图5所示。因为远程内存的访问速度比本地内存访问速度慢,因此可能导致性能提升没有在NUMA拓扑内那么明显。

技术图片

图5

举个例子,给虚拟NUMA拓扑设置成最多10个虚拟CPU,那么依据当前的环境,按照NUMA拓扑的最大内存应该限制在64GB内存,如果虚机分配了10个CPU和超过64GB内存,则虚拟机必然要访问其NUMA节点之外的远程内存。同理,如果虚机的NUMA节点的CPU超过了物理机NUMA节点的CPU,这些CPU也将访问其他NUMA节点的远程内存。

要查看物理机的NUMA拓扑,可以在服务器系统的任务管理器查看,也可以使用PowerShell命令查看。在系统里打开任务管理器,再打开资源监视器,选择CPU选项卡后,可以查看到NUMA的节点数和每个节点的CPU使用情况,如图6所示。

技术图片

图6

使用PowerShell命令Get-VMHostMumaNode可以查看物理机的NUMA节点更加详细的信息,包括内存以及剩余内存,如下示例所示。

 

NodeId

: 0

ProcessorsAvailability

: 0, 0, 0, 0...

MemoryAvailable

: 38459

MemoryTotal

: 131035

ComputerName

: Host01

   

NodeId

: 1

ProcessorsAvailability

: 0, 0, 0, 0...

MemoryAvailable

: 38470

MemoryTotal

: 131072

ComputerName

: Host01

作者介绍

黄利军老师特别授权华来四发表的作品,共有12篇,摘自其最新书作《软件定义数据中心技术与实践-Windows Server SDDC》,京东、当当等都有售。

以上是关于Numa解释的主要内容,如果未能解决你的问题,请参考以下文章

c语言简单程序解释一下

+1 和 -1 的区别

Amdahl定律的陷阱[关闭]

Linux 内核NUMA 非一致内存访问结构 ( NUMA 概念介绍 | NUMA 架构优势分析 | SMPNUMAMPP 架构 )

linux如何计算两个numa节点之间的numa距离(任何numa库的内部逻辑,如libnuma..etc)?

⭐NUMA架构进行优化,数据库效率显著提升,那么什么是NUMA?微动画带你走进全新NUMA⭐