一、背景
随着互联网和通信技术的蓬勃发展,云计算产业已经成为计算机行业的重要一环。而云游戏又是其中异军突起的应用场景。云游戏服务将游戏的计算渲染任务从传统的用户端向服务端集中。在众多不同的云游戏实现方案中,在服务器上利用虚拟化技术运行游戏是目前各云游戏厂商的主要方案之一。基于虚拟化技术实现的云游戏方案在大幅降低用户进行游戏所需要的计算机硬件配置的同时也对服务端虚拟机的性能,功能,稳定性和成本等方面提出了不同于传统应用场景虚拟机的新需求。但是目前主流的虚拟机实现方案都并未针对游戏做出特殊优化。不管是传统的通用计算型虚拟机,GPU计算型虚拟机还是存储型虚拟机等在性能,稳定性,功能性上的要求都和云游戏虚拟机需求有较大不同,例如通用计算型虚拟机侧重于CPU的多核并发能力对CPU的多核性能有较高需求,而游戏普遍对CPU多核性能需求并不强烈反而对CPU单核性能有较高要求。又譬如传统的GPU计算型虚拟机虽然也具备图像渲染能力,但是其主要应用场景还是集中在数据运算,深度学习,科学计算等侧重于浮点计算场景,而游戏则侧重于GPU的光栅渲染能力和高IO能力。因此针对这些传统虚拟机应用场景设计的评测模型和方法难以准确反应云游戏特殊的应用场景需求。
二、分析
主要包括了云游戏对虚拟机的需求分析,量化,建模,以及针对该模型设计一套标准化的云游戏虚拟机能力评测流程方法。
总体流程是首先分析云游戏场景对虚拟机CPU,GPU,总线,内存,存储,稳定性以及上层宿主机部分关键指标等方面的需求,并将其和传统虚拟机需求,传统家用游戏电脑需求进行对比,进而分析其需求差异并根据其差异进行需求量化设计,构建一个初步的云游戏虚拟机需求模型,针对模型的每个需求项设计单独的测试项目和方法,并设计其分数权重体系,具体的评分计算模型和标准化评测流程方法。下面分别介绍各个子流程的分析,设计和方法。、
- 云游戏虚拟机需求分析
云游戏虚拟机作为游戏画面计算渲染的主体,首先要满足游戏对性能的要求。游戏对硬件资源的消耗与游戏类型,分辨率,画质选项等因素息息相关。目前主流游戏按照性能消耗来划分主要分为CPU瓶颈类游戏和GPU瓶颈类游戏,CPU瓶颈类游戏是指该游戏在主流硬件配置下决定其帧率上限的是CPU的性能尤其是单核性能,其中比较有代表性的游戏是《英雄联盟》,这类游戏对主流GPU的占用率往往不高,换用更高级的GPU对游戏帧率的提升并没有帮助。与之相反的GPU瓶颈类游戏则是对GPU性能更加敏感,典型是《赛博朋克2077》,GPU性能决定其帧率上限,主流GPU占用率往往达到100%,这时更换性能更好的GPU即可提升帧率。除此之外,同一款游戏在选择不同的分辨率和画质也会对帧率有较大影响,而且提升分辨率和画质对GPU的性能消耗往往要远大于CPU,因此会造成一种现象即某款游戏在1080P分辨率低画质下是CPU瓶颈,而调整到4K分辨率高画质后会转化为GPU瓶颈。但是云游戏虚拟机和传统家用游戏电脑的区别在于,一台家用游戏电脑侧重于全部资源用于提升单一游戏进程的分辨率、画质和帧率,而一台云游戏虚拟机的宿主机则需要同时运行多个实例,利用容器或者虚拟化技术实现多个游戏进程并发运行,而虚拟机内还需要运行串流和监控等服务程序,需要一定的并发性能。现阶段由于网络带宽限制,云游戏要求的分辨率和帧率往往低于高端的家用游戏电脑。因此云游戏虚拟机只需保证游戏进程达到串流所需的分辨率(1080P、2K)和帧率(60Hz、144Hz)即可,超出的分辨率和帧率无法传输到客户端,是一种资源浪费。
基于以上需求分析,我们认为云游戏虚拟机在CPU方面相较于传统计算型虚拟机其单核性能要求更高,相较于传统家用游戏电脑,云游戏虚拟机则对多核并发能力有一定要求,对其的量化建模需要考虑单核多核性能均衡。
对于GPU性能,则要与cpu单核性能相匹配,若GPU性能超出CPU单核上限,则GPU占用率无法占满,造成性能浪费。GPU除了渲染性能之外,还有一点对游戏表现也有至关重要的影响,既宿主机pcie总线带宽和多GPU拓扑结构。传统家用游戏电脑,一般只会安装一张GPU,一张GPU独占pcie*16通道,因此总线带宽不会有瓶颈。云游戏虚拟机的服务器因为要进行多游戏进程计算渲染以降低成本,因此一般要安装多张GPU,这些GPU往往根据不同的GPU拓扑结构共享一条或者两条pcie*16通道,会出现GPU带宽瓶颈。而传统GPU型虚拟机服务器虽然一般会安装4张GPU以上,但是这些虚拟机一般是深度学习和工业渲染等高计算低IO场景。因此传统GPU型虚拟机服务器使用多GPU卡共享带宽的拓扑结构并不会对计算性能有太大影响。但是游戏渲染属于典型等GPU高IO场景,GPU需要频繁和CPU进行数据交换,若使用不合理等GPU拓扑结构,则会导致高负载时数据交换带宽不够,导致严重的性能下降。因此在对云游戏虚拟机进行需求建模时要考虑宿主机满负载时各个虚拟机GPU是否会出现带宽瓶颈。
除了CPU和GPU外,内存的读写速率读写延迟,存储的速度也会对部分游戏帧率有一定影响。综上所述,游戏的画面渲染是典型的木桶效应,配置的最短板会直接决定游戏帧率的上限值。因此云游戏虚拟机需要做到兼顾各个配置的综合能力,避免出现不合理的配置搭配。
除了性能方面对需求之外,云游戏虚拟机还对运行稳定性有一定要求。而这往往是家用主机容易忽略的领域。传统企业虚拟机服务器虽然对稳定性及运行环境有严格要求,但是这些要求对于云游戏虚拟机来说又过于冗余代价过高。举几个典型例子,传统虚拟机一般使用英特尔企业级的志强CPU搭配ECC自纠错内存,存储使用企业级存储组raid,电源一般也会使用双冗余,这些对于稳定性上的考量设计对于一台运行企业重要业务的传统虚拟机来说是并不为过的。但是云游戏业务则不同,一是随着目前IT硬件产业的不断发展,目前的民用硬件稳定性较以往已经有了非常大的提升,二是云游戏虚拟机在游戏串流场景中只作为一个渲染计算节点,单节点故障并不影响全局业务运行,故障节点会自动下机,再人为处理重新上线即可。且云游戏是对成本非常敏感的业务,若对稳定性设计要求过于严苛会导致建设成本急剧增加。对于云游戏虚拟机,我们应该在保证基本稳定性的前提下削减不必要的硬件配置以降低单节点成本,同时减少单节点体积和功耗以降低机房建设成本。