searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

针对云游戏优化的虚拟机VCPU大小核分配及异类线程调度方法

2023-08-01 07:41:05
61
0

一、背景技术

1、随着互联网和通信技术的蓬勃发展,云计算产业已经成为计算机行业的重要一环。而云游戏又是其中异军突起的应用场景。云游戏服务将游戏的计算渲染任务从传统的用户端向服务端集中。在众多不同的云游戏实现方案中,在服务器上利用虚拟化技术运行游戏是目前各云游戏厂商的主要方案之一。云服务厂商通过虚拟机技术如Linux常用的KVM技术可以对虚拟机设置静态的核心数量以及超售比例。为了达成多核性能动态分配,在多虚拟机的场景下,服务器物理核心以及线程在超售之后会通过分时复用的机制轮流供多个虚拟机进行调度。这种调度技术在各个虚拟机负载类似的场景下能让各个虚机平分每个物理核心的算力,对于虚拟机中的传统多线程并行任务来说可以提升服务器多核性能利用率且并不影响使用体验。

2、但是对于虚拟机中的游戏场景来说就会出现性能问题。因为目前主流的网络游戏基本上是单核优化,也就是游戏负载只会调度虚拟机中一个或少数几个核心,因此在其他硬件不受限的情况下虚拟机中的单核性能会是影响游戏帧率流畅度的首要指标。而在上述传统的对称调度分配算法下,多台虚机可能会平均分配一个物理核心的算力,这样就会使得游戏因单核性能下降出现严重的帧率波动和流畅度下滑。因此传统的超售式虚拟机VGPU分配方式并不完全适合云游戏场景。

3、为了解决单核性能不足的问题,传统的虚拟机VCPU分配方法还可以采用CPU独占绑定核心技术。这种做法是将宿主机的每一个物理核心以及线程都绑定到某个虚机上的核心或线程,而不与其他虚拟机共享。这种分配调度算法可以解决虚拟机单核性能不足的问题,但是由于绑定了核心无法超售,每台虚拟机能够分配的核心数量会减少且在某个核心空闲时无法将算力共享给其他虚拟机,因此在遇到重负载需要多核性能的3A游戏就会出现因多核性能不足而导致帧率波动和流畅度下滑。因此传统的虚拟机机绑核分配方式也并不能完全解决云游戏性能问题。

 

二、新方法思路

本文所提出的针对云游戏场景下一种新型虚拟机VCPU调度和分配方法,主要通过虚拟机中非对称大小核分配技术和系统线程调度的异类线程调度策略对虚拟机VCPU性能进行优化。主要包括以下步骤:

  • 将宿主机的核心和线程根据numa节点进行分簇,即每一个numa节点所包含的全部核心,线程及其内存即为一个簇。
  • 利用cpu set技术将簇内的核心及线程分为初始两组,一组为独占核心(大核),另一组为共享核心(小核),两组核心的数量配比根据每个numa节点虚拟机数量决定,调度脚本会根据当前虚机数量自动调整独占核心组和共享核心组的核心数配比。推荐独占核心组的核心线程数量是能够保证每个虚拟机独占2核4线程,剩余的核心和线程数量放置入共享核心组。
  • 调度脚本创建虚拟机时,首先对独占核心组进行2核4线程预扩容并对共享核心组进行预缩容(等待调度程序将这4个线程的任务迁移至其他共享核心组后扩缩容生效),然后对创建的虚拟机参数配置做特定改动,假设虚拟机需要设置为1Sockets 8Cores 16Threads, 对于操作系统而言8核16线程即为16个vcpu,且相邻的两个vcpu会被识别为同1个核心的2个超线程。因此将虚拟机中vcpu0到vcpu3(2核4线程)通过cpu pin机制绑定到一个簇中独占核心组的4个相邻物理线程(对应物理2核心的4个超线程)。并将虚拟机剩余的6核12线程(vcpu4到vcpu15)分配到该簇共享核心组的cpu set中。
  • 虚拟机镜像预装的执行脚本需要针对上述分配策略做相应的配置项,其中分入独占核心组的vcpu视为大核,分入共享核心组的vcpu视为小核。在不同的操作系统中对其配置稍有不同,云游戏运行环境大多数处于Windows系统,因此此处使用Windows特性做说明,此处会利用异类线程调度策略(HTS)进行虚机中的大小核调度。异类线程调度策略可以将线程调度到不同的处理器核心上,以提高系统的性能和能效比。执行脚本根据VCPU属于独占核心组还是共享核心组配置大核和小核。此时独占的大核心拥有更强的计算能力,适合处理单个线程或者对单线程性能要求较高的任务,比如游戏、视频编辑、编译等。共享的小核心性能适合处理多线程并发任务,比如文件传输、批量转码、编译大型软件等。
  • 虚拟机销毁时,调度程序同样对独占核心组和共享核心组分别做缩容和扩容

三、流程结构图

图1 流程逻辑图

 

图2 整体架构图

 

四、方法总结

本方法与现有的技术相比,具有以下优点与有益效果:

  • 针对云游戏场景中的单核优化游戏相较于传统VCPU超售分配方法保证了虚拟机的单核性能
  • 针对云游戏场景中的多核优化游戏相较于传统VCPU独占绑核分配方法保证了虚拟机的多核性能和服务器CPU整体使用率
  • 通过动态调整独占核心组和共享核心组能够实现两者之间的动态配比,自动调整算力分配
  • 通过修改异类线程调度策略可以使得虚拟机操作系统能够正常按照大小核机制对不同核心调度不同的任务负载
0条评论
0 / 1000
l****n
12文章数
0粉丝数
l****n
12 文章 | 0 粉丝
原创

