前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hyper-V性能加速之NUMA

Hyper-V性能加速之NUMA

作者头像
盆盆
发布2019-04-24 14:39:35
2.7K0
发布2019-04-24 14:39:35
举报

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

SMP和NUMA

1

根据 CPU 访问内存中地址所需时间和距离我们可以将CPU和内存结构分为SMP(SMP,Symmetric Multi-Processor,也称之为一致内存访问UMA)、NUMA和MPP(Massive Parallel Processing)三种结构。而我们在虚拟化环境中常用的结构包括SMP和NUMA这两种。相对SMP(UMA)来说,NUMA具有更加好的扩展性。NUMA将CPU和相近的内存配对组成节点,在每个NUMA节点里,CPU都有本地内存,访问距离短,性能好。NUMA比SMP具有更好的扩展性,SMP使用共享内存控制器,所有的CPU使用共享内存总线访问内存,如图1所示。在CPU不多的时候,SMP可以很好地工作,但是一旦CPU的数量很大的时候,这些 CPU 既可能造成内存总线的压力,也可能发生CPU之间相互“争夺”对共享内存总线的访问。NUMA采用分组的形式,限制一个NUMA节点里面的CPU数量和内存大小,并使用缓存一致性内部连接总线将各个NUMA节点连接起来,如图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节点更加详细的信息,包括内存以及剩余内存,如下示例所示。

PS C:\> Get-VMhostNumaNode

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


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 华来四Azure混合云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档