一、背景
隨著互聯網和通信技術的蓬勃發展,云計算產業已經成為計算機行業的重要一環。而云游戲又是其中異軍突起的應用場景。云游戲服務將游戲的計算渲染任務從傳統的用戶端向服務端集中。在眾多不同的云游戲實現方案中,在服務器上利用虛擬化技術運行游戲是目前各云游戲廠商的主要方案之一。基于虛擬化技術實現的云游戲方案在大幅降低用戶進行游戲所需要的計算機硬件配置的同時也對服務端虛擬機的性能,功能,穩定性和成本等方面提出了不同于傳統應用場景虛擬機的新需求。但是目前主流的虛擬機實現方案都并未針對游戲做出特殊優化。不管是傳統的通用計算型虛擬機,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硬件產業的不斷發展,目前的民用硬件穩定性較以往已經有了非常大的提升,二是云游戲虛擬機在游戲串流場景中只作為一個渲染計算節點,單節點故障并不影響全局業務運行,故障節點會自動下機,再人為處理重新上線即可。且云游戲是對成本非常敏感的業務,若對穩定性設計要求過于嚴苛會導致建設成本急劇增加。對于云游戲虛擬機,我們應該在保證基本穩定性的前提下削減不必要的硬件配置以降低單節點成本,同時減少單節點體積和功耗以降低機房建設成本。