针对云游戏优化的虚拟机VCPU大小核分配及异类线程调度方法

2023-08-01 07:41:05
61
0

一、背景技术

1、随着互联网和通信技术的蓬勃发展,云计算产业已经成为计算机行业的重要一环。而云游戏又是其中异军突起的应用场景。云游戏服务将游戏的计算渲染任务从传统的用户端向服务端集中。在众多不同的云游戏实现方案中,在服务器上利用虚拟化技术运行游戏是目前各云游戏厂商的主要方案之一。云服务厂商通过虚拟机技术如Linux常用的KVM技术可以对虚拟机设置静态的核心数量以及超售比例。为了达成多核性能动态分配,在多虚拟机的场景下,服务器物理核心以及线程在超售之后会通过分时复用的机制轮流供多个虚拟机进行调度。这种调度技术在各个虚拟机负载类似的场景下能让各个虚机平分每个物理核心的算力,对于虚拟机中的传统多线程并行任务来说可以提升服务器多核性能利用率且并不影响使用体验。

2、但是对于虚拟机中的游戏场景来说就会出现性能问题。因为目前主流的网络游戏基本上是单核优化,也就是游戏负载只会调度虚拟机中一个或少数几个核心,因此在其他硬件不受限的情况下虚拟机中的单核性能会是影响游戏帧率流畅度的首要指标。而在上述传统的对称调度分配算法下,多台虚机可能会平均分配一个物理核心的算力,这样就会使得游戏因单核性能下降出现严重的帧率波动和流畅度下滑。因此传统的超售式虚拟机VGPU分配方式并不完全适合云游戏场景。

3、为了解决单核性能不足的问题,传统的虚拟机VCPU分配方法还可以采用CPU独占绑定核心技术。这种做法是将宿主机的每一个物理核心以及线程都绑定到某个虚机上的核心或线程,而不与其他虚拟机共享。这种分配调度算法可以解决虚拟机单核性能不足的问题,但是由于绑定了核心无法超售,每台虚拟机能够分配的核心数量会减少且在某个核心空闲时无法将算力共享给其他虚拟机,因此在遇到重负载需要多核性能的3A游戏就会出现因多核性能不足而导致帧率波动和流畅度下滑。因此传统的虚拟机机绑核分配方式也并不能完全解决云游戏性能问题。

 

二、新方法思路

本文所提出的针对云游戏场景下一种新型虚拟机VCPU调度和分配方法,主要通过虚拟机中非对称大小核分配技术和系统线程调度的异类线程调度策略对虚拟机VCPU性能进行优化。主要包括以下步骤:

  • 将宿主机的核心和线程根据numa节点进行分簇,即每一个numa节点所包含的全部核心,线程及其内存即为一个簇。
  • 利用cpu set技术将簇内的核心及线程分为初始两组,一组为独占核心(大核),另一组为共享核心(小核),两组核心的数量配比根据每个numa节点虚拟机数量决定,调度脚本会根据当前虚机数量自动调整独占核心组和共享核心组的核心数配比。推荐独占核心组的核心线程数量是能够保证每个虚拟机独占2核4线程,剩余的核心和线程数量放置入共享核心组。
  • 调度脚本创建虚拟机时,首先对独占核心组进行2核4线程预扩容并对共享核心组进行预缩容(等待调度程序将这4个线程的任务迁移至其他共享核心组后扩缩容生效),然后对创建的虚拟机参数配置做特定改动,假设虚拟机需要设置为1Sockets 8Cores 16Threads, 对于操作系统而言8核16线程即为16个vcpu,且相邻的两个vcpu会被识别为同1个核心的2个超线程。因此将虚拟机中vcpu0到vcpu3(2核4线程)通过cpu pin机制绑定到一个簇中独占核心组的4个相邻物理线程(对应物理2核心的4个超线程)。并将虚拟机剩余的6核12线程(vcpu4到vcpu15)分配到该簇共享核心组的cpu set中。
  • 虚拟机镜像预装的执行脚本需要针对上述分配策略做相应的配置项,其中分入独占核心组的vcpu视为大核,分入共享核心组的vcpu视为小核。在不同的操作系统中对其配置稍有不同,云游戏运行环境大多数处于Windows系统,因此此处使用Windows特性做说明,此处会利用异类线程调度策略(HTS)进行虚机中的大小核调度。异类线程调度策略可以将线程调度到不同的处理器核心上,以提高系统的性能和能效比。执行脚本根据VCPU属于独占核心组还是共享核心组配置大核和小核。此时独占的大核心拥有更强的计算能力,适合处理单个线程或者对单线程性能要求较高的任务,比如游戏、视频编辑、编译等。共享的小核心性能适合处理多线程并发任务,比如文件传输、批量转码、编译大型软件等。
  • 虚拟机销毁时,调度程序同样对独占核心组和共享核心组分别做缩容和扩容

三、流程结构图

图1 流程逻辑图

 

图2 整体架构图

 

四、方法总结

本方法与现有的技术相比,具有以下优点与有益效果:

  • 针对云游戏场景中的单核优化游戏相较于传统VCPU超售分配方法保证了虚拟机的单核性能
  • 针对云游戏场景中的多核优化游戏相较于传统VCPU独占绑核分配方法保证了虚拟机的多核性能和服务器CPU整体使用率
  • 通过动态调整独占核心组和共享核心组能够实现两者之间的动态配比,自动调整算力分配
  • 通过修改异类线程调度策略可以使得虚拟机操作系统能够正常按照大小核机制对不同核心调度不同的任务负载
文章来自个人专栏
云游戏
12 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0