高性能云主机来啦!详解ZStack vNUMA功能

国内
TIME
2022-07-27 10:49
科技在线
分享

  云轴科技ZStack创建的云主机适用于绝大部分的应用场景,但随着云轴科技ZStack用户数量的不断增长,更多用户提出了高性能云主机的需求。为满足高性能云主机需求,云轴科技ZStack此前为云主机提供了手动配置CPU绑定和vNUMA的接口,但需要用户了解其中原理并且手动分配物理机资源才能进行配置,操作门槛较高。因此ZStack Cloud云平台在4.3.12版本上升级了原有的vNUMA配置方法,带来了全新的智能vNUMA(virtual NUMA)功能。

  01 什么是NUMA架构

  NUMA(Non-uniform memory access、非统一内存访问)架构是一种为多处理器电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。NUMA架构通过对CPU和内存资源分组,引入了本地内存和远程内存。访问本地内存可以直接通过当前node的内存控制器,但是远程内存就需要通过inter-connect通道来访问。这种物理结构决定了在访问远程内存的延迟会比访问本地内存更高。

image.png

图1  NUMA架构示例图

  ZStack Cloud云平台创建的VM通过操作系统的调度策略,会尽量让同一个VM的CPU、内存资源保持在同一个NUMA node上,当出现资源非常紧张,或者CPU、内存规格不合理导致操作系统难以分配资源的情况时,可能会因为跨NUMA内存访问带来的内存访问延迟而导致VM性能下降。

  市面上的一些IaaS软件也提供了vNUMA配置功能,但限制较多:

  1.需要手动设置vCPU绑定,且VM资源优先绑定在物理机同一个NUMA node上;

  2.对VM的CPU数量有要求并且不支持手动绑定到物理机NUMA node上。

  对于VM的CPU、内存以及vNUMA node资源与物理机上对应资源,均无法查看两者之间的绑定关系。过去版本的ZStack Cloud云平台也提供了vNUMA配置接口,但需要用户手动规划云主机的vCPU和内存区域如何与物理机上CPU和内存区域绑定,并且手动配置vCPU绑定、vNUMA拓扑等,这一系列流程对于用户来说操作难度较大。

  基于上述原因,ZStack Cloud云平台在4.3.12版本上优化了vNUMA配置流程,带来了全新的智能vNUMA功能。

  02 ZStack智能vNUMA配置

  ZStack 智能vNUMA方案是基于现有的CPU绑定功能拓展而来。基于云主机使用的vCPU和物理机pCPU的绑定关系自动生成与物理机NUMA拓扑一致的云主机 vNUMA拓扑,即根据vCPU pin pCPU的绑定关系,透传pCPU所在的物理机NUMA拓扑信息作为云主机的vNUMA拓扑(NUMA拓扑一致性)。

  要开启vNUMA并生效,存在前提条件:

  1.云主机所有的vCPU均绑定了物理机CPU;

  2.云主机的单个vCPU绑定的多个pCPU不能分别属于物理机上多个NUMA node。例如vCPU 0绑定了物理机上NUMA node 0中的CPU 0以及NUMA node 1中的CPU16,由于vCPU 0可能运行在物理机NUMA node 0 或者node 1上,具有不确定性,故而无法开启vNUMA;

  3.配置vNUMA后需要重启才能生效。ZStack智能vNUMA方案在原先允许手动配置CPU绑定的基础上提供了智能绑定,可以自动地将vCPU按照1:1的比例绑定到pCPU上,降低了用户操作的难度。后续只需要用户开启vNUMA开关,启动云主机时各个vNUMA node的内存大小会根据云主机内存大小以及各个vNUMA node中vCPU数量的比例来自动分配,并且自动配置云主机的vNUMA 拓扑信息。云主机启动成功后即可在ZStack Cloud云平台页面上查看vNUMA拓扑与物理机NUMA拓扑之间的绑定关系,让用户更加直观地了解云主机的vCPU和内存与物理机CPU和内存的对应关系。

  03 性能测试

  通过在相同的两台物理机上创建相同规格的云主机,进行MySQL性能测试,验证vNUMA开启与关闭状态下的性能表现。

  3.1  配置与测试工具

  物理机配置

image.png

  ZStack Cloud云平台配置

image.png

  测试工具

image.png

  云主机配置

image.png

  MySQL配置

image.png

  3.1  配置与测试工具

  使用相同的服务器硬件、云主机规格以及MySQL版本,使用HammerDB在数据库MySQL写入1000个warehouse的测试数据。然后其中一台云主机开启vNUMA,配置如表1所示,并在MySQL配置文件中设置innodb_numa_interleave=1。最后使用HammerDB测试MySQL性能并记录。

image.png

表1 开启vNUMA的云主机的配置情况

image.png

图2  24C80G云主机vNUMA拓扑图

  3.3 测试数据

  MYSQL TPM(Transaction Per Minute)性能对比图表:

image.png

  表2 MYSQL TPM(Transaction Per Minute)性能对比图表

image.png

图3  vNUMA启用前后MySQL TPM性能对比图表

  MySQL NOPM(New Order Per Minute)性能对比图表:‍

image.png

  表3 MySQL NOPM(New Order Per Minute)性能对比图表

image.png

图4   vNUMA启用前后MySQL NOPM性能对比图表

  3.4 结论

  vNUMA功能启用后,MySQL性能提升明显,平均提升约为15%,在测试压力较大时性能可以提升18%,提升更明显。

  04 思考

  1、本次测试未做CPU isolate、物理机上的内核进程以及中断等,仍然可以在已经被绑定的pCPU上运行,可能会影响到pCPU的性能。

  2、本次测试中物理机未启用大页内存,启用大页内存可以减少操作系统对页面状态的维护,并且能够提升Translation Lookaside Buffer(页面缓冲,TLB)的命中率,启用大页内存通常对数据库有性能提升的作用。


THE END
免责声明:本文系转载,版权归原作者所有;刊载之目的为传播更多信息,如内容不适请及时通知我们。

相关热点

  近日消息,快科技从特斯拉官网获悉,特斯拉新车将不再享受终身免费的标准车载娱乐服务,8年后需付费订阅,具体价格目前并未公布。  特斯拉方面的公告显示:下单日期为2022...
汽车
  7月24日,搭载问天实验舱的长征五号B遥三运载火箭,在文昌航天发射场点火发射。7月25日,问天实验舱成功对接于天和核心舱前向端口。随后,神舟十四号航天员乘组顺利进入问...
业界

相关推荐

1
3