相關(guān)申請的交叉引用
本申請要求2013年11月11日提交的美國專利申請?zhí)?4/077,146的權(quán)益,所述申請的公開內(nèi)容以引用方式整體并入本文。
本申請涉及以下申請:2013年11月11日提交的標(biāo)題為“videoencodingbasedonareasofinterest(基于感興趣區(qū)域的視頻編碼)”(代理人案號:101058.000083)的美國專利申請?zhí)?4/076,718;2013年11月11日提交的標(biāo)題為“adaptivescenecomplexitybasedonservicequality(基于服務(wù)質(zhì)量的自適應(yīng)場景復(fù)雜性)”(代理人案號:101058.000084)的美國專利申請?zhí)?4/076,821;2013年11月11日提交的標(biāo)題為“serviceforgeneratinggraphicsobjectdata(用于生成圖形對象數(shù)據(jù)的服務(wù))”(代理人案號:101058.000086)的美國專利申請?zhí)?4/077,127;2013年11月11日提交的標(biāo)題為“imagecompositionbasedonremoteobjectdata(基于遠(yuǎn)程對象數(shù)據(jù)的圖像合成)”(代理人案號:101058.000087)的美國專利申請?zhí)?4/077,136;2013年11月11日提交的標(biāo)題為“multipleparallelgraphicsprocessingunits(多個并行圖像處理單元)”(代理人案號:101058.000110)的美國專利申請?zhí)?4/077,165;2013年11月11日提交的標(biāo)題為“adaptivecontenttransmission(自適應(yīng)內(nèi)容傳輸)”(代理人案號:101058.000114)的美國專利申請?zhí)?4/077,084;2013年11月11日提交的標(biāo)題為“viewgenerationbasedonsharedstate(基于共享狀態(tài)的視圖生成)”(代理人案號:101058.000115)的美國專利申請?zhí)?4/077,180;2013年11月11日提交的標(biāo)題為“multiplestreamcontentpresentation(多流內(nèi)容呈現(xiàn))”(代理人案號:101058.000116)的美國專利申請?zhí)?4/077,186;2013年11月11日提交的標(biāo)題為“datacollectionformultipleviewgeneration(用于多視圖生成的數(shù)據(jù)收集)”(代理人案號:101058.000124)的美國專利申請?zhí)?4/077,149;2013年11月11日提交的標(biāo)題為“streaminggameservervideorecorder(流式游戲服務(wù)器錄像機)”(代理人案號:101058.000125)的美國專利申請?zhí)?4/077,142;2013年11月11日提交的標(biāo)題為“l(fā)ocationofactorresources(演員資源的定位)”(代理人案號:101058.000128)的美國專利申請?zhí)?4/076,815;2013年11月11日提交的標(biāo)題為“applicationstreamingservice(應(yīng)用流傳輸服務(wù))”(代理人案號:101058.000139)的美國專利申請?zhí)?4/077,023;2013年11月11日提交的標(biāo)題為“efficientbandwidthestimation(有效帶寬估計)”(代理人案號:101058.000141)的美國專利申請?zhí)?1/902,740,所述申請中的每一個據(jù)此以引用方式整體并入本文。
背景技術(shù):
計算設(shè)備諸如移動電話、平板計算機、游戲控制臺等可能未被配備成以對某些應(yīng)用來說足夠的速度和細(xì)節(jié)來渲染圖形。渲染圖形,也可以被描述為用于生成在游戲和其他計算機應(yīng)用中使用的圖像的過程,可以利用專用的計算資源,諸如可能在計算設(shè)備上不可用的圖形處理單元。在一些情況下,資源是可用的但是將消耗過度的功率,或者將以不足的速度運行或提供水平不足的圖形質(zhì)量。
可以通過位于遠(yuǎn)程設(shè)施處的計算資源向客戶端設(shè)備提供圖形渲染能力。所述設(shè)施例如可以配備有多組圖形處理單元(“gpu”)或?qū)S糜谔峁╀秩痉?wù)的其他硬件。然而,即使是在使用專用硬件的情況下,提供圖形渲染服務(wù)也可能消耗大量的計算資源。例如,圖形渲染可涉及將各種模型、紋理、位圖等加載到存儲器中。當(dāng)相關(guān)的過程在客戶端設(shè)備上運行時,這些資源可以保持在存儲器中。資源利用率的管理可以改善渲染服務(wù)的性能和效率。
附圖簡述
結(jié)合附圖閱讀時,可以更好地理解以下詳細(xì)描述。出于說明的目的,附圖中示出本公開的各個方面的示例性實施方案;然而,實施方案并不限于所公開的具體方法和手段。
圖1是描繪用于向客戶端過程提供遠(yuǎn)程渲染服務(wù)的系統(tǒng)的實例的框圖。
圖2是描繪配置成利用遠(yuǎn)程渲染服務(wù)的客戶端的框圖。
圖3是描繪在虛擬機實例上執(zhí)行渲染過程的示例性內(nèi)容提供商系統(tǒng)的框圖。
圖4是描繪用于激活和去激活在虛擬機實例上執(zhí)行的渲染過程的示例性過程的流程圖。
圖5是描繪用于將客戶端與渲染過程和渲染過程可在其上執(zhí)行的虛擬機實例相關(guān)聯(lián)的示例性過程的流程圖。
圖6是描繪用于維持被配置成執(zhí)行渲染過程的虛擬機實例池的示例性過程的流程圖。
圖7是描繪可以在一些實施方案中使用的示例性計算系統(tǒng)的框圖。
圖8是描繪可以在一些實施方案中使用的示例性計算系統(tǒng)的框圖。
詳述
根據(jù)所公開技術(shù)的一些示例性特征,特定內(nèi)容項(諸如視頻游戲)的場景的一個或多個渲染視圖可以由內(nèi)容提供商生成并且從提供商傳輸?shù)蕉鄠€不同的客戶端,在一些情況下,內(nèi)容提供商可以生成特定內(nèi)容項的場景或虛擬環(huán)境的多個視圖。所述多個視圖中的每一個例如可以與一個或多個相應(yīng)客戶端相關(guān)聯(lián),并且可以從內(nèi)容提供商傳輸?shù)较鄳?yīng)客戶端。例如,每個視圖可以呈現(xiàn)從所述視圖傳輸?shù)降南鄳?yīng)客戶端所控制的特定角色或其他實體的角度來看的場景。視圖可基于由內(nèi)容提供商維持的游戲或其他視頻內(nèi)容的共享狀態(tài)。在一些情況下,內(nèi)容提供商可以將特定內(nèi)容項的場景的相同視圖傳輸?shù)蕉鄠€客戶端。相同視圖例如可以傳輸?shù)綇奶囟ń巧慕嵌扔^看游戲的客戶端。
內(nèi)容提供商可以通過渲染過程提供渲染服務(wù)。在一些情況下并且在一些實施方案中,渲染過程可以對應(yīng)于可執(zhí)行應(yīng)用的實例。然而,渲染過程可替代地包括組件啟用、程序庫調(diào)用、對象、可執(zhí)行應(yīng)用的多個實例等。
渲染過程可以與一組一個或多個客戶端相關(guān)聯(lián)。每個客戶端繼而可以與一個或多個用戶相關(guān)聯(lián)。渲染過程可以與特定內(nèi)容項(諸如游戲、動畫、電視節(jié)目等)相關(guān)聯(lián)。渲染過程還可以與內(nèi)容項的實例相關(guān)聯(lián)。例如,多玩家游戲可以提供一組客戶端之間的交互。在此類情況下,實施方案可以將渲染過程與所述一組客戶端相關(guān)聯(lián)。在一些情況下并且在一些實施方案中,多個渲染過程可以與一個游戲?qū)嵗嚓P(guān)聯(lián),并且每個渲染過程可以與一個或多個客戶端相關(guān)聯(lián)。例如,在大規(guī)模的多玩家游戲中或群組觀看電影或電視節(jié)目時可以采用這種方法。
為了使得能夠生成顯示內(nèi)容的單個共享狀態(tài)并且從那個狀態(tài)內(nèi)選擇場景的一個或多個視圖,不同參與客戶端中的每一個可以收集相應(yīng)客戶端狀態(tài)信息??蛻舳藸顟B(tài)信息可包括例如關(guān)于在相應(yīng)客戶端處執(zhí)行的操作(諸如由相應(yīng)客戶端控制的相應(yīng)角色或其他實體執(zhí)行的移動或其他動作)的信息。客戶端可以周期性地將其相應(yīng)客戶端狀態(tài)信息的更新傳輸?shù)絻?nèi)容提供商。內(nèi)容提供商隨后可以使用從每個客戶端接收到的客戶端狀態(tài)信息更新來更新由內(nèi)容提供商維持的共享內(nèi)容項狀態(tài)信息。內(nèi)容提供商隨后可以使用所述共享內(nèi)容項狀態(tài)信息來生成傳輸?shù)讲煌瑓⑴c客戶端的一個或多個視圖。
客戶端狀態(tài)信息還可包括與客戶端的用戶提供的輸入相關(guān)的或反映所述輸入的信息。例如,客戶端的用戶可以按壓按鈕、移動操縱桿、對麥克風(fēng)說話等。來自客戶端(諸如所呈現(xiàn)的實例)的輸入可導(dǎo)致由相應(yīng)客戶端控制的相應(yīng)角色或其他實體執(zhí)行的移動或其他動作。在一些情況下并且在一些實施方案中,輸入可以不與游戲角色的控制相關(guān)。輸入還可以對應(yīng)于用戶的存在。例如,運動敏感的攝像機可以指示客戶端的用戶的存在。
在一些實施方案中,客戶端狀態(tài)信息可包括關(guān)于旁觀者狀態(tài)、記錄狀態(tài)等的信息。例如,用戶可以是多玩家游戲中的旁觀者,在這種情況下客戶端狀態(tài)信息可包含指示旁觀者的存在的信息,即使旁觀者可能不向客戶端提供輸入,或間歇地提供輸入。在另一個實施方案中,客戶端設(shè)備可能正在記錄信息,在這種情況下客戶端狀態(tài)信息可以包括正在記錄所傳輸內(nèi)容的指示。一些實施方案可以利用渲染服務(wù)以使得能夠觀看電影、電視、體育事件等。在一個這種實施方案中,客戶端狀態(tài)信息可涉及從對所顯示內(nèi)容做出評論的用戶接收文本輸入、音頻輸入或其他輸入。
接收客戶端狀態(tài)信息可以指示啟動、恢復(fù)或繼續(xù)與一個或多個客戶端相關(guān)聯(lián)的渲染過程的活動狀態(tài)。內(nèi)容提供商或渲染過程可以接收包含對應(yīng)于或指示客戶端狀態(tài)信息的數(shù)據(jù)的各種傳輸或消息。指示渲染過程的活動狀態(tài)的客戶端狀態(tài)信息包括但不限于由用戶提供的輸入、用戶的存在、旁觀者狀態(tài)、記錄狀態(tài)等。
渲染過程可以在虛擬機的實例上執(zhí)行,或在除虛擬機實例之外的其他類型的計算節(jié)點上執(zhí)行。虛擬機實例還可以被稱為虛擬機。在一些實施方案中,可能存在渲染過程與計算節(jié)點的一對一的關(guān)聯(lián)。在其他實施方案中,多個渲染過程可以在同一個計算節(jié)點上執(zhí)行。實施方案可以將對應(yīng)于同一個內(nèi)容項的渲染過程與同一個計算節(jié)點相關(guān)聯(lián)。這種方法可以使得渲染過程能夠共享內(nèi)容相關(guān)的圖形資源。
內(nèi)容提供商可以通過使可用于活動的渲染過程的計算資源最大化來提高其操作效率。在其上執(zhí)行渲染過程的虛擬機可以消耗否則可用于執(zhí)行其他渲染過程的其他虛擬機的資源。為了使可用于運行活動的渲染過程的虛擬機的計算資源最大化,可以使正在運行不活動的渲染過程的那些虛擬機暫停。不活動的渲染過程可以是其執(zhí)行狀態(tài)保持在暫停的虛擬機的狀態(tài)中的執(zhí)行過程。
不活動的渲染過程可包括其客戶端當(dāng)前不需要渲染服務(wù)的渲染過程。在各種情況下并且在各種實施方案中,客戶端狀態(tài)信息可以由內(nèi)容提供商接收??蛻舳藸顟B(tài)信息可以指示當(dāng)前對渲染服務(wù)的需要,其例如可對應(yīng)于以下因素:諸如內(nèi)容的元素的移動、由客戶端的用戶提供的輸入、旁觀者模式、記錄模式等。在各種情況下并且在各種實施方案中,中止接收客戶端狀態(tài)信息可以指示當(dāng)前沒有對渲染服務(wù)的需要。這可以例如在客戶端設(shè)備已關(guān)閉時發(fā)生。另一種可能性是客戶端狀態(tài)可能已改變以使得不再需要渲染服務(wù)。例如,在客戶端上運行的游戲可能已經(jīng)結(jié)束并且新游戲尚未開始。
圖1描繪用于管理虛擬機上的渲染過程的系統(tǒng)的與本發(fā)明實施方案的各方面一致的實例。用戶114可以與客戶端116進(jìn)行交互??蛻舳丝砂ㄓ布O(shè)備,諸如移動電話、平板電腦、游戲控制臺、個人計算機等??蛻舳诉€可包括呈各種組合的形式的應(yīng)用程序118、操作系統(tǒng)或其他軟件模塊??蛻舳诉€可包括渲染服務(wù)應(yīng)用編程接口(“api”)120,其可提供能夠訪問渲染過程(諸如渲染過程104)的客戶端過程118。客戶端過程還可以直接與渲染過程通信。例如,客戶端過程124可以與渲染過程110通信,或者調(diào)用渲染服務(wù)api126的功能以便與渲染過程110通信。
對渲染過程104的訪問可以是直接的或間接的。例如,直接訪問可包括客戶端116通過網(wǎng)絡(luò)112與渲染過程104通信。間接訪問可包括客戶端122通過內(nèi)容提供商100來訪問渲染過程110。在一些實施方案中,代理132可以在內(nèi)容提供商100內(nèi)進(jìn)行操作以便代理對渲染過程(諸如渲染過程110)的訪問。代理還可以在虛擬機102或虛擬機108內(nèi)進(jìn)行操作。
多個用戶諸如用戶128和用戶130可以與客戶端諸如客戶端122進(jìn)行交互。與客戶端諸如客戶端122的交互可包括各種動作和事件。交互的非限制性實例包括游戲控制器移動、麥克風(fēng)輸入、攝像機輸入等。交互可以并入客戶端狀態(tài)信息中??蛻舳藸顟B(tài)信息可包括指示客戶端的用戶的數(shù)量的信息。所述信息可包括允許扣除活動用戶的數(shù)量的信息。例如,客戶端狀態(tài)信息可包括由多個用戶完成的動作。多個客戶端可基于對應(yīng)于由客戶端的用戶(諸如客戶端122的用戶128或用戶130)做出的輸入動作的最后時間度量推斷出。與客戶端相關(guān)聯(lián)的活動用戶的計數(shù)可用于確定是否維持渲染過程(諸如虛擬機108上的渲染過程110)的活動狀態(tài)。例如,如果用戶128和用戶130停止與客戶端122進(jìn)行交互,那么渲染過程110可以進(jìn)入不活動狀態(tài)以使資源消耗最小化。這可以例如通過使虛擬機108暫停來完成。另一種可能性是用戶128和用戶130兩者激活用于客戶端過程124的中止功能。這可以例如由用戶128和用戶130兩者切換到替代的應(yīng)用而發(fā)生。
圖2描繪了包括至少一個客戶端過程202和至少一個渲染服務(wù)api204的客戶端200的實施方案??蛻舳诉^程202可包括實現(xiàn)應(yīng)用的功能的各個方面的一個或多個模塊。應(yīng)用包括但不限于視頻游戲、視頻回放服務(wù)、視頻編輯、動畫、模擬等。模塊可包括計算機可讀指令、電路等的任何組合。模塊例如可包括靜態(tài)和動態(tài)鏈接的程序庫、商業(yè)對象、組件對象、圖形處理單元、物理處理單元等。
渲染服務(wù)api可以充當(dāng)客戶端過程202的組件。它可包括實現(xiàn)功能的各個部分的一個或多個模塊。盡管渲染服務(wù)api204在圖2中被描繪成包含實現(xiàn)功能的特定部分(諸如應(yīng)用關(guān)閉206)的各個模塊,但是本領(lǐng)域的普通技術(shù)人員將了解,包括添加、減少、替換和重組的各種組合是可能的。
應(yīng)用關(guān)閉206描繪渲染服務(wù)api204的接收與客戶端過程202的運行狀態(tài)相關(guān)的指示的模塊。它例如可以接收客戶端過程202將被關(guān)閉、暫?;蛑兄沟耐ㄖ?。然后,它可以向內(nèi)容提供商發(fā)送通知,所述內(nèi)容提供商包括在內(nèi)容提供商內(nèi)進(jìn)行操作的任何代理或渲染過程。通知指示可以暫停與那個應(yīng)用相關(guān)聯(lián)的服務(wù)。
用戶輸入監(jiān)測208可涉及跟蹤與客戶端過程202相關(guān)的用戶活動。它還涉及將用戶活動表示為客戶端狀態(tài)信息,所述客戶端狀態(tài)信息可以從客戶端傳輸?shù)絻?nèi)容提供商。
服務(wù)利用控制210可涉及監(jiān)測影響客戶端過程202有可能請求的渲染過程的水平的事件或?qū)λ鍪录龀鲰憫?yīng)。這些事件包括游戲狀態(tài)的轉(zhuǎn)換,諸如從涉及激活游戲的狀態(tài)到涉及顯示預(yù)先渲染的場景的狀態(tài),后者目前不需要渲染服務(wù)??蛻舳诉^程202可以通過在渲染服務(wù)api204的模塊上調(diào)用的功能調(diào)用、方法調(diào)用或類似技術(shù)來控制事件。服務(wù)利用事件可以例如作為客戶端狀態(tài)信息發(fā)送到內(nèi)容提供商。
硬件事件212可以檢測各種硬件事件并對其做出響應(yīng),所述硬件事件包括但不限于客戶端設(shè)備關(guān)閉、控制器關(guān)閉、顯示器關(guān)閉、系統(tǒng)暫停、系統(tǒng)恢復(fù)等。這些事件還可以指示客戶端過程202有可能請求的渲染過程的水平。指示硬件事件的信息可以例如作為客戶端狀態(tài)信息傳輸?shù)絻?nèi)容提供商。
服務(wù)利用統(tǒng)計214可以與涉及游戲、游戲發(fā)布商、硬件提供商或其他實體使用渲染服務(wù)的信息集合相關(guān)。在一些實施方案中,這些服務(wù)的某些方面可以由渲染服務(wù)api204直接執(zhí)行。這例如可以包括導(dǎo)致將要生成和/或傳輸?shù)膱蟾?。報告可涉及各種使用統(tǒng)計,諸如代表特定客戶端執(zhí)行的使用的水平。在一些實施方案中,服務(wù)利用統(tǒng)計214可間接參與相關(guān)統(tǒng)計的生成,例如通過將識別信息傳輸?shù)絻?nèi)容提供商。識別信息可包括用戶信息、客戶端設(shè)備信息、游戲信息、發(fā)布商信息等??梢圆捎眉用芗夹g(shù)來防止所提供的身份被篡改。
服務(wù)重新定位216可涉及將內(nèi)容提供商、代理、虛擬機或渲染過程與不同的地址(諸如不同的互聯(lián)網(wǎng)協(xié)議(“ip”)地址)重新相關(guān)聯(lián)。重新相關(guān)聯(lián)可基于各種事件諸如利用平衡、故障轉(zhuǎn)移或其他情境而發(fā)生。例如,對應(yīng)于暫停的虛擬機的狀態(tài)可以從一個主機移動到另一個,并且可以在移動之后指派不同的ip地址。實施方案還可以將渲染過程從一個虛擬機重新定位到另一個。
圖3描繪了在虛擬機302上托管渲染服務(wù)的內(nèi)容提供商300的實施方案。盡管圖3描繪了一個虛擬機,但內(nèi)容提供商可以托管多個虛擬機。內(nèi)容提供商可包括一個或多個計算設(shè)施,諸如數(shù)據(jù)中心、服務(wù)器集群、單獨的服務(wù)器等。各個虛擬機可以在內(nèi)容提供商內(nèi)進(jìn)行操作。例如,計算設(shè)施可以操作管理程序和一個或多個虛擬機在其上進(jìn)行操作的各個計算主機。各種控制設(shè)施可以用來創(chuàng)建、移除、關(guān)閉、重新啟動、暫停和再激活虛擬機。
內(nèi)容提供商可以管理虛擬機的狀態(tài)信息。虛擬機可以具有可存儲在存儲設(shè)備上的相關(guān)聯(lián)的狀態(tài)。暫?;蜿P(guān)閉的虛擬機的狀態(tài)可存儲在低延遲高速緩存中。低延遲高速緩存包括但不限于隨機存取存儲器、存儲器內(nèi)數(shù)據(jù)庫、固態(tài)存儲設(shè)備等。暫停的虛擬機的狀態(tài)還可以存儲在與低延遲選項相比可以被描述為高延遲的存儲設(shè)備上。低延遲存儲選項與高延遲存儲選項之間的區(qū)別可基于除底層存儲設(shè)備的質(zhì)量之外的因素。替代地,在一些實施方案中,低延遲存儲裝置和高延遲存儲裝置可以通過總體系統(tǒng)延遲來區(qū)別,所述總體系統(tǒng)延遲可能受諸如網(wǎng)絡(luò)速度、通信量擁塞等的因素影響。
可以指派渲染過程304在虛擬機302上進(jìn)行操作。渲染過程可以提供與圖形處理相關(guān)的各種服務(wù),諸如管理圖形資源和渲染圖形場景。渲染過程可以執(zhí)行渲染流水線的一個或多個步驟。渲染流水線可包括各種數(shù)據(jù)結(jié)構(gòu)、資源和階段(諸如形狀緩沖、頂點緩沖、紋理緩沖、輸入裝配、紋理映射、陰影、渲染目標(biāo)等)。實施方案可包括對各種類型的流水線(包括但不限于2維和3維渲染、物理處理流水線等)的支持。
各個模塊可執(zhí)行與渲染過程304的操作相關(guān)的功能。盡管圖3將這些模塊描繪成不同的實體,但應(yīng)當(dāng)理解,所描繪的模塊可以各種組合的方式進(jìn)行重新排序、重新布置、組合、改變或省略。此外,盡管在圖3中被描繪為與渲染過程304和虛擬機302不同的元素,但由所描繪模塊執(zhí)行的功能中的一些或全部可以由渲染過程304和/或虛擬機302執(zhí)行。
用于客戶端狀態(tài)監(jiān)測306的模塊可以接收和/或處理涉及渲染過程的客戶端的客戶端狀態(tài)信息。實施方案可以監(jiān)測客戶端狀態(tài)信息以便確定用戶活動的存在與否,并且可以進(jìn)一步將所述活動分類為指示維持與客戶端相關(guān)聯(lián)的渲染過程的活動狀態(tài)。渲染過程的活動狀態(tài)可以由以下因素指示:諸如用戶輸入、客戶端對維持活動狀態(tài)的請求(不管不活動的時期)、客戶端上新應(yīng)用的初始化等??苫诮邮盏街甘究蛻舳松系幕顒拥男畔⒍鴮秩具^程維持在活動狀態(tài),所述信息可作為客戶端狀態(tài)信息傳輸?shù)絻?nèi)容提供商??蛻舳松系幕顒永缈梢允侵附邮盏接脩糨斎?、對渲染服務(wù)的請求、渲染過程的活動執(zhí)行等。
客戶端狀態(tài)信息還可以指示到不活動狀態(tài)的轉(zhuǎn)換。缺乏活動可以對應(yīng)于可暗示到渲染過程的不活動狀態(tài)的轉(zhuǎn)換的各種狀況。例如,中斷的網(wǎng)絡(luò)連接可以中斷渲染過程與客戶端之間的通信,在這種情況下,實施方案可以致使渲染過程轉(zhuǎn)換到不活動狀態(tài)??蛻舳藸顟B(tài)監(jiān)測306可以跟蹤或接收涉及接收到最后一次用戶輸入、新應(yīng)用的初始化或涉及客戶端活動的其他信息的信息。如果這個時間超過閾值,那么客戶端狀態(tài)監(jiān)測306可以確定渲染過程304應(yīng)當(dāng)進(jìn)入不活動狀態(tài)。在接收對應(yīng)于渲染過程的活動狀態(tài)的信息時,實施方案可以致使不活動的渲染過程轉(zhuǎn)換到活動狀態(tài)。
渲染過程可通過使渲染過程在其上運行的虛擬機暫停而轉(zhuǎn)換到活動狀態(tài)。在一些實施方案中,暫停的虛擬機可以保持在其主機的主存儲器中,但是不消耗中央處理單元周期。在另一個實施方案中,暫停的虛擬機的狀態(tài)可以存儲在低延遲高速緩存中,或存儲在其他形式的存儲設(shè)備上。在另一個實施方案中,基于對應(yīng)的渲染過程已不活動的時間段,暫停的虛擬機的狀態(tài)可以從存儲器內(nèi)轉(zhuǎn)換到低延遲高速緩存再到較高延遲存儲裝置。延遲最小化模塊308可以執(zhí)行各種動作以使訪問渲染過程時的延遲最小化。這些動作可包括但不限于:基于與在虛擬機上執(zhí)行的渲染過程相關(guān)聯(lián)的客戶端的狀態(tài),將暫停的虛擬機的狀態(tài)移動到主存儲器、高速緩存或相對較高延遲的存儲裝置或從它們移動暫停的虛擬機的狀態(tài)。
容量和利用管理模塊310可以執(zhí)行各種動作以便提高資源利用。在一些情況下并且在一些實施方案中,虛擬機302可以托管多個渲染過程。實施方案可基于以下因素將渲染過程指派給虛擬機:包括但不限于公共客戶端設(shè)備、公共用戶、公共游戲內(nèi)容集等。實施方案還可以嘗試通過根據(jù)改善諸如資源利用、延遲等的因素將渲染過程指派給虛擬機來改善這些因素。在一些實施方案中,容量和利用管理310可涉及基于計算資源的處理能力將渲染過程和/或虛擬機指派給這些資源。例如,在一些情況下并且在一些實施方案中,客戶端狀態(tài)信息可包含對渲染服務(wù)的請求水平的指示?;谒鲋甘?,可選擇虛擬機主機以部分地基于可用于所選擇主機的處理能力來操作渲染過程。
另一個模塊可以執(zhí)行與容量和利用統(tǒng)計312相關(guān)的各種動作。這些動作可包括維持關(guān)于提供給用戶、客戶端、應(yīng)用、應(yīng)用發(fā)布商等的渲染服務(wù)的記錄。在一些實施方案中,內(nèi)容提供商可以監(jiān)測使用統(tǒng)計,諸如吞吐量、渲染的頁面、消耗的cpu周期等。內(nèi)容提供商可以采用諸如這些的各種使用統(tǒng)計來對各實體諸如游戲發(fā)布商征收服務(wù)費。
圖4描繪了用于管理渲染過程的方法的實施方案。盡管被描繪為操作序列,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,所描繪的次序不應(yīng)被解釋為限制本公開的范圍,并且所描繪的操作中的至少一些可以改變、省略、重新排序或并行地執(zhí)行。
操作400可涉及接收指示向客戶端提供渲染服務(wù)的信息。實施方案可以接收對應(yīng)于將使用渲染服務(wù)的應(yīng)用的初始化的客戶端狀態(tài)信息。初始化的應(yīng)用實例和/或初始化的應(yīng)用實例在其上運行的客戶端可以與渲染過程相關(guān)聯(lián)。實施方案可以執(zhí)行映射或查找操作以便確定應(yīng)用實例和/或客戶端是否已經(jīng)與渲染過程相關(guān)聯(lián)。如果沒有,那么可以創(chuàng)建新的渲染過程。
操作402描繪分配渲染過程可在其上執(zhí)行的虛擬機。分配虛擬機可涉及重新使用虛擬機的現(xiàn)有實例、創(chuàng)建新實例、復(fù)制預(yù)先存在的實例等。實施方案例如可以形成虛擬機狀態(tài)的預(yù)定義圖像的副本,其中預(yù)定義的圖像對應(yīng)于被配置成執(zhí)行渲染過程的虛擬機的初始狀態(tài)。在一些實施方案中,虛擬機的圖像可以在渲染過程已經(jīng)開始執(zhí)行但尚未服務(wù)于任何客戶端的情況下使用。在一些情況下并且在一些實施方案中,虛擬機圖像可包含已開始執(zhí)行并且已加載對應(yīng)于特定應(yīng)用(諸如特定游戲程序)的資源的渲染過程。此時,可以在資源加載之后但在已將服務(wù)提供給客戶端之前記錄虛擬圖像。當(dāng)虛擬機準(zhǔn)備好向客戶端提供渲染服務(wù)時,可以存儲并且隨后加載對應(yīng)于這些和其他初始狀態(tài)的虛擬機的圖像。
可基于虛擬機能夠訪問與在渲染服務(wù)的客戶端上運行的程序(諸如游戲)相關(guān)聯(lián)的圖形資源來分配用于執(zhí)行渲染過程的虛擬機。在客戶端上運行的游戲可依賴于在虛擬機上執(zhí)行的渲染過程可訪問的圖形資源。能夠訪問圖形資源可包括與其上存儲有圖形資源的存儲設(shè)備的連通性。許多變化中的另一種可能的變化包括虛擬機圖像,其中渲染過程已預(yù)先加載與游戲或其他應(yīng)用相關(guān)的圖形資源。
操作404描繪將在虛擬機上執(zhí)行的渲染過程與客戶端相關(guān)聯(lián)。各實施方案可以維持客戶端與渲染過程和/或渲染過程在其上操作的虛擬機之間的關(guān)聯(lián)的記錄。在一些實施方案中,這些關(guān)聯(lián)可以維持在獨立于虛擬機進(jìn)行操作的數(shù)據(jù)庫或其他數(shù)據(jù)存儲區(qū)中。所接收的客戶端狀態(tài)信息可以基于所記錄的關(guān)聯(lián)與渲染過程關(guān)聯(lián)。例如,客戶端狀態(tài)信息可以由內(nèi)容提供商接收,并且對應(yīng)的渲染過程可基于所記錄的關(guān)聯(lián)來確定。
渲染過程可以被描述為在虛擬機上執(zhí)行或操作。術(shù)語“在...上執(zhí)行”和“在...上操作”旨在包括渲染過程開始或繼續(xù)在虛擬機上執(zhí)行的多種狀態(tài)。
操作406描繪接收指示將渲染過程轉(zhuǎn)換到不活動狀態(tài)的信息。實施方案可基于超過了預(yù)測的最大不活動時期來確定渲染過程應(yīng)轉(zhuǎn)換到不活動狀態(tài)。在各種實施方案中,可以記錄時間以指示何時最后一次接收客戶端狀態(tài)信息,其中客戶端狀態(tài)信息指示對應(yīng)的渲染過程應(yīng)當(dāng)保持為活動的。然后,實施方案可以將自從最后一次接收這種信息以來的時間量與閾值時間量進(jìn)行比較,如果時間量超過閾值水平,那么實施方案可以將渲染過程轉(zhuǎn)換到不活動狀態(tài)。預(yù)測的最大不活動時期可以用作閾值。預(yù)測的最大值可以是部分地基于先前的活動或不活動時期確定的固定值或動態(tài)值。
操作408描繪使虛擬機暫停以便去激活在虛擬機上進(jìn)行操作的渲染過程。在一些實施方案中,暫停的虛擬機可保持在其主機的主存儲器中,但其虛擬處理器可以停止執(zhí)行。在另一個實施方案中,虛擬機可以從存儲器中移除并且存儲在存儲設(shè)備上。實施方案例如可以將對應(yīng)于虛擬機的狀態(tài)存儲在低延遲高速緩存中,或存儲在其他存儲設(shè)備上。實施方案可以執(zhí)行這些動作的各種組合。例如,實施方案可基于由客戶端給出的預(yù)期或預(yù)測的不活動時期來確定執(zhí)行這些動作中的一個。例如,如果客戶端狀態(tài)信息指示游戲已進(jìn)入已知的不活動時期(例如,當(dāng)正在顯示預(yù)先渲染的視頻時),虛擬機可保持不活動但處于存儲器中。另一方面,如果客戶端已關(guān)閉,那么虛擬機可以移動到相對較高延遲的存儲設(shè)備或刪除。
當(dāng)確定虛擬機上活動的渲染過程的數(shù)量已低于閾值水平時,可以使虛擬機暫停。在一些實施方案中,諸如將渲染過程一對一地映射到虛擬機的那些,閾值水平可以是一。其他實施方案可以在虛擬機上托管多個渲染過程。因此,當(dāng)由虛擬機托管的所有渲染過程都已變成不活動時,實施方案可以使虛擬機暫停。當(dāng)活動的渲染過程的數(shù)量低于閾值數(shù)量時,其他實施方案可以將活動的渲染過程轉(zhuǎn)移到另一個虛擬機。
操作410描繪接收指示將渲染過程從不活動狀態(tài)轉(zhuǎn)換到活動狀態(tài)的信息。例如,渲染過程可能已基于中止事件而去激活。在接收指示客戶端已被解除中止的客戶端狀態(tài)信息時,可以重新激活與客戶端相關(guān)聯(lián)的渲染過程。
操作412描繪通過重新激活渲染過程正在其上執(zhí)行的虛擬機來重新激活渲染過程。重新激活虛擬機可包括諸如從存儲裝置或從低延遲高速緩存檢索虛擬機的狀態(tài)的步驟。重新激活還可包括恢復(fù)與虛擬機相關(guān)聯(lián)的虛擬處理器的執(zhí)行。內(nèi)容提供商可以發(fā)送涉及恢復(fù)渲染服務(wù)的操作的狀態(tài)信息。例如,內(nèi)容提供商可以發(fā)送指示恢復(fù)渲染服務(wù)的操作預(yù)期將花費的時間量的客戶端信息。這可包括例如估計的完成時間、完成百分比等。
圖5描繪了用于管理渲染過程的方法的另一個實施方案。盡管被描繪為操作序列,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,所描繪的次序不應(yīng)被解釋為限制本公開的范圍,并且所描繪的操作中的至少一些可以改變、省略、重新排序或并行地執(zhí)行。
客戶端可以與可向客戶端提供渲染服務(wù)的渲染過程相關(guān)聯(lián)。渲染過程可以在基于多種因素所選擇的虛擬機上執(zhí)行。操作500至506描繪可用于將客戶端與渲染過程相關(guān)聯(lián)和/或選擇用于執(zhí)行渲染過程的虛擬機的因素的非限制性實例。
操作500描繪將客戶端與渲染過程一對一地相關(guān)聯(lián),以使得每個客戶端被映射到僅向那個客戶端提供渲染服務(wù)的渲染過程。實施方案還可以將渲染過程一對一地映射到應(yīng)用,以使得給定的渲染過程僅向一個應(yīng)用提供渲染服務(wù)。在一些實施方案中,可以將多個渲染過程指派給一個客戶端,或者將多個客戶端指派到一個渲染服務(wù)。
操作502描繪將客戶端與預(yù)先配置成渲染所請求內(nèi)容的渲染過程相關(guān)聯(lián)。例如,實施方案可以保持處于以下狀態(tài)的虛擬機的圖像:其中渲染過程已開始執(zhí)行以準(zhǔn)備提供與特定內(nèi)容諸如特定游戲應(yīng)用相關(guān)的渲染服務(wù)。這可以允許在渲染服務(wù)與客戶端之間相關(guān)聯(lián)之前預(yù)先加載各種線框、紋理等。
操作504描繪確定在虛擬機上執(zhí)行渲染過程,所述虛擬機基于正由在同一個虛擬機上執(zhí)行的其他過程渲染的內(nèi)容來選擇。這種方法可允許在為同一個內(nèi)容提供渲染服務(wù)的多個渲染過程之間共享包含圖形資源的存儲器塊。
操作506描繪在基于在一個虛擬機上為特定客戶端分組渲染過程所選擇的虛擬機上、或在最小數(shù)量的虛擬機上執(zhí)行渲染過程。例如,客戶端可以執(zhí)行兩個應(yīng)用,每個應(yīng)用都需要渲染服務(wù)。那么,應(yīng)用可以與其自身的專用渲染過程相關(guān)聯(lián)??梢詫⑦@些渲染過程分組以便在同一個虛擬機上執(zhí)行。在一些實施方案中,與同一個客戶端相關(guān)聯(lián)的渲染過程在虛擬機上分組,以便將與其他客戶端相關(guān)聯(lián)的渲染過程從那個虛擬機上排除。
操作508描繪管理在虛擬機上執(zhí)行的渲染過程的活動狀態(tài)和不活動狀態(tài)。這可包括使虛擬機暫停以便去激活在虛擬機上進(jìn)行操作的一個或多個渲染過程。在一些實施方案中,在采用多個渲染過程的情況下,可以在所有渲染過程都應(yīng)轉(zhuǎn)換到不活動狀態(tài)時使虛擬機暫停。實施方案可以使在虛擬機上進(jìn)行操作的所有渲染過程都處于活動狀態(tài),直到每個渲染過程都能夠轉(zhuǎn)換到不活動狀態(tài),并且然后使虛擬機暫停。實施方案可以確定當(dāng)發(fā)生各種事件時將渲染過程轉(zhuǎn)換到不活動狀態(tài),所述事件包括但不限于在接收指示需要渲染服務(wù)的客戶端狀態(tài)信息時的延時。
實施方案可以采用各種方法來準(zhǔn)備用于執(zhí)行渲染過程的虛擬機。圖6描繪了用于維持虛擬機池(pool)的過程的實施方案。盡管被描繪為涉及操作序列,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,所描繪的次序不應(yīng)被解釋為限制本公開的范圍,并且所描繪的操作中的至少一些可以改變、省略、重新排序或并行地執(zhí)行。
虛擬機初始化600涉及創(chuàng)建、啟動和配置虛擬機以用于執(zhí)行渲染過程的各個方面??梢詧?zhí)行各種操作,諸如通過操作602、604和606所描繪的那些,以便將虛擬機實例化以用于執(zhí)行渲染過程。通過602、604和606所描繪的操作可以各種方式組合以便形成本公開的其他實施方案。
操作602描繪檢索被配置成執(zhí)行渲染過程的虛擬機的狀態(tài)信息。虛擬機狀態(tài)可以存儲為文件,并且有時可以被稱為虛擬機圖像。在各種實施方案中,虛擬機狀態(tài)可對應(yīng)于已被預(yù)先配置成執(zhí)行渲染過程的虛擬機。例如,虛擬機可具有安裝的操作系統(tǒng)。用于執(zhí)行渲染過程的任何文件都可能已經(jīng)被復(fù)制到虛擬機,并且任何必要的配置步驟都可能已經(jīng)執(zhí)行。
操作604描繪檢索已經(jīng)在執(zhí)行渲染過程的虛擬機的狀態(tài)信息。實施方案可以利用虛擬機圖像,其中虛擬機的狀態(tài)反映當(dāng)前正在執(zhí)行但尚未與客戶端相關(guān)聯(lián)或正在向客戶端提供服務(wù)的渲染過程。
操作606描繪檢索被配置成執(zhí)行(或已經(jīng)在執(zhí)行)與特定內(nèi)容相關(guān)的渲染過程的虛擬機的狀態(tài)信息。例如,可以在渲染過程已開始執(zhí)行并且已加載了用于特定應(yīng)用(諸如游戲)的資源時保存虛擬機圖像。所述資源可包括位圖、紋理、線框模型等。
實施方案可以從所述池中選擇虛擬機,基于所選擇的虛擬機被配置成執(zhí)行能夠訪問與應(yīng)用相關(guān)的圖形資源的渲染過程,正在提供的圖形渲染服務(wù)用于所述應(yīng)用。在一些情況下,渲染過程可以被特定地配置成能夠訪問圖形資源。在其他情況下,所選擇的虛擬機可以被配置成能夠訪問圖形資源。
池組織608是指可以執(zhí)行來形成用于執(zhí)行渲染過程的虛擬機池的各種操作。如本文所用,術(shù)語池可以是指對象的各種集合,諸如虛擬機的集合。所述集合可以通過數(shù)據(jù)結(jié)構(gòu)諸如列表或陣列、或通過各種分類方法進(jìn)行組織。在各種實施方案中,池可以是根據(jù)需要可從所述池中抽取的對象或資源的集合或集。例如,池可以包含可從所述池中抽取并且用于執(zhí)行渲染過程的未使用的虛擬機集。
操作610描繪維持虛擬機池。維持池可涉及創(chuàng)建虛擬機、將虛擬機放置在池中、從池中抽取虛擬機以及將虛擬機返回到池。實施方案可在池中維持最小和/或最大數(shù)量的自由虛擬機。
操作612描繪基于內(nèi)容維持虛擬機池。這可涉及將池中的虛擬機分類為歸屬于特定的內(nèi)容集。當(dāng)從池中抽取虛擬機時,可以抽取適于特定內(nèi)容集的虛擬機。例如,可以將被配置成預(yù)先加載用于特定游戲的資源的虛擬機分組到池中。當(dāng)客戶端請求用于那個特定游戲的渲染服務(wù)時,可以使用來自那個池的虛擬機。與不同應(yīng)用相關(guān)聯(lián)的客戶端可以獲得從不同池中提取的虛擬機。
操作614描繪基于延遲最小化維持虛擬機池。實施方案可以采用多種因素來組織此類池。在一個實施方案中,根據(jù)每個虛擬機的主機的地理位置來將虛擬機分組。可基于主機的位置和請求渲染服務(wù)的客戶端的位置來從池抽取虛擬機。還可根據(jù)速度、容量等來組織池。
實施方案可以將池組合成池和子池的各種組合。例如,可以將虛擬機分組到通過內(nèi)容組織的池中,并且分組到通過地理區(qū)域組織的子池中。
池維持616涉及執(zhí)行來抽取、利用虛擬機并且將虛擬機返回到虛擬機池的各種操作。如通過操作618所描繪的,可以從池中抽取虛擬機以便向新客戶端提供渲染服務(wù)。操作620描繪在不將立即虛擬機返回到池的情況下使虛擬機暫停以便暫時性地去激活渲染過程。在稍后的某個時間,可以將虛擬機返回到池。操作622描繪一個實例,其中在與客戶端斷開連接時將虛擬機返回到池。一些實施方案可以在不再需要虛擬機時將它們刪除。操作624描繪重新補足虛擬機池,例如通過執(zhí)行與虛擬機初始化600相關(guān)聯(lián)的操作中的一個或多個??梢灾匦卵a足虛擬機以便保持池中可用的最小數(shù)量的虛擬機,或以便替換已從池中移除和隨后刪除的虛擬機。
在一些情況下,內(nèi)容提供商可以渲染內(nèi)容項視圖并通過電子網(wǎng)絡(luò)諸如互聯(lián)網(wǎng)將其傳輸?shù)娇蛻舳?。在一些情況下,可以根據(jù)客戶端的請求使用例如流傳輸內(nèi)容遞送技術(shù)來提供內(nèi)容?,F(xiàn)在將詳細(xì)描述能夠渲染內(nèi)容并將其傳輸?shù)娇蛻舳说氖纠杂嬎悱h(huán)境。具體地,圖7示出可在實現(xiàn)本文所述的實施方案的示例性計算環(huán)境。圖7是示意性地示出數(shù)據(jù)中心710的實例的圖,所述數(shù)據(jù)中心710可經(jīng)由通信網(wǎng)絡(luò)730、通過用戶計算機702a和702b(其在本文中以單數(shù)形式可被稱為一個計算機702或以復(fù)數(shù)形式可被稱為這些計算機702)向用戶700a和700b(其在本文中以單數(shù)形式可被稱為一個用戶700或以復(fù)數(shù)形式可被稱為這些用戶700)提供計算資源。數(shù)據(jù)中心710可以被配置成提供用于永久性地或根據(jù)需要執(zhí)行應(yīng)用的計算資源。由數(shù)據(jù)中心710提供的計算資源可包括各種類型的資源,諸如網(wǎng)關(guān)資源、負(fù)載平衡資源、路由資源、聯(lián)網(wǎng)資源、計算資源、易失性和非易失性存儲器資源、內(nèi)容遞送資源、數(shù)據(jù)處理資源、數(shù)據(jù)存儲資源、數(shù)據(jù)通信資源等。計算資源可以是通用的或者可用于多種特定配置。例如,數(shù)據(jù)處理資源可以用作可被配置成提供各種web服務(wù)的虛擬機實例。此外,資源的組合可通過網(wǎng)絡(luò)而變得可用并且可以被配置為一個或多個web服務(wù)。所述實例可以被配置成執(zhí)行包括web服務(wù)的應(yīng)用,所述web服務(wù)諸如應(yīng)用服務(wù)、媒體服務(wù)、數(shù)據(jù)庫服務(wù)、處理服務(wù)、網(wǎng)關(guān)服務(wù)、存儲服務(wù)、路由服務(wù)、安全服務(wù)、加密服務(wù)、負(fù)載平衡服務(wù)、應(yīng)用服務(wù)等。這些服務(wù)可以被配置成具有設(shè)定或定制的應(yīng)用,并且可以在大小、執(zhí)行、成本、延遲、類型、持續(xù)時間、可訪問性以及任何其他維度方面進(jìn)行配置。這些web服務(wù)可以被配置為可用于一個或多個客戶端的基礎(chǔ)結(jié)構(gòu),并且可包括被配置為用于一個或多個客戶端的平臺或軟件的一個或多個應(yīng)用。這些web服務(wù)可通過一個或多個通信協(xié)議而變得可用。數(shù)據(jù)存儲資源可包括文件存儲設(shè)備、區(qū)塊存儲設(shè)備等。
每種類型或配置的計算資源可以具有不同大小,諸如由許多處理器、大量存儲器和/或大的存儲容量組成的大型資源和由較少的處理器、較少量存儲器和/或較小的存儲容量組成的小型資源。例如,客戶可選擇分配如web服務(wù)器的許多小型處理資源和/或如數(shù)據(jù)庫服務(wù)器的一個大型處理資源。
數(shù)據(jù)中心710可包括提供計算資源的服務(wù)器716a~b(其在本文中以單數(shù)形式可被稱為一個服務(wù)器716或以復(fù)數(shù)形式可被稱為這些服務(wù)器716)。這些資源可用作裸露金屬資源或用作虛擬機實例718a-d以及(其在本文中以單數(shù)形式可被稱為一個虛擬機實例718或以復(fù)數(shù)形式可被稱為這些虛擬機實例718)。虛擬機實例718c和718d是共享狀態(tài)虛擬機(“ssvm”)實例。ssvm虛擬機實例718c和718d可以被配置成執(zhí)行共享內(nèi)容項狀態(tài)技術(shù)和根據(jù)本公開并且下文詳細(xì)描述的任何其他所公開技術(shù)的全部或任何部分。如應(yīng)當(dāng)理解的,雖然圖7所示的特定實例在每個服務(wù)器中包括一個ssvm虛擬機,但這僅僅是一個實例。服務(wù)器可包括多于一個ssvm虛擬機或者可能不包括任何ssvm虛擬機。
用于計算硬件的虛擬化技術(shù)的可用性已提供多種益處,用于向客戶提供大型計算資源并且允許在多個客戶之間有效地且安全地共享計算資源。例如,通過向每個用戶提供物理計算設(shè)備托管的一個或多個虛擬機實例,虛擬化技術(shù)可允許在多個用戶之間共享物理計算設(shè)備。虛擬機實例可以是充當(dāng)不同邏輯計算系統(tǒng)的特定物理計算系統(tǒng)的軟件仿真。這種虛擬機實例在共享給定的物理計算資源的多個操作系統(tǒng)之間提供隔離。此外,一些虛擬化技術(shù)可以提供跨越一個或多個物理資源的虛擬資源,諸如具有跨越多個不同物理計算系統(tǒng)的多個虛擬處理器的虛擬機實例。
參考圖7,通信網(wǎng)絡(luò)730例如可以是鏈接網(wǎng)絡(luò)中的公共可訪問網(wǎng)絡(luò)并且可能由各個不同方進(jìn)行操作,諸如互聯(lián)網(wǎng)。在其他實施方案中,通信網(wǎng)絡(luò)730可以是專用網(wǎng)絡(luò),諸如完全或部分地不能被非特權(quán)用戶訪問的公司或大學(xué)網(wǎng)絡(luò)。在另外其他的實施方案中,通信網(wǎng)絡(luò)730可包括具有對互聯(lián)網(wǎng)的訪問和/或從互聯(lián)網(wǎng)進(jìn)行訪問的一個或多個專用網(wǎng)絡(luò)。
通信網(wǎng)絡(luò)730可以提供對計算機702的訪問。用戶計算機702可以是由用戶700或數(shù)據(jù)中心710的其他客戶使用的計算機。例如,用戶計算機702a或702b可以是服務(wù)器、臺式或便攜式個人計算機、平板計算機、無線電話、個人數(shù)字助理(pda)、電子書閱讀器、游戲控制臺、機頂盒或能夠訪問數(shù)據(jù)中心710的任何其他計算設(shè)備。用戶計算機702a或702b可以直接連接到互聯(lián)網(wǎng)(例如,通過電纜調(diào)制解調(diào)器或數(shù)字用戶線路(dsl))。盡管僅描繪了兩個用戶計算機702a和702b,但是應(yīng)當(dāng)理解,可以存在多個用戶計算機。
用戶計算機702也可用來配置由數(shù)據(jù)中心710提供的計算資源的各方面。就這一點而言,數(shù)據(jù)中心710可提供網(wǎng)關(guān)或web接口,通過所述網(wǎng)關(guān)或web接口,可通過使用在用戶計算機702上執(zhí)行的web瀏覽器應(yīng)用程序來配置數(shù)據(jù)中心的操作的各方面?;蛘?,在用戶計算機702上執(zhí)行的獨立應(yīng)用程序可訪問由數(shù)據(jù)中心710公開的應(yīng)用編程接口(api)以便執(zhí)行配置操作。還可以利用用于配置在數(shù)據(jù)中心710可用的各種web服務(wù)的操作的其他機制。
圖7所示的服務(wù)器716可以是被適當(dāng)?shù)嘏渲糜糜谔峁┥鲜鲇嬎阗Y源的標(biāo)準(zhǔn)服務(wù)器,并且可以提供用于執(zhí)行一個或多個web服務(wù)和/或應(yīng)用的計算資源。在一個實施方案中,計算資源可以是虛擬機實例718。虛擬機實例還可以被稱為虛擬機。如上所述,虛擬機實例718中的每一個可被配置成執(zhí)行應(yīng)用的全部或一部分。在虛擬機實例的實例中,數(shù)據(jù)中心710可以被配置成執(zhí)行能夠執(zhí)行虛擬機實例718的實例管理程序720a或720b(其在本文中以單數(shù)形式可被稱為一個實例管理程序720或以復(fù)數(shù)形式可被稱為這些實例管理程序720)。例如,實例管理程序720可以是虛擬機監(jiān)視程序(vmm)或被配置成允許在服務(wù)器716上執(zhí)行虛擬機實例718的另一類型的程序。應(yīng)當(dāng)理解,實例管理程序720的配置(如圖7所描繪的)可以改變,并且實例管理程序720例如可以被配置成作為路由器714的前端進(jìn)行操作。在一些實施方案中,實例管理程序720可以托管在服務(wù)器716上或其他計算節(jié)點上。
應(yīng)當(dāng)理解,盡管上文所公開的實施方案討論了虛擬機實例的情形,但是其他類型的實施方式可以與本文所公開的概念和技術(shù)一起使用。例如,本文所公開的實施方案也可以與并不使用虛擬機實例的計算系統(tǒng)一起使用。
在圖1所示的示例性數(shù)據(jù)中心710中,路由器714可用來互連服務(wù)器716a和716b。路由器714也可連接到網(wǎng)關(guān)740,網(wǎng)關(guān)740連接到通信網(wǎng)絡(luò)730。路由器714可以連接到一個或多個負(fù)載平衡器,并且可以單獨地或以組合方式在數(shù)據(jù)中心710中管理網(wǎng)絡(luò)內(nèi)的通信,例如通過基于此類通信的特性(例如,包括源地址和/或目的地地址、協(xié)議標(biāo)識符、大小、處理要求等的標(biāo)頭信息)和/或?qū)S镁W(wǎng)絡(luò)的特性(例如,基于網(wǎng)絡(luò)拓?fù)涞鹊穆酚?來適當(dāng)?shù)剞D(zhuǎn)發(fā)數(shù)據(jù)包或其他數(shù)據(jù)通信。應(yīng)當(dāng)理解,為簡單起見,示出了這個實例的計算系統(tǒng)和其他設(shè)備的各方面,而并未展示某些常規(guī)的細(xì)節(jié)。另外計算系統(tǒng)和其他設(shè)備在其他實施方案中可以互連并且可以以不同的方式互連。
應(yīng)當(dāng)理解,圖7所示的網(wǎng)絡(luò)拓?fù)湟汛蟠蠛喕?,并且可以利用更多的網(wǎng)絡(luò)和聯(lián)網(wǎng)設(shè)備來互連本文所公開的各種計算系統(tǒng)。這些網(wǎng)絡(luò)拓?fù)浜驮O(shè)備對本領(lǐng)域的技術(shù)人員來說應(yīng)是明顯的。
也應(yīng)當(dāng)理解,圖7中所描述的數(shù)據(jù)中心710僅僅是說明性的,并且可利用其他實現(xiàn)方式。另外,應(yīng)當(dāng)理解,本文所公開的功能可以以軟件、硬件或軟件與硬件的組合來實現(xiàn)。其他實現(xiàn)方式對本領(lǐng)域的技術(shù)人員來說是應(yīng)明顯的。也應(yīng)理解,服務(wù)器、網(wǎng)關(guān)或其他計算設(shè)備可包括可交互并且執(zhí)行所述類型的功能的硬件或軟件的任何組合,其包括但不限于臺式計算機或其他計算機、數(shù)據(jù)庫服務(wù)器、網(wǎng)絡(luò)存儲設(shè)備和其他網(wǎng)絡(luò)設(shè)備、pda、平板計算機、移動電話、無線電話、尋呼機、電子管理器、互聯(lián)網(wǎng)電器、(例如,使用機頂盒和/或個人/數(shù)字視頻記錄器的)基于電視機的系統(tǒng)和包括適當(dāng)通信能力的各種其他消費品。此外,由所示模塊提供的功能在一些實施方案中可以以較少的組件來組合或分布于另外的模塊中。類似地,在一些實施方案中,可以不提供所示模塊中的一些的功能和/或可以使用其他另外的功能。
在至少一些實施方案中,實現(xiàn)本文中所述的技術(shù)中的一種或多種的部分或全部的服務(wù)器可包括通用計算機系統(tǒng),所述通用計算機系統(tǒng)包括一種或多種計算機可訪問介質(zhì)或被配置成訪問一種或多種計算機可訪問介質(zhì)。圖8描繪了包括一種或多種計算機可訪問介質(zhì)或被配置成訪問一種或多種計算機可訪問介質(zhì)的通用計算機系統(tǒng)。在所示的實施方案中,計算設(shè)備800包括通過輸入/輸出(i/o)接口830耦接到系統(tǒng)存儲器820的一個或多個處理器810a、810b和/或810n(其在本文中以單數(shù)形式可被稱為“一個處理器810”或以復(fù)數(shù)形式可被稱為“這些處理器810”)。計算設(shè)備800還包括耦接到i/o接口830的網(wǎng)絡(luò)接口840。
在各種實施方案中,計算設(shè)備800可為包括一個處理器810的單處理器系統(tǒng),或包括若干處理器10(例如兩個、四個、八個或另一合適數(shù)量)的多處理器系統(tǒng)。處理器810可為能夠執(zhí)行指令的任何合適的處理器。例如,在各種實施方案中,處理器810可為實現(xiàn)多種指令集架構(gòu)(isa)中任何一種架構(gòu)的通用或嵌入式處理器,所述架構(gòu)諸如x86、powerpc、sparc、或mipsisa或任何其他合適的isa。在多處理器系統(tǒng)中,每一個處理器810可通常但不一定實現(xiàn)相同的isa。
在一些實施方案中,圖形處理單元(“gpu”)812可以參與提供圖形渲染和/或物理處理能力。gpu例如可以包括專門用于圖形計算的高度并行處理器架構(gòu)。在一些實施方案中,處理器810和gpu812可以實現(xiàn)為相同類型的設(shè)備中的一個或多個。
系統(tǒng)存儲器820可以被配置成存儲可由處理器810訪問的指令和數(shù)據(jù)。在各種實施方案中,系統(tǒng)存儲器820可使用任何合適的存儲器技術(shù)來實現(xiàn),所述存儲器技術(shù)諸如靜態(tài)隨機存取存儲器(“sram”)、同步動態(tài)ram(“sdram”)、非易失性/快閃型存儲器或任何其他類型的存儲器。在所示的實施方案中,實現(xiàn)一種或多種所需功能的程序指令和數(shù)據(jù)(諸如以上所述的那些方法、技術(shù)和數(shù)據(jù))被示出作為代碼825和數(shù)據(jù)826存儲在系統(tǒng)存儲器820內(nèi)。
在一個實施方案中,i/o接口830可以被配置成協(xié)調(diào)處理器810、系統(tǒng)存儲器820和設(shè)備中的任何外圍裝置之間的i/o通信量,所述外圍裝置包括網(wǎng)絡(luò)接口840或其他外圍接口。在一些實施方案中,i/o接口830可以執(zhí)行任何必需的協(xié)議、時序或其他數(shù)據(jù)轉(zhuǎn)換以便將來自一個組件(例如,系統(tǒng)存儲器820)的數(shù)據(jù)信號轉(zhuǎn)換成適于由另一個組件(例如,處理器810)使用的格式。在一些實施方案中,i/o接口830可包括對于通過各種類型的外圍總線附接的設(shè)備的支持,所述外圍總線例如像外圍組件互連(pci)總線標(biāo)準(zhǔn)或通用串行總線(usb)標(biāo)準(zhǔn)的變化形式。在一些實施方案中,i/o接口830的功能可分離到兩個或更多個單獨的組件中,例如像北橋和南橋。另外,在一些實施方案中,i/o接口830的一些或所有功能,諸如到系統(tǒng)存儲器820的接口,可直接并入處理器810中。
網(wǎng)絡(luò)接口840可以被配置成允許數(shù)據(jù)在計算設(shè)備800與附接到一個或多個網(wǎng)絡(luò)850的其他一個或多個設(shè)備860(例如像其他計算機系統(tǒng)或設(shè)備)之間進(jìn)行交換。在各種實施方案中,網(wǎng)絡(luò)接口840可以支持通過任何合適的有線或無線通用數(shù)據(jù)網(wǎng)絡(luò)(例如像以太網(wǎng)網(wǎng)絡(luò)類型)進(jìn)行通信。另外,網(wǎng)絡(luò)接口840可以支持通過電信/電話網(wǎng)絡(luò)諸如模擬語音網(wǎng)絡(luò)或數(shù)字光纖通信網(wǎng)絡(luò)、通過存儲區(qū)域網(wǎng)絡(luò)諸如光纖信道san(存儲區(qū)域網(wǎng)絡(luò))或通過任何其他合適類型的網(wǎng)絡(luò)和/或協(xié)議進(jìn)行通信。
在一些實施方案中,系統(tǒng)存儲器820可以是被配置成存儲如上所述的程序指令和數(shù)據(jù)以用于實現(xiàn)對應(yīng)方法和裝置的實施方案的計算機可訪問介質(zhì)的一個實施方案。然而,在其他實施方案中,可以在不同類型的計算機可訪問介質(zhì)上接收、發(fā)送或存儲程序指令和/或數(shù)據(jù)。一般來說,計算機可訪問介質(zhì)可以包括非暫時性存儲介質(zhì)或存儲器介質(zhì),諸如磁性介質(zhì)或光學(xué)介質(zhì),例如通過i/o接口830耦接到計算設(shè)備800的磁盤或dvd/cd。非暫時性計算機可訪問存儲介質(zhì)還可以包括可作為系統(tǒng)存儲器820或另一類型的存儲器被包括在計算設(shè)備800的一些實施方案中的任何易失性或非易失性介質(zhì),諸如ram(例如,sdram、ddrsdram、rdram、sram等)、rom等。另外,計算機可訪問介質(zhì)可以包括傳輸介質(zhì)或信號,諸如經(jīng)由通信介質(zhì)(諸如網(wǎng)絡(luò)和/或無線鏈路)傳送的電信號、電磁信號或數(shù)字信號,諸如可通過網(wǎng)絡(luò)接口840來實現(xiàn)的那些。多個計算設(shè)備的部分或全部(諸如圖8所示的那些)可用于實現(xiàn)各種實施方案中所述的功能;例如,在多個不同設(shè)備和服務(wù)器上運行的軟件組件可以協(xié)作來提供功能。在一些實施方案中,除了或代替使用通用計算機系統(tǒng)來實現(xiàn),所描述功能的部分可以使用存儲設(shè)備、網(wǎng)絡(luò)設(shè)備或?qū)S糜嬎銠C系統(tǒng)來實現(xiàn)。如本文所用,術(shù)語“計算設(shè)備”是指至少所有這些類型的設(shè)備并且不限于這些類型的設(shè)備。
計算節(jié)點(computenode),也可以被稱為計算性節(jié)點(computingnode),可以在廣泛多種計算環(huán)境上實現(xiàn),諸如平板計算機、個人計算機、智能電話、游戲控制臺、商用硬件計算機、虛擬機、web服務(wù)、計算集群和計算器具。為方便起見,這些計算設(shè)備或環(huán)境中的任一個可以被描述為計算節(jié)點或計算性節(jié)點。
由實體(諸如公司或公共部門組織)建立的用于向一組分布式客戶端提供通過互聯(lián)網(wǎng)和/或其他網(wǎng)絡(luò)可訪問的一個或多個web服務(wù)(諸如各種類型的基于云的計算或存儲)的網(wǎng)絡(luò)可以被稱為提供商網(wǎng)絡(luò)。這種提供商網(wǎng)絡(luò)可包括托管各種資源池的多種數(shù)據(jù)中心,諸如物理和虛擬化計算機服務(wù)器、存儲設(shè)備、網(wǎng)絡(luò)設(shè)備等的集合,所述資源池是實現(xiàn)并分布由提供商網(wǎng)絡(luò)提供的基礎(chǔ)設(shè)施和web服務(wù)所需要的。在一些實施方案中,所述資源可以以與web服務(wù)相關(guān)的各種單元提供給客戶端,諸如用于存儲的存儲容量的量、用于處理的處理能力、作為實例、作為相關(guān)服務(wù)集等。虛擬計算實例例如可包括具有指定的計算能力(其可以通過指示cpu的類型和數(shù)量、主存儲器大小等來指定)和指定的軟件堆疊(例如,特定版本的操作系統(tǒng),其繼而可在管理程序之上運行)的一個或多個服務(wù)器。
多種不同類型的計算設(shè)備可以單獨地或以組合方式用來在不同實施方案中實現(xiàn)提供商網(wǎng)絡(luò)的資源,所述實施方案包括通用或?qū)S糜嬎銠C服務(wù)器、存儲設(shè)備、網(wǎng)絡(luò)設(shè)備等。在一些實施方案中,可以向客戶端或用戶提供對資源實例的直接訪問,例如通過給予用戶管理員登錄名和密碼。在其他實施方案中,提供商網(wǎng)絡(luò)運營商可允許客戶端代表適用于應(yīng)用的執(zhí)行平臺(諸如應(yīng)用服務(wù)器實例、javatm虛擬機(jvm)、通用或?qū)S貌僮飨到y(tǒng)、支持各種解釋或編譯編程語言諸如ruby、perl、python、c、c++等的平臺或高性能計算平臺)上的客戶端,指定對所指定客戶端應(yīng)用和應(yīng)用的調(diào)度執(zhí)行的執(zhí)行要求,而不例如要求客戶端直接訪問實例或執(zhí)行平臺。在一些實現(xiàn)方式中,給定的執(zhí)行平臺可以利用一個或多個資源實例;在其他實現(xiàn)方式中,多個指定平臺可以映射到單個資源實例。
在許多環(huán)境中,實現(xiàn)不同類型的虛擬化計算、存儲和/或其他網(wǎng)絡(luò)可訪問功能的提供商網(wǎng)絡(luò)的運營商可允許客戶以各種資源獲取模式預(yù)訂或購買對資源的訪問。計算資源提供商可以向客戶提供設(shè)施,以便選擇和啟動所期望計算資源、將應(yīng)用組件部署到計算資源并且維持應(yīng)用在環(huán)境中執(zhí)行。此外,計算資源提供商可以向客戶提供其他設(shè)施,以便根據(jù)應(yīng)用改變的需要或容量要求、手動地或通過自動縮放快速且容易地放大或縮小分配到應(yīng)用的資源的數(shù)量和類型。計算資源提供商提供的計算資源可以以離散單元變得可用,所述離散單元可以被稱為實例。實例可表示物理服務(wù)器硬件平臺、在服務(wù)器上執(zhí)行的虛擬機實例、或兩者的某種組合。各種類型和配置的實例都可以變得可用,包括執(zhí)行不同操作系統(tǒng)(os)和/或管理程序并且具有各種安裝的軟件應(yīng)用、運行時間等的不同大小的資源。實例還可以在特定可用性區(qū)中可用,所述特定可用性區(qū)表示例如邏輯區(qū)域、容錯區(qū)域、數(shù)據(jù)中心或底層計算硬件的其他地理位置。實例可以在可用性區(qū)內(nèi)或跨可用性區(qū)復(fù)制,以便改善實例的冗余,并且實例可以在特定可用性區(qū)內(nèi)或跨可用性區(qū)遷移。作為一個實例,可用性區(qū)中客戶端與特定服務(wù)器通信的延遲可以小于客戶端與不同服務(wù)器通信的延遲。因此,實例可以從較高延遲服務(wù)器遷移到較低延遲服務(wù)器以便改善總體客戶端體驗。
在一些實施方案中,提供商網(wǎng)絡(luò)可被組織成多個地理區(qū)域,并且每個區(qū)域可包括一個或多個可用性區(qū)??捎眯詤^(qū)(其還可以被稱為可用性容器)繼而可包括一個或多個不同的位置或數(shù)據(jù)中心,其被配置成使得給定可用性區(qū)中的資源可以與其他可用性區(qū)中的故障隔離或絕緣。也就是說,預(yù)期一個可用性區(qū)中的故障可能不會導(dǎo)致任何其他可用性區(qū)中的故障。因此,一個資源實例的可用性簡檔旨在獨立于不同可用性區(qū)中的資源實例的可用性簡檔??蛻舳丝赡軌蛲ㄟ^啟動相應(yīng)可用性區(qū)中的多個應(yīng)用實例來保護(hù)其應(yīng)用免于單個位置處的故障。同時,在一些實現(xiàn)方式中,可以在駐留于同一地理區(qū)域內(nèi)的資源實例之間提供廉價且低延遲的網(wǎng)絡(luò)連通性(并且同一可用性區(qū)的資源之間的網(wǎng)絡(luò)傳輸甚至可以更快)。
在前述部分中所描述的過程、方法和算法中的每一個可體現(xiàn)在由一個或多個計算機或計算機處理器執(zhí)行的代碼模塊中,并且完全或部分地由所述代碼模塊自動進(jìn)行。所述代碼模塊可存儲在任何類型的非暫時性計算機可讀介質(zhì)或計算機存儲設(shè)備(諸如硬盤、固態(tài)存儲器、光盤和/或類似設(shè)備)上。所述過程和算法可部分地或全部地在專用電路中實現(xiàn)。所公開的過程和處理步驟的結(jié)果可永久地或以其他方式存儲在任何類型的非暫時性計算機存儲裝置(例如像易失性或非易失性存儲裝置)中。
鑒于以下條款,上述內(nèi)容可更好地理解:
1.一種系統(tǒng),其包括:
一個或多個計算節(jié)點,所述一個或多個計算節(jié)點被配置成來操作用于代表一個或多個客戶端渲染圖形的服務(wù),所述服務(wù)包括多個虛擬機;
一個或多個計算節(jié)點被配置成至少:
接收指示代表所述一個或多個客戶端渲染圖形的請求,所述請求包括指示與在所述一個或多個客戶端上運行的過程相關(guān)聯(lián)的圖形資源集的信息;
確定激活所述多個虛擬機中的虛擬機,所述確定至少部分地基于所述虛擬機被配置成執(zhí)行對應(yīng)于所述圖形資源集的渲染過程;
響應(yīng)于尚未接收到將所述渲染過程保持在活動狀態(tài)的請求的第一確定和自從接收到指示由所述一個或多個客戶端中至少一個的用戶提供的輸入的信息以來的時間量已超過第一閾值的第二確定,暫停所述虛擬機的操作,其中所述虛擬機在暫停時的第一狀態(tài)包括用于所述渲染過程的第二狀態(tài);以及
響應(yīng)于接收到指示由所述一個或多個客戶端中至少一個的用戶提供的輸入的信息,恢復(fù)所述虛擬機的操作。
2.如條款1所述的系統(tǒng),所述一個或多個計算節(jié)點還被配置成至少:
將所述虛擬機的所述第一狀態(tài)存儲在低延遲高速緩存中;以及
響應(yīng)于自從接收到指示由所述一個或多個客戶端中至少一個的用戶提供的輸入的信息以來的時間量已超過第二閾值,將所述虛擬機的所述第一狀態(tài)存儲在存儲設(shè)備上。
3.如條款1所述的系統(tǒng),所述一個或多個計算節(jié)點還被配置成至少:
至少部分地基于使所述虛擬機暫停來激活另外的虛擬機。
4.如條款1所述的系統(tǒng),其中對將所述渲染過程保持在活動狀態(tài)的所述請求是由在所述一個或多個客戶端中的客戶端上進(jìn)行操作的過程發(fā)送的。
5.一種非暫時性計算機可讀存儲介質(zhì),其具有存儲在其上的指令,所述指令在由一個或多個計算設(shè)備執(zhí)行時致使所述一個或多個計算設(shè)備至少:
接收指示為一個或多個客戶端執(zhí)行圖形渲染服務(wù)的請求,所述一個或多個客戶端執(zhí)行與圖形資源集相關(guān)聯(lián)的過程;
至少部分地基于選擇用于激活的虛擬機被配置成執(zhí)行能夠訪問所述圖形資源集的渲染過程來激活所述虛擬機;
由所述渲染過程來為所述一個或多個客戶端執(zhí)行所述圖形渲染服務(wù);
至少部分地基于確定尚未接收到對保持所述渲染過程為活動的請求并且至少部分地基于確定自從接收到指示由所述一個或多個客戶端中至少一個進(jìn)行的活動的信息以來的時間量已超過第一閾值時間量,暫停所述虛擬機的操作;以及
響應(yīng)于接收到指示由所述一個或多個客戶端中至少一個進(jìn)行的活動的信息,恢復(fù)所述虛擬機的操作。
6.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
將所述虛擬機的狀態(tài)存儲在低延遲高速緩存中。
7.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
響應(yīng)于自從接收到指示由所述一個或多個客戶端中至少一個進(jìn)行的活動的信息以來的時間量已超過第二閾值時間量,將所述虛擬機的狀態(tài)存儲在存儲設(shè)備上。
8.如條款5所述的非暫時性計算機可讀介質(zhì),其中暫停所述虛擬機的所述操作包括將所述虛擬機的狀態(tài)保持在存儲器中。
9.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
響應(yīng)于確定不運行渲染過程的活動虛擬機的數(shù)量已低于閾值,激活另外的虛擬機。
10.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
至少部分地基于確定所述虛擬機上活動的渲染過程的數(shù)量已低于閾值水平,暫停所述虛擬機的操作。
11.如條款5所述的非暫時性計算機可讀介質(zhì),其中對保持所述渲染過程為活動的所述請求是由在所述一個或多個客戶端中的一個上運行的過程發(fā)起的。
12.如條款11所述的非暫時性計算機可讀介質(zhì),其中響應(yīng)于進(jìn)入沒有用戶輸入預(yù)期達(dá)一定時間段的狀態(tài),所述過程發(fā)起所述請求。
13.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
向所述一個或多個客戶端中的客戶端發(fā)送指示所述渲染過程的恢復(fù)操作的時間的信息。
14.如條款5所述的非暫時性計算機可讀介質(zhì),其還包括指令,所述指令在由所述計算設(shè)備執(zhí)行時致使所述計算設(shè)備至少:
將渲染過程的狀態(tài)從所述虛擬機傳遞到另一個虛擬機。
15.一種方法,其包括:
接收指示為一個或多個客戶端執(zhí)行圖形渲染服務(wù)的請求,所述一個或多個客戶端執(zhí)行與圖形資源集相關(guān)聯(lián)的過程;
至少部分地基于所選擇用于執(zhí)行渲染過程的虛擬機能夠訪問所述圖形資源集,在所述虛擬機上執(zhí)行所述渲染過程;
由在所述虛擬機上進(jìn)行操作的所述渲染過程來為所述一個或多個客戶端執(zhí)行所述圖形渲染服務(wù);
至少部分地基于尚未接收到對將所述渲染過程保持在活動狀態(tài)的請求的第一確定和自從接收到指示由所述一個或多個客戶端中至少一個的用戶提供的輸入的信息以來的時間量已超過第一閾值的第二確定,暫停所述虛擬機的操作;以及
響應(yīng)于接收到指示接收對代表所述一個或多個客戶端執(zhí)行圖形渲染的請求的信息,恢復(fù)所述虛擬機的操作。
16.如條款15所述的方法,其中指示接收對代表所述一個或多個客戶端執(zhí)行圖形渲染的請求的所述信息對應(yīng)于由所述一個或多個客戶端中至少一個的用戶提供的輸入。
17.如條款15所述的方法,其中對將所述渲染過程保持在活動狀態(tài)的所述請求至少部分地基于進(jìn)入沒有用戶輸入預(yù)期達(dá)一定時間段的狀態(tài)。
18.如條款15所述的方法,其還包括:
將所述虛擬機的狀態(tài)存儲在低延遲高速緩存中達(dá)至少等于第二閾值的時間段。
19.如條款15所述的方法,其還包括:
將所述虛擬機重新設(shè)定到初始狀態(tài),所述初始狀態(tài)對應(yīng)于在執(zhí)行所述渲染過程之前的所述虛擬機的狀態(tài)。
20.如條款15所述的方法,其還包括:
向所述一個或多個客戶端中的客戶端發(fā)送指示恢復(fù)所述渲染過程的狀態(tài)的信息。
上文所述的各種特征和過程可以彼此獨立地使用,或者可以以各種方式進(jìn)行組合。所有可能的組合和子組合意圖落入本公開的范圍內(nèi)。此外,在一些實現(xiàn)方式中,某些方法和過程塊可省略。本文所述的方法和過程也不限于任何特定的順序,并且與之相關(guān)的塊或狀態(tài)可以按其他適當(dāng)?shù)捻樞驁?zhí)行。例如,所述的塊或狀態(tài)可以按不同于已特別公開的次序的次序執(zhí)行,或多個塊或狀態(tài)可組合在單個塊或狀態(tài)中。示例性塊或狀態(tài)可串行地、并行地或以某種其他方式執(zhí)行。塊或狀態(tài)可被添加到所公開的示例性實施方案或可從這些實施方案中移除。本文所述的示例性系統(tǒng)和組件可以以不同于所述方式的方式進(jìn)行配置。例如,與所公開的示例性實施方案相比,元件可被添加、移除或重新布置。
還應(yīng)了解,各種項目被示出為在使用時存儲在存儲器中或存儲設(shè)備上,且為了存儲器管理和數(shù)據(jù)完整性,可以在存儲器與其他存儲設(shè)備之間傳遞這些項目或它們的部分。或者,在其他實施方案中,一些或所有的軟件模塊和/或系統(tǒng)可以在另一設(shè)備上的存儲器中執(zhí)行,并且通過計算機間通信來與所示的計算系統(tǒng)通信。另外,在一些實施方案中,可以其他方式、諸如至少部分地在固件和/或硬件中來實現(xiàn)或提供所述系統(tǒng)和/或模塊中的一些或全部,所述硬件包括但不限于一個或多個專用集成電路(asic)、標(biāo)準(zhǔn)集成電路、控制器(例如,通過執(zhí)行適當(dāng)?shù)闹噶畈⑶野ㄎ⒖刂破骱?或嵌入式控制器)、現(xiàn)場可編程門陣列(fpga)、復(fù)雜可編程邏輯設(shè)備(cpld)等。所述模塊、系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)中的一些或全部也可(例如作為軟件指令或結(jié)構(gòu)化數(shù)據(jù))存儲在計算機可讀介質(zhì)(諸如硬盤驅(qū)動、存儲器、網(wǎng)絡(luò)或通過適當(dāng)驅(qū)動器或經(jīng)由適當(dāng)連接來讀取的便攜式媒體物品)上。所述系統(tǒng)、模塊和數(shù)據(jù)結(jié)構(gòu)也可作為所生成的數(shù)據(jù)信號(例如,作為載波或其他模擬或數(shù)字傳播信號的一部分)在多種計算機可讀傳輸介質(zhì)(包括基于無線的介質(zhì)和基于有線/電纜的介質(zhì))上傳輸,并且可采取多種形式(例如,作為單個模擬信號或多路復(fù)用的模擬信號的一部分,或作為多個離散的數(shù)字?jǐn)?shù)據(jù)包或幀)。在其他實施方案中,此類計算機程序產(chǎn)品也可采取其他形式。因此,本發(fā)明可用其他計算機系統(tǒng)配置來實踐。
本文所用的條件語言,諸如尤其是“可(can)”、“可以(could)”、“可能(might和may)”、“例如(e.g.)”等,除非另外明確說明或在使用的背景下以其他方式進(jìn)行理解,否則通常旨在傳達(dá):某些實施方案包括、而其他實施方案不包括某些特征、元件和/或步驟。因此,這種條件語言通常并非意圖暗示所述特征、元件和/或步驟無論如何都是一個或多個實施方案所必需的,或者并非暗示一個或多個實施方案必須包括用于在借助或不借助輸入或者提示的情況下決定是否包括這些特征、元件和/或步驟或是否在任何特定實施方案中實施這些特征、元件和/或步驟的邏輯。術(shù)語“包括”、“包含”、“具有”等是同義的,并以開放的方式包含性地使用,而且不排除另外的元件、特征、動作、操作等。另外,術(shù)語“或者”以其包含性意義(并且不以其排除性意義)使用,從而使得當(dāng)(例如)用來連接一列表元件時,術(shù)語“或者”意味著所述列表中元件的一個、一些或全部。
盡管已經(jīng)描述某些示例性實施方案,但是這些實施方案僅通過實例呈現(xiàn),且并非意圖限制本文所公開的發(fā)明的范圍。因此,在前文描述中沒有內(nèi)容意在暗示任何特定特征、特性、步驟、模塊或方框是必須的或不可缺少的。實際上,本文所述的新穎方法和系統(tǒng)可通過各種其他形式來體現(xiàn);另外,在不脫離本文所公開的發(fā)明的精神的情況下,可對本文所述的方法和系統(tǒng)的形式做出各種省略、替代以及改變。所附權(quán)利要求書和其等效物意圖涵蓋將會落在本文所公開的發(fā)明的范圍和精神內(nèi)的此類形式或修改。