域不可知的資源分配框架的制作方法
【專利摘要】本文中描述資源分配框架,其以域不可知的方式將項目(概念化為球)分配至項目接收槽(概念化為倉)。用戶通過生成以聲明性方式描述分配問題的規(guī)范來將資源分配框架實例化為特定分配問題。作為其它特征之一,該規(guī)范將真實實體映射成球和倉,并描述與分配問題相關(guān)聯(lián)的約束。該規(guī)范還提供針對所提議的特定球至特定倉的指派計算資源消費(fèi)的利用函數(shù)。根據(jù)另一方面,資源分配框架使用并行操作的許多處理元件(例如GPU線程、CPU線程等等)來嘗試對分配問題求解。在此對解的搜索中,資源分配框架以探索模式和開拓模式的任何組合來操作。
【專利說明】域不可知的資源分配框架
[0001]背景
[0002]存在許多有必要以滿足指定約束集合的方式將項分配至倉(bin)的情形。例如,在管理數(shù)據(jù)中心時,必需將虛擬機(jī)(VM)分配給服務(wù)器,這受到該數(shù)據(jù)中心中VM的資源要求和服務(wù)器的資源能力的控制。分配問題在本質(zhì)上會是復(fù)雜的。因此,研宄團(tuán)體已開發(fā)了各種算法來解決各種分配問題。
[0003]許多分配算法是通過試探法來支配的。然而,基于試探法的算法有許多缺點。首先,基于試探法的算法僅適用于它所針對設(shè)計的特定分配問題。其次,基于試探法的算法在分配問題變化時會變得過時。例如,數(shù)據(jù)中心可演變以結(jié)合新技術(shù)?;蛘?,管理人員可重新定義分配目標(biāo),和/或重新配置數(shù)據(jù)中心的架構(gòu)以更佳地滿足變化的市場需求。由于這些變化,試探法算法不再能準(zhǔn)確地對數(shù)據(jù)中心建模。這進(jìn)而可迫使工程師修訂分配框架的試探法,從而可能需要大量的工作。
【發(fā)明內(nèi)容】
[0004]本文中描述資源分配框架(RAF),其將項(概念化為球)分配至項接收槽(概念化為倉)。用戶通過產(chǎn)生規(guī)范來將RAF實例化成特定分配問題。該規(guī)范以聲明性方式描述分配問題。例如,該規(guī)范將真實實體映射成球和倉,并描述與分配問題相關(guān)聯(lián)的約束。該規(guī)范還提供針對所提議的特定球至特定倉的指派計算資源消費(fèi)的利用函數(shù)。
[0005]另一方面,RAF的核心抽象對于不同分配問題保持域不可知。因此,用戶可以便利方式通過編寫針對新分配問題的新規(guī)范而不修訂RAF的抽象,來使RAF適應(yīng)該問題。
[0006]根據(jù)另一說明性方面,RAF使用對分配問題的解執(zhí)行并行搜索的多個處理元件。例如,處理元件可對應(yīng)于圖形處理單元(GPU)或多核中央處理單元(CPU)等所提供的線程。
[0007]根據(jù)另一說明性方面,資源分配框架使用探索模式和開拓模式的任意組合來操作,如以下在詳細(xì)描述章節(jié)中進(jìn)一步描述的。
[0008]上面的方法可以顯現(xiàn)在各種類型的系統(tǒng)、組件,方法、計算機(jī)可讀介質(zhì)、數(shù)據(jù)結(jié)構(gòu)、
產(chǎn)品等等中。
[0009]提供本概述以便以簡化形式介紹一些概念;這些概念將在以下的詳細(xì)描述中進(jìn)一步描述。本概述并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)的主題的范圍。
[0010]附圖簡述
[0011]圖1示出包括域不可知的資源分配框架(RAF)的環(huán)境的縱覽。
[0012]圖2示出可由規(guī)范給出的不同信息項。RAF使用該規(guī)范來實例化供應(yīng)用于特定問題域的其核心抽象。
[0013]圖3示出由圖1的RAF執(zhí)行的處理的邏輯描繪。
[0014]圖4是以高級形式描述圖1的RAF的操作的一種方式的流程圖。
[0015]圖5-6共同提供描述圖1的RAF的操作的一種方式的流程圖;在此,RAF中的每個處理元件以獨(dú)立方式工作以對分配問題求解。
[0016]圖7-8共同提供描述圖1的資源分配框架的操作的另一種方式的流程圖;在此,處理元件的群組一起協(xié)同工作以對分配問題求解。
[0017]圖9-11示出用于描述三個相應(yīng)分配問題的三個規(guī)范。
[0018]圖12示出規(guī)范可對作業(yè)調(diào)度問題的特性建模的方式。
[0019]圖13是描述RAF可使用參照圖12闡述的概念執(zhí)行作業(yè)調(diào)度操作的一種辦法的流程圖。
[0020]圖14描述RAF的操作的探索模式和開拓模式。
[0021]圖15是歸納RAF在探索操作模式中的操作的流程圖。
[0022]圖16是歸納RAF在開拓操作模式中的操作的流程圖。
[0023]圖17是描述問題求解框架的處理元件可并行工作以對任何NP困難約束問題的求相應(yīng)解的一種方式的流程圖。
[0024]圖18示出了可以被用來實現(xiàn)前面的附圖中所示出的特征的任何方面的說明性計算功能。
[0025]圖19示出RAF所使用的圖形處理模塊的一種說明性實現(xiàn)。
[0026]貫穿本公開和各附圖,相同的編號參考相同的組件和特征。100系列標(biāo)號指的是最初在圖1中所找到的特征,200系列的標(biāo)號指的是最初在圖2中找到的特征,300系列的標(biāo)號指的是最初在圖3中找到的特征,依此類推。
[0027]詳細(xì)描述
[0028]本發(fā)明是按如下方式來組織的。章節(jié)A描述域不可知的資源分配框架的縱覽。章節(jié)B闡述資源分配框架的代表性應(yīng)用。章節(jié)C描述資源分配框架的探索操作模式和開拓操作模式。章節(jié)D描述了可被用來實現(xiàn)前述各節(jié)所描述的特征的任何方面的說明性計算功會K。
[0029]初步地,一些附圖描述一個或多個結(jié)構(gòu)組件(不同地稱為功能、模塊、特征、元件等)的上下文中的概念。附圖所示的各個組件可通過物理和有形的機(jī)制,例如通過軟件、硬件(例如芯片實現(xiàn)的邏輯功能)、固件等和/或其任何組合,以任何方式實現(xiàn)。在一種情況下,附圖中所示出的將各種組件分離為不同的單元可以反映在實際實現(xiàn)中使用對應(yīng)的不同的物理和有形的組件??闪磉x地,或者另外,附圖中所示出的任何單個組件都可以通過多個實際物理組件來實現(xiàn)。另選地或另外地,附圖中的任何兩個或更多分開組件的描繪可以反映單個實際物理組件所執(zhí)行的不同功能。進(jìn)而要描述的章節(jié)D提供了關(guān)于附圖中示出的功能的一個說明性物理實現(xiàn)的附加細(xì)節(jié)。
[0030]其他附圖以流程圖形式描述了概念。以此形式,某些操作被描述為構(gòu)成以某一順序執(zhí)行的不同的框。這些實現(xiàn)是說明性而非限制性的。此處描述的某些框可被分組在一起并在單個操作中執(zhí)行,某些框可被分成多個組件框,并且某些框可以按與此處所示出的不同的次序來執(zhí)行(包括以并行方式執(zhí)行這些框)。流程圖中示出的框可以任何方式由任何物理和有形機(jī)制來實現(xiàn),例如由軟件、硬件(如芯片實現(xiàn)的邏輯功能)、固件等,和/或它們的任何組合來實現(xiàn)。
[0031]至于術(shù)語,短語“被配置成”包含任何類型的物理和有形的功能可以被構(gòu)建來執(zhí)行已標(biāo)識的操作的任何方式。功能可以被配置成使用例如軟件、硬件(例如,芯片實現(xiàn)的邏輯功能)、固件等,和/或其任何組合來執(zhí)行操作。
[0032]術(shù)語“邏輯”包含用于執(zhí)行任務(wù)的任何物理和有形的功能。例如,流程圖中示出的每一個操作都對應(yīng)于用于執(zhí)行該操作的邏輯組件。操作可以使用例如軟件、硬件(例如,芯片實現(xiàn)的邏輯功能)、固件等,和/或其任何組合來執(zhí)行操作。在由計算系統(tǒng)實現(xiàn)時,邏輯組件表示作為計算系統(tǒng)的物理部分的、無論如何實現(xiàn)的電子組件。
[0033]權(quán)利要求中的短語“用于…的裝置”(如果被使用)旨在援引35U.S.C.§ 112第六段的規(guī)定。除了本特定短語之外,沒有其他語言旨在援引該法條的該部分的規(guī)定。
[0034]下列的說明可以將一個或多個特征標(biāo)識為“可選”。這種類型的陳述不應(yīng)該被解讀為可以被視為可選的特征的窮盡的指示;也就是說,其他特征也可以被視為可選,雖然在文本中沒有明確地標(biāo)識。最后,術(shù)語“示例性”或“說明性”指的是可能多個實現(xiàn)中的一個實現(xiàn)。
[0035]A.域不可知的資源分配框架的縱覽
[0036]圖1示出包括資源分配框架(RAF) 102的說明性環(huán)境100。作為縱覽,RAF 102將項(本文中概念化為球)指派給項接收槽(本文中概念化為倉)。例如,在一個問題域中,球?qū)?yīng)于虛擬機(jī)(VM)且倉對應(yīng)于服務(wù)器。在另一問題域中,球?qū)?yīng)于用戶而倉對應(yīng)于服務(wù)器。在又一問題域中,球?qū)?yīng)于作業(yè)而倉對應(yīng)于時隙。在再一問題域中,球代表網(wǎng)絡(luò)中的路徑而倉代表ID,依此類推。
[0037]RAF 102是所謂的域不可知的。這意味著RAF 102不被設(shè)計為服務(wù)任一個問題域;相反,RAF 102應(yīng)用一般的并且因此可應(yīng)用于各種分配問題的一核心抽象集合。用戶可通過編寫規(guī)范104來將RAF 102應(yīng)用于特定分配問題。規(guī)范104提供描述特定分配問題的特性的以聲明性方式表達(dá)的信息。
[0038]在一種實現(xiàn)中,RAF 102使用處理元件106的集合來實現(xiàn)。例如,處理元件106可對應(yīng)于一個或多個圖形處理單元(GPU)、多核中央處理單元(CPU)等所提供的線程。處理元件108代表處理元件106的集合中的一個成員。
[0039]在一實現(xiàn)中,每個處理元件108將球分配至倉,以提供對分配問題的部分解或完全解。完全解對應(yīng)于其中受規(guī)范104中所指定的約束所控制地全部球被指派至倉的情形。部分解對應(yīng)于其中至少一個球保持未被分配的情形,因為受到適用約束的控制其不能被置入任一個倉中。每個處理元件通過產(chǎn)生球的排序(在一情形中可為隨機(jī)排序)來開始其處理。然后它嘗試根據(jù)該排序指定的次序來將球相繼裝入倉中。每個處理元件產(chǎn)生球的不同排序,因此不同處理元件可產(chǎn)生不同的解。
[0040]RAF 102進(jìn)行的搜索在以下情形時終止:(a)處理元件106之一求得分配問題的完全解;或(b)該進(jìn)程被中止,例如響應(yīng)于來自用戶的指令或響應(yīng)于所定義搜索時段的期滿等等。假設(shè)沒有一個處理元件求得完全解,且進(jìn)程沒有被另行中止。每個處理元件然后將生成球的另一(可能隨機(jī)化的)排序,并且關(guān)于該新的排序重復(fù)其對完全解的搜索。
[0041]在另一實現(xiàn)中,處理元件106的集合包括多個處理元件群組,諸如群組110和群組112等。每個群組協(xié)作地嘗試針對分配問題求單個完全解。每個群組根據(jù)它在球的相較于其他群組的不同排序上操作的事實探索搜索空間的不同部分。該進(jìn)程基于以上針對第一實現(xiàn)指定的相同條件終止(或繼續(xù)另一迭代)。
[0042]用戶可以不同方式與RAF 102交互。在一辦法中,RAF 102可在關(guān)于用戶的一遠(yuǎn)程位置實現(xiàn)。例如,RAF 102可被實現(xiàn)為具有正面接口模塊114的數(shù)據(jù)服務(wù)。用戶可經(jīng)由網(wǎng)絡(luò)118使用任何用戶設(shè)備116與接口模塊114交互。該用戶設(shè)備可對應(yīng)于個人計算機(jī)、計算機(jī)工作站、任何類型的便攜式計算機(jī)(例如,膝上型計算機(jī)、移動電話、平板計算機(jī)等等)、依此類推。網(wǎng)絡(luò)118可對應(yīng)于局域網(wǎng)、廣域網(wǎng)(例如因特網(wǎng))、點對點管道、依此類推。在此情形中,用戶經(jīng)由用戶設(shè)備116上傳規(guī)范104。作為響應(yīng),用戶從RAF 102接收傳達(dá)球向倉的部分或全部指派(如映射至真實實體)的解。
[0043]在另一辦法中,RAF 102和用戶定位于相同位置。例如,RAF 102可由結(jié)合有GPU模塊、多核CPU模塊等的任何類型的用戶計算機(jī)來實現(xiàn)。在此情形中,用戶可將規(guī)范104直接載入本地RAF 102中。RAF 102然后以任何方式(諸如通過顯示解、打印該解、和/或?qū)⑵鋬Υ娉晌募鹊?將該解輸出給用戶。
[0044]前行至圖2,此圖示出由規(guī)范104取決于問題域的性質(zhì)可給出的不同信息項。作為第一信息項,規(guī)范104將真實實體(諸如VM)集合映射至球202。作為第二信息項,規(guī)范104將真實實體(諸如服務(wù)器)集合映射至倉204。除此映射之外,RAF 102所采用的抽象以域不可知方式處置球和倉。
[0045]用戶可以不同方式挑選倉的數(shù)量。在一辦法中,對于每個因倉而異的資源(諸如CPU資源),用戶能計算全部球請求的對此資源的總使用量。用戶然后可針對所考慮的特定資源,諸如CPU容量)將此資源消費(fèi)除以全部倉的總資源容量(。這產(chǎn)生了針對不同的各個因倉而異的資源的值集合。最大值對應(yīng)于所需倉數(shù)量的下限。用戶可挑選略大于此下限的倉的數(shù)量。如果對倉的初始選擇不產(chǎn)生足夠的解,則用戶可增加倉的數(shù)量。
[0046]作為第三信息項,規(guī)范104還指定資源向量206。該資源向量206包括與關(guān)聯(lián)于分配問題的不同資源相對應(yīng)的多個維度。例如,考慮η個服務(wù)器構(gòu)成的一集合,每個服務(wù)器提供m個非共享的資源(諸如CPU資源、存儲器資源、盤資源等等)。在此情形中,資源向量可使用η X m個維度來描述這些非共享資源。資源向量206還可指定每個非共享資源維度的相應(yīng)容量。例如,一個維度可提供特定服務(wù)器的CPU容量。
[0047]資源向量206分配與問題域所提供的共享資源相對應(yīng)的其他維度。例如,假定問題域指定使用經(jīng)由兩條鏈路連接在一起的兩個服務(wù)器。資源向量206可包括對應(yīng)于這些鏈路的兩個附加維度。每個共享維度還指定特定共享資源的容量。
[0048]資源向量206還可包括零個、一個或多個沖突維度。每個沖突維度獲得沖突容量的指派。RAF 102取決于問題域的性質(zhì)將沖突維度用于不同目的。在一情形中,例如,RAF102可使用沖突維度來標(biāo)識球至倉的不相容指派。章節(jié)B提供闡明沖突維度的使用的示例。
[0049]規(guī)范104還與利用函數(shù)208相關(guān)聯(lián)(例如,通過將利用函數(shù)208內(nèi)聯(lián)到規(guī)范的指令中或使用任何類型的鏈接引用單獨(dú)提供的利用函數(shù)208)。利用函數(shù)208對應(yīng)于接受當(dāng)前球選擇(球3|?)、當(dāng)前倉選擇(倉3|?)以及球至倉的當(dāng)前部分指派(分配3|?)的典型短程序。即,分配描述已被分配至倉的球。利用函數(shù)208然后返回對如果球被指派給倉則將消費(fèi)多少資源的指示。
[0050]更具體地,利用函數(shù)208可包括球資源需求210、消費(fèi)確定邏輯212、以及消費(fèi)向量消費(fèi)*/#214。球資源需求210指定與球相關(guān)聯(lián)的實體(例如VM)所正在請求的資源的量。消費(fèi)確定邏輯212實現(xiàn)指定如果球被指派給倉則將消費(fèi)的資源的量的分析邏輯。消費(fèi)向量消費(fèi)* / #表達(dá)資源的消費(fèi)。即,消費(fèi)向量消費(fèi)* / #包括與資源向量206相同的維度。利用函數(shù)208至少部分地基于球資源需求210所指定的信息載入在適當(dāng)維度的消費(fèi)倉/#中將球3Ι?置入倉3Ι?所消費(fèi)的資源。
[0051]規(guī)范104還可包括取決于特定分配問題的性質(zhì)的一個或多個其他信息項216的集合,以及該問題在規(guī)范中建模的方式。例如,規(guī)范104可指定至少兩個球具有“朋友”關(guān)系。該約束指令RAF 102將這兩個球指派至同一倉。規(guī)范104還可指定至少兩個球具有“對手”關(guān)系。該約束指令RAF 102將這兩個球指派至不同的相應(yīng)倉。規(guī)范可確保通過創(chuàng)建適當(dāng)對的對手來將所有球置入分開的倉中。
[0052]更具體地,在一情形中,規(guī)范104可指定一個或多個朋友群。例如,該規(guī)范可指示球1、2、3是朋友。RAF 102將嘗試通過將所有三個球置入同一倉來滿足此約束。規(guī)范104還可指定交疊朋友群,諸如通過指定球1、2和3的第一朋友群以及球2、4和6的第二朋友群。RAF 102將嘗試通過將所有6個球置入同一倉來滿足此約束,因為這些群通過共同的球2而鏈接在一起。
[0053]該規(guī)范還可指定一個或多個對手群,諸如通過指定球1、2和3形成一對手群。在一解讀中,RAF 102可嘗試通過將全部3個球置入分開的倉中來尊重此約束。在另一解讀中,RAF 102可嘗試通過簡單地防止全部3個球被指派至同一倉來尊重此約束。S卩,RAF 102可通過將對手群中指定的至少一個球與其他球分開地放置來滿足此約束。
[0054]約束104還可指定一個或多個軟約束。軟約束指定會違背另一(硬)約束但尚可被認(rèn)為可接受的條件。例如,如上所述,規(guī)范104可指定某些球互為朋友或互為對手。但是假設(shè)RAF 102無法尊重規(guī)范所指定的所有約束,軟約束可指示該限制可在特定情形中得以放寬。在另一情形中,規(guī)范104可指定一服務(wù)器群,每個服務(wù)器具有z的CPU容量。但是軟約束可指定該硬約束可在特定情形中得以超越,再次假設(shè)RAF 102無法滿足規(guī)范所指定的所有約束。
[0055]規(guī)范104可按照任何方式指定軟約束,諸如通過指定概率值、百分比等等。例如,軟約束可標(biāo)識管控硬約束的應(yīng)用的概率值P。RAF 102將通過每當(dāng)尋求應(yīng)用所討論的硬約束時挑選隨機(jī)數(shù)來對此軟約束作出響應(yīng)。如果該隨機(jī)數(shù)落在P所指定的容許范圍內(nèi),則它將忽視硬約束。章節(jié)B提供軟約束應(yīng)用的附加示例。
[0056]規(guī)范104還可指定釘扎(pinning)約束。釘扎約束指定在開始嘗試對分配問題求解時至少一個球?qū)⒈豢紤]先驗指派給特定倉。例如,在一情形中,RAF102可針對在時間開始的特定作業(yè)將球指派至倉。假設(shè)第二作業(yè)請求在第一作業(yè)當(dāng)前正在進(jìn)展時到達(dá)。RAF102可在將球分配給第二作業(yè)之前釘扎與第一作業(yè)相關(guān)聯(lián)的球。這一操作防止關(guān)于第二作業(yè)執(zhí)行的分配進(jìn)程破壞已被分配給該第二作業(yè)的資源。章節(jié)B提供關(guān)于釘扎約束的應(yīng)用的進(jìn)一步細(xì)節(jié)。
[0057]圖2中枚舉的信息項作為示例而非限制地得以闡述。針對其他問題域開發(fā)的其他規(guī)范可指定其他信息項。
[0058]圖3闡述RAF 102的操作的邏輯描繪300。例如,RAF 102的每個處理元件可實現(xiàn)圖3所示的各個模塊。為便于描述,圖3將針對其中每個處理元件嘗試求它自己的針對分配問題的解而不與其他處理元件協(xié)作的情形進(jìn)行描述。
[0059]從高層觀點看,RAF 102的核心抽象不采用考慮特定問題域的性質(zhì)的試探法。相反,RAF 102 “盲目”地選取球和倉。利用函數(shù)然后通知RAF 102將被該特定選擇消費(fèi)的資源的量。RAF 102然后通過利用規(guī)范所提供的資源向量來確定該資源消費(fèi)是否可接受。然而,RAF 102的核心抽象通過將當(dāng)前利用向量(利用sti)與資源向量進(jìn)行“盲”比而不“知曉”這些向量的維度在真實資源的上下文中實際上代表什么,來作出此確定。
[0060]更具體地,在一實現(xiàn)中,RAF 102將單個球指派至單個倉。球和倉是無法分割的原子單元。由此,編寫規(guī)范104的用戶將被請求來定義球和倉,以對應(yīng)于分配問題的最小可分部分。進(jìn)一步地,RAF 102的核心抽象不在不同類型的球和倉之間進(jìn)行區(qū)分。S卩,規(guī)范本身可在不同類型的球和倉之間進(jìn)行區(qū)分。但是,在選擇球和倉時,RAF 102的核心抽象關(guān)于規(guī)范將如何解讀此球和倉是不可知的。章節(jié)B闡述描述定義不同類型的球和倉的代表性規(guī)范的示例。
[0061]通過以上介紹,解釋進(jìn)而將描述圖3所示的每個組件。解釋將假定(圖1的)代表性處理元件108實現(xiàn)組件。其他處理元件實現(xiàn)同一組的組件。
[0062]洗牌模塊302選擇球的一排序,諸如但不限于球的隨機(jī)排序。例如,假設(shè)存在10個球。每個處理元件利用其洗牌模塊302來產(chǎn)生這10個球的不同排序(除非碰巧兩個或多個處理元件產(chǎn)生相同的排序)。洗牌模塊302還能任選地以某些方式(諸如隨機(jī)方式)來對倉的排序進(jìn)行洗牌。
[0063]指派模塊304在某些實例中選取一候選倉,并且在其他實例中選取一候選球。例如,指派模塊304可通過在所定義的倉排序中選擇第一倉來開始其處理。然后,指派模塊304可從所定義的球排序中選擇第一球。當(dāng)處理元件108將第一球成功地置入第一倉中(如果可能的話)時,指派模塊304然后將在該球排序中選擇第二球,并且嘗試將該球裝入第一倉中。當(dāng)處理元件108已嘗試將所有球相繼地裝入第一倉中時,指派模塊304然后將選擇第二倉。處理元件108然后將嘗試把所有剩余的未分配球相繼裝入第二倉,依此類推。
[0064]詢問模塊306在當(dāng)前所選球(球當(dāng)前)、當(dāng)前所選倉(倉當(dāng)前)和當(dāng)前球至倉的部分分配(已由處理元件108置入)的情況下調(diào)用利用模塊308。利用模塊308代表圖2所述的利用模塊208的一實例化。利用模塊308通過生成消費(fèi)向量消費(fèi)倉/#對詢問作出響應(yīng),消費(fèi)向量消費(fèi)描述假設(shè)所選球被置入所選倉則將消費(fèi)的資源的量。
[0065]集聚豐旲塊310從利用申旲塊308接收消費(fèi)向量消費(fèi)倉/球。然后它將消費(fèi)倉/球向量中指定的資源消費(fèi)值添加至當(dāng)前利用向量利用的適當(dāng)維度。利用向量描述球至倉的當(dāng)前部分置入所消費(fèi)的資源的當(dāng)前量。例如,假設(shè)處理元件108已將4個球置入一個或多個倉。利用向量描述這4個球如果被置入指定倉將消費(fèi)的資源。利用^-向量具有資源維度,該資源維度映射至資源向量206的資源維度。
[0066]約束檢查模塊312確定如利用向量所反映的資源的當(dāng)前利用是否滿足適用約束。部分地,約束檢查模塊312通過確定利用向量中的資源利用值是否不超越資源向量206中所指定的對應(yīng)容量值,來執(zhí)行此任務(wù)。約束檢查模塊312還可確定球至倉的指派是否不違背規(guī)范中指定的任何其他約束,諸如朋友約束或?qū)κ旨s束。如果各個約束都沒有違背,則約束檢查模塊312存留由集聚模塊310執(zhí)行的關(guān)于球至倉3|的指派的集聚;否則,約束檢查模塊312將取消由集聚模塊310執(zhí)行的集聚。
[0067]終止確定模塊314確定結(jié)束處理元件108所執(zhí)行的處理是否合適。例如,終止確定模塊314可指令處理元件108在處理元件108已找到針對分配問題的完全解(其中所有球已被成功指派至倉)時停止其操作。在另一情形中,終止確定模塊314可在分派給執(zhí)行搜索的最大時間已到之際、或者有來自用戶的明確指令之際終止求解的嘗試。
[0068]圖4示出提供圖1的RAF 102的一種操作方式的縱覽的過程400。在框402,RAF102接收來自用戶的規(guī)范。該規(guī)范以聲明性方式描述問題域的各個特性。在框404,RAF 102使用該規(guī)范來確定將一集合的項(概念化為球)分配給一集合的項接收槽(概念化為倉)的解。換言之,規(guī)范關(guān)于特定分配問題來實例化RAF 102的域不可知的抽象。
[0069]圖5-6共同示出描述處理元件一比方說處理元件108 —可嘗試來對分配問題求解的一種方式的過程500。在此操作模式中,處理元件108以獨(dú)立于其他處理元件的方式操作。
[0070]在框502,處理元件108提供球的排序(諸如但不限于隨機(jī)排序),并且可任選地提供倉的排序。在框504,處理元件108在框502中建立的排序中選擇下一倉(倉■)。在過程500開始時,倉將對應(yīng)于排序中的第一倉。在框506,處理元件108在框502中建立的排序中選擇下一球(球.)。在第一迭代中,球?qū)?yīng)于排序中的第一球。
[0071]在框508,處理元件108針對所選球和倉、連同倉對球的當(dāng)前分配(分配當(dāng)前)(表示基于過程500的前一迭代已指派至倉的球)來調(diào)用利用模塊308。在框510,處理元件108接收來自利用模塊308的消費(fèi)向量(消費(fèi)倉/#)。在框512,處理元件108以逐個維度的方式將消費(fèi)向量中指定的值加到當(dāng)前利用向量利用3|?。
[0072]前行至圖6,在框602,處理元件108確定利用3?是否滿足所有適用約束。如果為否,在框604,處理元件108取消框512中執(zhí)行的集聚。但是,如果滿足了所有的約束,則在框606,處理元件108存留框512中執(zhí)行的分配。這些約束包括資源向量中指定的容量約束、沖突約束(如果有的話)、對手約束(如果有的話)等等。
[0073]考慮其中處理元件108已成功放置作為朋友群的一成員的球的特定情形。處理元件108然后可針對該朋友群(以及任何相鏈接朋友群,如果有的話)的每一個其他成員相繼重復(fù)框506-606。假定針對該(多個)朋友群的所有成員滿足框602,處理元件108將存留這些球的分配及其相關(guān)聯(lián)資源消費(fèi)。否則,處理元件108將取消與(多個)朋友群相關(guān)聯(lián)的所有分配,即使一些成員能在不超越約束的情況下個別地放置。
[0074]在框608,處理元件108確定其是否已嘗試將該球排序中所有的未分配球置入倉s前。如果為否,則在框610,處理元件108返回至框508,其中選擇排序中的下一球。然而,如果處理元件108已嘗試了所有球,則其前行至框612,其中它確定它已嘗試將所有球置入所有倉。如果為否,則在框614,處理元件108返回至框504,其中它選擇倉排序中的下一倉。
[0075]假設(shè)處理元件108已嘗試將所有球裝入至所有倉。然后,在框616,處理元件108確定是否剩余任何未分配的球。如果為否,則已已找到完全解,并且處理元件108終止其對解的搜索。但是,如果尚未找到完全解,則處理元件108前行至框618。在框618,處理元件108確定是否已滿足終止條件。一個終止條件可對應(yīng)于搜索時間區(qū)間的結(jié)束。另一個終止條件可對應(yīng)于來自用戶的終止對解的搜索的明確指令。假設(shè)尚未滿足終止條件。然后,在框620,處理元件108返回至框502,其中處理元件108將球重新洗牌(并且可任選地,還將倉重新洗牌)。處理元件108然后關(guān)于球的新排序(以及可任選地,倉的新排序)重復(fù)上述過程500。
[0076]但是,如果滿足了終止條件,處理元件108前進(jìn)至框622。在框622,處理元件108提供它已按照其處理的上一迭代生成的無論什么部分解。即,回想每一個處理元件106將執(zhí)行如上所述的相同過程500。由此,每一個其他處理元件106將在終止時(假設(shè)無法找到完全解)將提供其自己對分配問題的部分解。
[0077]RAF 102可使用各種策略來在處理元件106提供的部分解集合中選擇最適合的部分解。在一辦法中,RAF 102能選擇將大多數(shù)球置入倉中的解。在另一辦法中,RAF 102能選擇留下最大數(shù)量的未消費(fèi)資源容量的解。在另一情形中,RAF 102能選擇符合特定難以滿足約束的解等等?;蛘?,RAF 102能基于以上上述的兩個或多個因素來挑選解。在一實現(xiàn)中,處理元件之一可被委托選擇最合需的部分解的任務(wù)。在另一實現(xiàn)中,由CPU實現(xiàn)的程序可挑選最合需的部分解。
[0078]圖7-8共同示出描述處理元件群組一比方說群組110 —嘗試對分配問題求解的一種方式的過程700。在此操作模式中,群組110中的處理元件協(xié)同工作以求單個解。每一群組嘗試求相對于其他群組的單獨(dú)解。
[0079]在框702,群組110提供球的排序以及可任選的倉的排序。在框702,群組110在框702中建立的倉的排序中選擇下一倉(倉當(dāng)前)。在框706,群組110選擇下一集合的球(多球以供由該群組處理。例如,假設(shè)在隨機(jī)排序中存在20個球,并且在群組中存在5個處理元件。群組110能在20個球的排序中選擇下5個球,以供由群組110的相應(yīng)成員處理。在一實現(xiàn)中,群組110中的處理元件之一能代表群組110中的其他處理元件執(zhí)行操作702 和 704。
[0080]群組110中的每一個處理元件接著相關(guān)于來自多球_的特定球球i執(zhí)行圖7和8中的虛線框所包圍的操作。換言之,群組中的每個處理元件嘗試將選自多球的不同球裝入倉中。群組中的處理元件以并行方式執(zhí)行這些計算。
[0081]更具體地,在框708,群組中的每個處理元件一比如說處理元件108 —關(guān)于倉當(dāng)前、球1以及分配調(diào)用利用函數(shù)。在框710,處理元件108接收利用向量消費(fèi)倉/#。在框712,處理元件108以逐個維度的方式將消費(fèi)倉/#中指定的值加至利用在框802,處理元件108確定利用3|是否滿足所有適用約束。如果為否,則在框804,處理元件108取消框712中執(zhí)行的集聚。但是,如果完全滿足了約束,則在框806,處理元件108存留框712中執(zhí)行的集聚。
[0082]在框808,群組110執(zhí)行聯(lián)合檢查以確定框708-806中作出的所有球放置是否是互為相容的。即,每個處理元件在不參考其他處理元件執(zhí)行的分配的情況下執(zhí)行框708-806。框808確定處理元件所執(zhí)行的所有分配是否滿足所有適用約束(當(dāng)一起考慮時)。
[0083]在框810,群組110基于框808中所執(zhí)行的約束檢查的結(jié)果確定球從球向倉當(dāng)Λ的最終放置。例如,如果群組110確定針對所有個別分配所有約束得到了滿足,則群組110能存留單獨(dú)處理元件所執(zhí)行的個別分配。群組110還以適當(dāng)方式更新利用如果約束沒有都得到滿足,則群組可取消個別處理元件所執(zhí)行的一個或多個分配,并且相應(yīng)地調(diào)整利用當(dāng)Λ向量。在一實現(xiàn)中,群組110中的處理元件之一能執(zhí)行框808和809的上述操作。
[0084]B.說明性示例
[0085]RAF 102可被應(yīng)用于其中項(概念化為球)被指派給項接收槽(概念化為倉)的許多分配問題。為執(zhí)行此任務(wù),用戶編寫描述問題域的特性的規(guī)范,從而充分利用章節(jié)A中所闡述的構(gòu)造。本章節(jié)描述若干問題域,以及用來描述這些域的規(guī)范。
[0086]a)將VM指派給服務(wù)器,而不考慮帶寬需求。圖9示出描述第一分配問題的規(guī)范。在此情形中,請求者想要在云基礎(chǔ)結(jié)構(gòu)中使用4個VM運(yùn)行應(yīng)用程序。表格I闡述每個VM的CPU和存儲器需求。假設(shè)云數(shù)據(jù)中心提供兩個服務(wù)器來運(yùn)行這些VM:服務(wù)器SO和服務(wù)器SI。表格2標(biāo)識這兩個服務(wù)器的CPU和存儲器容量。進(jìn)一步假設(shè)以下約束應(yīng)用于分配問題:(I)在置于服務(wù)器之上時,VM的CPU和存儲器要求不超過該服務(wù)器的容量;以及(2)VM2和VM3是請求者想要置于不同服務(wù)器之上的確保容錯的副本。
[0087]規(guī)范I捕捉上述分配問題。規(guī)范的行I將球映射至4個VM(例如,球O = VM0,球i = VM1等等)。規(guī)范的行2將倉映射至服務(wù)器(例如,倉O =服務(wù)器SO以及倉I =服務(wù)器SI)。行3和4定義具有4個維度的資源向量。前兩個維度標(biāo)識服務(wù)器SO的CPU和存儲器容量,而后兩個維度標(biāo)識服務(wù)器SI的CPU和存儲器容量。
[0088]行6-13闡述規(guī)范的利用函數(shù)。一旦被實例化,利用函數(shù)就實現(xiàn)在圖3的上下文中引入的利用模塊308。重申的是,利用函數(shù)接受當(dāng)前球選擇(球3|?)、當(dāng)前倉選擇(倉當(dāng)前)以及倉和球的當(dāng)前分配(分配3|?)。該利用函數(shù)計算在球被指派至倉時將消費(fèi)的資源。注意,該利用函數(shù)不應(yīng)用試探法。RAF 102僅僅“盲”指派球和倉,并且利用函數(shù)報告將此球指派至倉的后果。
[0089]更具體地,行6-9在利用數(shù)據(jù)陣列中編碼VM的VM需求(從表格I中獲取)。行10初始化消費(fèi)倉/#向量(圖9中僅簡化標(biāo)示為“利用”)。行11和12將所選VM(與所選球相關(guān)聯(lián))的需求載入消費(fèi)的適當(dāng)維度。行13將結(jié)果所得的消費(fèi)*/J#向量返回至(圖3)的集聚模塊310。(注意規(guī)范I不使用分配信息。)
[0090]最后,規(guī)范的行14編碼以上所闡述的第二約束。即,行14闡述VM2和VM3為對手。為尊重此約束,RAF 102將把VM2和VM3置于分開的服務(wù)器上。
[0091]a)將VM指派給服務(wù)器,并考慮帶寬需求。圖10示出描述第二分配問題的規(guī)范。與第一示例相像地,假設(shè)請求者想要在數(shù)據(jù)中心使用4個VM運(yùn)行應(yīng)用程序。并且,管理員再次指定將兩個服務(wù)器用來運(yùn)行VM(S0和SI)。VM需求與圖9的表格I中所指定的相同,而服務(wù)器容量信息與圖9的表格2中所指定的相同。
[0092]在此情形中,進(jìn)一步假定VM需求現(xiàn)在還指定從每個VM至每個其他VM的帶寬需求。進(jìn)一步假定兩個服務(wù)器通過單個交換機(jī)連接。第一鏈路(鏈路O)建模從第一服務(wù)器SO至第二服務(wù)器SI的業(yè)務(wù)量,并且第二鏈路(鏈路I)建模從第二服務(wù)器SI至第一服務(wù)器SO的業(yè)務(wù)量。在一情形中,這兩個鏈路可對應(yīng)于數(shù)據(jù)中心中的兩個物理單向鏈路。在另一情形中,這兩個鏈路可指與單個物理鏈路相關(guān)聯(lián)的不同流,即第一流導(dǎo)向服務(wù)器SI,而第二流導(dǎo)向服務(wù)器S0。假設(shè)鏈路O具有150的容量,并且鏈路I具有100的容量。進(jìn)一步地,此分配問題引入以下新約束:通信VM要置于服務(wù)器上,從而不超出連接那些服務(wù)器的網(wǎng)絡(luò)鏈路的容量。
[0093]規(guī)范2捕捉上述分配問題。首先,注意該規(guī)范包括圖9所示的規(guī)范I給予的相同信息。然而,為了簡化附圖,規(guī)范2的摘錄忽略此信息。
[0094]在行1,規(guī)范2標(biāo)識資源向量的兩個新維度(以及規(guī)范I中列出的前4個維度)。即,第4維度列出鏈路O的容量,而第二維度列出鏈路I的容量。
[0095]在利用函數(shù)內(nèi),行3-4描述4個VM構(gòu)成的集合的帶寬需求。例如,行3指示VMO請求10個單元的帶寬供從VMO導(dǎo)向VMl的業(yè)務(wù)量所用。行4指示VMl請求20個單元的帶寬供從VMl導(dǎo)向VMO的業(yè)務(wù)量所用,以此類推。行7和8描述SO和SI之間的路徑。S卩,行7描述服務(wù)器SO與服務(wù)器SI之間的第一路徑,而行8描述服務(wù)器SI與服務(wù)器SO之間的第二路徑。每條路徑用對關(guān)聯(lián)于該路徑的資源向量中的維度的引用作注解。這些路徑可用任何方式來發(fā)現(xiàn),例如通過咨詢已知配置信息、通過咨詢路由表格、通過運(yùn)行跟蹤路線等等。
[0096]行9-15描述利用函數(shù)確定在球當(dāng)* (圖10中簡單地標(biāo)示為球)指派至倉當(dāng)* (圖10中簡單地標(biāo)示為倉)之際引發(fā)的帶寬需求的方式。O球指可能(或可能已經(jīng))被指派至倉(在對利用函數(shù)的前一調(diào)用中)的另一球(球除外)。O倉指儲存O球的倉,如果O球?qū)嶋H上已被指派至倉的話。
[0097]更具體地,行10咨詢分配信息以確定是否已指派特定的O球。它將O倉定義為儲存O球的倉,并且如果尚未指派O球,則它將O倉定義為空值。在行11,利用函數(shù)確定O倉是否存在(非空),以及O倉是否沒有被儲存在與球相同的倉內(nèi)。如果為是,則在行12和13中,利用函數(shù)累加從主存球的服務(wù)器導(dǎo)向主存O球的服務(wù)器的路徑上針對所有鏈路的全部帶寬需求。在行14和15中,利用函數(shù)累加從主存O球的服務(wù)器導(dǎo)向主存球的服務(wù)器的路徑上針對所有鏈路的全部帶寬需求。
[0098]利用函數(shù)對全部O球重復(fù)上述過程。在該過程結(jié)束時,消費(fèi)的帶寬相關(guān)維度將在逐個鏈路的基礎(chǔ)上詳細(xì)列舉在將所選球指派至所選倉之際所消費(fèi)的帶寬。一般而言,注意,此利用函數(shù)僅在兩個球都被置于服務(wù)器之上時才累加這些球之間的帶寬消費(fèi)。
[0099]圖11示出第三分配問題。本例中的分配問題具有與以上關(guān)于圖10所述相同的特性。然而,本例使用更復(fù)雜的策略來對包括服務(wù)器SO和SI的物理網(wǎng)絡(luò)建模。S卩,如代表性圖A所示,網(wǎng)絡(luò)可被概念化為節(jié)點的分層結(jié)構(gòu)。葉節(jié)點(例如節(jié)點4、5、6等)對應(yīng)于服務(wù)器。替代地,在另一解讀中,葉節(jié)點對應(yīng)于機(jī)架,每個機(jī)架儲存一個或多個服務(wù)器。非葉節(jié)點(例如,節(jié)點1、2、3等)對應(yīng)于任何類型的交換機(jī),其將關(guān)聯(lián)于各葉節(jié)點的裝備耦合在一起。根節(jié)點對應(yīng)于網(wǎng)絡(luò)中最頂層的交換機(jī)。與兩個或更多個葉節(jié)點相關(guān)聯(lián)的最近公共祖先(LCA)節(jié)點對應(yīng)于那些葉節(jié)點的葉節(jié)點公共祖先集合中最近公共的祖先。例如,在圖A中,根節(jié)點也是葉節(jié)點4和5的公共祖先,但根節(jié)點也是葉節(jié)點6的祖先;因此,與根節(jié)點相比,節(jié)點2是葉節(jié)點4和5的較近公共祖先。
[0100]圖11列出規(guī)范3的一部分,其針對特定球向特定倉的指派確定帶寬的分配。(規(guī)范3省略規(guī)范I所給出的信息以簡化描繪。)術(shù)語O球和O倉具有與以上關(guān)于規(guī)范2所闡述相同的含義。進(jìn)一步地,規(guī)范3假設(shè)數(shù)據(jù)中心使用最短的路徑路由。這意味著數(shù)據(jù)中心將使用最有效(例如最短)的路徑在任兩個VM之間路由業(yè)務(wù)量。
[0101]在行9_11,利用函數(shù)確定O倉是否不是空的,以及O倉是否不是倉。換g之,此檢查確定O球是否存在,以及O球和球是否置于不同的倉內(nèi)。如果此測試符合要求,則利用函數(shù)累加針對至LCA節(jié)點的路徑(PathToLCA)中的所有鏈路的全部帶寬要求。例如,假設(shè)葉節(jié)點4(圖A所示)與主存球的服務(wù)器相關(guān)聯(lián)。進(jìn)一步假設(shè)葉節(jié)點5與主存O球的服務(wù)器相關(guān)聯(lián)。PathToLCA對應(yīng)于從節(jié)點4至關(guān)聯(lián)于節(jié)點4和5的最近公共祖先(其對應(yīng)于節(jié)點2)的路徑。更具體地,行11考慮自球(導(dǎo)向O球)的流中的帶寬需求,以及(自O(shè)球)導(dǎo)向球的流中的帶寬需求。
[0102]在行12-14,利用函數(shù)確定是否O倉等于空,這意味著O球尚未被指派。如果為是,則利用函數(shù)儲存從主存球(與倉相關(guān)聯(lián))的服務(wù)器至樹的根的鏈路上的全部帶寬需求。在執(zhí)行此操作時,利用函數(shù)取球與O球(其中O球尚未被置入)之間的最差可能帶寬消費(fèi),對應(yīng)于其中關(guān)于圖A中的可用路由路徑O球被置于離O球“最遠(yuǎn)”處的情形。
[0103]行15-17在O球最終被置入特定O倉中時執(zhí)行適當(dāng)?shù)挠泿?。例如,?dāng)置入球時,假設(shè)利用函數(shù)原來取未置入O球的最差可能放置。按照上述行12-14,利用函數(shù)將通過將從倉至樹的根的鏈路上的帶寬份額相加來解決此情形。后來假設(shè)O球被置于與球相同的服務(wù)器上(意味著這些球被置入同一倉內(nèi))。因此,在O球與球之間將不存在帶寬成本。行15-17從而取消在行12-14相加的先前計算的帶寬份額。
[0104]盡管未在規(guī)范3中示出,利用函數(shù)在O球被置于與球不同的服務(wù)器之上時執(zhí)行相似的校正,但從球至O球的路徑不需要通過根節(jié)點。即,該路徑通過不是樹的根的最近公共祖先(LCA)。鑒于O球在特定服務(wù)器上的實際放置,利用函數(shù)可去除在行12-14相加的帶寬份額的已被證明是過度悲觀的部分。
[0105]c)將VM指派至服務(wù)器,采用連接服務(wù)器的多條路徑。接著考慮其中數(shù)據(jù)中心包括任兩個服務(wù)器之間的多條路徑的情形。這意味著這兩個服務(wù)器可使用這些路徑的任一條來通信。在此情形中,利用函數(shù)可包括以下修改:當(dāng)一 VM(比方說VMx)要被置于服務(wù)器(倉)之上時,則對于已被置于不同服務(wù)器(O倉)之上的每一個其它VM(比方說VMy)而言,利用函數(shù)在從覽至VM y的所有路徑上累加VM ,與VM y之間的帶寬需求,除以服務(wù)器VM ,與VM X間路徑的數(shù)量。
[0106]例如,假設(shè)VMjJg使用從VMx導(dǎo)向VMy的三條路徑所構(gòu)成集合中的任一路徑與VMy通信,并且VMjg使用從VM y導(dǎo)向VM x的三條路徑所構(gòu)成集合中的任一路徑與VM x通信。假設(shè)利用函數(shù)想要清點從^^至VM y的物理鏈路上的帶寬需求。它首先將從VM ,至VM y的帶寬需求除以3 (提供從覽至VM y的流的鏈路的總數(shù)量)。然后它將此結(jié)果指派給引導(dǎo)從VM x至流的全部三條鏈路。利用函數(shù)可在相反方向上(從執(zhí)行相同操作。
[0107]d)以虛擬星形拓?fù)鋵M指派至服務(wù)器。接著考慮其中數(shù)據(jù)中心以虛擬星形抽象組織VM的情形。此抽象提供連接所有VM的單個虛擬交換機(jī)。但是,底層物理網(wǎng)絡(luò)可具有任何拓?fù)?,諸如圖11所示的樹狀拓?fù)?。虛擬網(wǎng)絡(luò)中的每個虛擬鏈路具有帶寬需求B。物理網(wǎng)絡(luò)中特定物理鏈路上的所需容量進(jìn)而由min(m, N - m) *B給出。N指虛擬網(wǎng)絡(luò)中VM的數(shù)量,其中m指處于連接至所考慮鏈路的子樹中VM的數(shù)量。例如,在圖10中,假設(shè)所考慮物理鏈路為鏈路1102。該鏈路連接至主存兩個VM (關(guān)聯(lián)于節(jié)點4和5)的子樹,并且因此在此情形中m為2。“min”運(yùn)算符涉及選擇最小的無論哪一值,即m或N - m。
[0108]此情形的規(guī)范提供具有與物理網(wǎng)絡(luò)中的每一鏈路相關(guān)聯(lián)的維度以及非共享維度的資源向量。該規(guī)范還標(biāo)識數(shù)據(jù)中心中的N個VM以及所需帶寬值B。該規(guī)范還表達(dá)每一對服務(wù)器之間的路徑。
[0109]假設(shè),在特定時間,k個VM已被置于特定服務(wù)器之上。當(dāng)特定新VM(比方說VMz)要被置于此服務(wù)器之上時,此服務(wù)器之外可能放置的VM的數(shù)量為N - k -1。通過使用以上所指定的帶寬計算公式,規(guī)范可如下計算與此服務(wù)器相關(guān)聯(lián)的鏈路上的帶寬使用。如果(k+l)〈(N-k-l),則該鏈路上的帶寬使用為(k+l)*B。否則,該鏈路上的帶寬使用為N- (k+l)*B0
[0110]e)在考慮時變資源利用的情況下將VM指派至服務(wù)器。迄今所考慮的示例涉及VM至服務(wù)器的靜態(tài)放置。許多真實場景還考慮VM在數(shù)據(jù)中心中運(yùn)行其應(yīng)用的時間。例如,面向用戶的VM(其處置用戶的請求)相較于夜晚可在白天執(zhí)行更多的工作,且因此在白天消費(fèi)更多的資源。相反,批處理VM(其執(zhí)行后臺計算)在夜晚可執(zhí)行更多工作,并且因此在夜晚消費(fèi)更多資源。備用資源在任何服務(wù)器上的可用性因此因變于時間而變化。
[0111]為解決此類分配問題,RAF規(guī)范可擴(kuò)展以上定義的資源維度類型,以考慮按時隙的利用??紤]具有CPU容量服務(wù)器S0。資源向量可包括針對每一時隙的SO ePU的資源維度,例如SOmi, SOcpoi, SOmi T2等等。每一此類維度的容量與SO _的原始容量相同,假設(shè)CPU容量隨時間的流逝保持恒定。
[0112]此外,利用函數(shù)用資源需求的時變清單替代資源需要的靜態(tài)清單。例如,對于VM0,CPU需求可指定需求集合。此集合中的每一元素指定特定時隙的VMO的CPU需求。
[0113]為了計算當(dāng)特定VM被指派給特定服務(wù)器時所消費(fèi)的資源的量,利用函數(shù)將在逐個時隙的基礎(chǔ)上累加消費(fèi)。即,例如,特定VM在白天期間大量使用服務(wù)器,而另一 VM則在夜晚大量使用服務(wù)器。如果置于同一服務(wù)器之上,則對這兩個服務(wù)器的消費(fèi)將被累加至消費(fèi)*Λ*的不同維度。因此,RAF 102可確定此聯(lián)合放置是可允許的,因為它不超過任一維度的容量,而如果兩個VM同時運(yùn)行則聯(lián)合放置將不被允許。
[0114]在一些情形中,RAF規(guī)范還可指定一個或多個軟約束??紤]其中服務(wù)器被臨時允許使其容量在時隙的5% (最多10%)期間超過的說明性規(guī)則。規(guī)范可使用以下陳述來表達(dá)此軟約束:溢出:[{s0CPUTQ,S0CPU_T1,...}p = 0.95,b = 10%;...]0 RAF 102 將按以下方式來解讀此約束。假設(shè)RAF 102嘗試將球添加至服務(wù)器S0,但是發(fā)現(xiàn)這樣做將超出資源向量的一個或多個維度的容量。RAF 102然后將檢查以確定此偏離是否被規(guī)范中的溢出信息所允許。例如,假設(shè)該球放置在至少一個時隙內(nèi)違背了服務(wù)器SO的CPU容量。RAF 102將確定:(a)容量是否超過不大于b%;以及(b)群組(SOotux^SOotlti,...}中至少1)%的維度不超過其容量。如果此測試符合要求,則RAF 102將允許該指派。
[0115]f)關(guān)于特定作業(yè)將VM指派給服務(wù)器。在下一示例中,請求者因變于時間作出對服務(wù)器資源的請求。這些請求構(gòu)成具有相應(yīng)持續(xù)時間的作業(yè)。RAF 102通過關(guān)于特定時隙將作業(yè)指派至特定服務(wù)器來處置這些請求。為了執(zhí)行一作業(yè),數(shù)據(jù)中心等待直至作業(yè)開始,然后在該作業(yè)的持續(xù)時間內(nèi)在指定服務(wù)器之上運(yùn)行該作業(yè)。因此,在此情形中,RAF 102執(zhí)行調(diào)度工作和將VM指派至服務(wù)器的雙重任務(wù);這些任務(wù)是互連的。
[0116]在一辦法中,用戶能使用定義兩種類型的球和兩種類型的倉的規(guī)范來捕捉上述分配問題。更具體地,如圖12所示,代表性RAF規(guī)范定義用于接收作業(yè)球的作業(yè)倉,以及用于接收服務(wù)器球的服務(wù)器倉。每個作業(yè)倉關(guān)聯(lián)于起始時間。一旦RAF 102將作業(yè)指派至作業(yè)倉,該作業(yè)就運(yùn)行作業(yè)請求中所指定數(shù)量的連續(xù)時隙,從關(guān)聯(lián)于作業(yè)倉的時隙起算。進(jìn)一步地,每個作業(yè)關(guān)聯(lián)于為該作業(yè)進(jìn)行工作的一個或多個VM0
[0117]此外,RAF規(guī)范定義每個時隙針對每個非共享服務(wù)器資源((CPU、存儲器等)的資源維度。相似地,RAF規(guī)范可定義每個時隙針對每個共享資源(諸如用于每條網(wǎng)絡(luò)鏈路的帶寬)的資源維度。此外,RAF規(guī)范定義針對全部資源容量、每一時隙和每一資源的資源維度,其容量設(shè)置成跨所有服務(wù)器的集聚資源容量。例如,每一時隙的針對總CPU容量的資源維度對應(yīng)于該時隙中所有服務(wù)器上的總可用CPU容量。
[0118]在操作中,RAF 102將作業(yè)球置入僅作業(yè)倉中,并且將服務(wù)器球置入僅服務(wù)器倉中。然而,RAF規(guī)范是區(qū)分不同類型的球和倉的僅有知識;S卩,RAF 102所提供的核心抽象不參照規(guī)范中所提供的其定義來挑選球和倉。因此,為了實施上述放置約束,規(guī)范將沖突維度C添加至資源向量。該維度具有任意選擇的容量(比方說I)。如果作業(yè)球被指派至服務(wù)器倉、或者服務(wù)器球被指派至作業(yè)球,則利用函數(shù)將值2指派給消費(fèi)的容量維度。RAF 102將根據(jù)消費(fèi)的沖突維度超過資源向量的沖突維度的容量(其被設(shè)為I)的事實而拒絕該指派。每個處理元件嘗試將每一球指派至每一倉。這將確保處理元件將嘗試將每一未曾分配的作業(yè)球裝入每一作業(yè)倉中,并且將每一未曾分配的服務(wù)器球裝入每一服務(wù)器倉中。
[0119]更具體地,假設(shè)利用函數(shù)被請求考慮將作業(yè)球裝入作業(yè)倉的適當(dāng)性,其中該作業(yè)倉與起始時間1;相關(guān)聯(lián)。(進(jìn)一步假設(shè)其中帶寬需求在此分配問題中不起作用的簡化情形。)利用函數(shù)計算該作業(yè)的集聚CPU和存儲器需求,然后將那些值添加至與時隙TJPk個后續(xù)時隙的總CPU消費(fèi)和總存儲器消費(fèi)相對應(yīng)的維度,其中k是作業(yè)的持續(xù)時間。由此,如果作業(yè)Ji持續(xù)2個時隙,則利用函數(shù)使消費(fèi)向量的資源維度總_CPU_TX、總_CPU_TX+1、總_存儲器_τχ和總_存儲器_T X+1遞增。RAF 102然后將這些值與資源向量的關(guān)聯(lián)維度作比較以標(biāo)識不可能滿足的作業(yè)向時隙的指派。如果未違背約束,則RAF 102將該作業(yè)指派至指定作業(yè)倉。
[0120]現(xiàn)在假設(shè)利用函數(shù)被請求考慮將特定服務(wù)器球添加至特定服務(wù)器倉的適當(dāng)性。利用函數(shù)首先檢查以確定此服務(wù)器球相關(guān)聯(lián)的作業(yè)是否已被指派至作業(yè)倉。如果為否,則利用函數(shù)通過將消費(fèi)的沖突維度設(shè)置為2來中止該指派。替代地,假設(shè)與服務(wù)器球相關(guān)聯(lián)的作業(yè)已獲指派,并且該作業(yè)在時間Tx開始。利用函數(shù)然后針對與作業(yè)持續(xù)時間相關(guān)聯(lián)的每個時隙,使與關(guān)聯(lián)于服務(wù)器倉的服務(wù)器(比方說Sm)相對應(yīng)的消費(fèi)的資源維度遞增。例如,利用函數(shù)將使得SmCPU_Tx、SmCPU_Tx+1、Sm存儲器_T , S m存儲器_T Χ+1維度遞增。
[0121]在已經(jīng)將一個或多個先前作業(yè)指派至?xí)r隙和服務(wù)器之后,RAF 102還可處理隨時間流逝以交錯方式抵達(dá)的請求。RAF 102通過將在新請求時間當(dāng)前執(zhí)行的所有作業(yè)球釘扎至其對應(yīng)作業(yè)倉(即,其對應(yīng)的起始時間)來執(zhí)行此任務(wù)。相似地,RAF 102將與執(zhí)行作業(yè)相關(guān)聯(lián)的服務(wù)器球釘扎至其相應(yīng)的服務(wù)器倉。RAF 102可通過應(yīng)用規(guī)范中所提供的適當(dāng)釘扎指令來執(zhí)行該任務(wù)。那些指令指定要尊重在新請求時間執(zhí)行的作業(yè),而不破壞這些作業(yè)。在一替代實現(xiàn)中,RAF102還釘扎已被分配至相應(yīng)倉、但其中作業(yè)尚未開始(意味著作業(yè)已被成功調(diào)度以在未來的指定時間運(yùn)行、但在當(dāng)前不執(zhí)行)的至少一些作業(yè)球和服務(wù)器球。
[0122]實際上,當(dāng)處理新請求時,RAF 102首先通過針對每個被釘扎球調(diào)用利用函數(shù)來處理所有的被釘扎球。通過這樣做,RAF 102相對于當(dāng)前執(zhí)行的和/或調(diào)度的未來作業(yè)來重構(gòu)消費(fèi)向量。在完成之后,RAF 102繼續(xù)基于可用資源將新作業(yè)指派至適當(dāng)倉。
[0123]圖13示出歸納上述操作的過程1300。在框1302,RAF 102選取球。在框1304,如果所選球是作業(yè)球且所選倉是作業(yè)倉,則RAF 102嘗試將該作業(yè)球裝入所選作業(yè)倉。在框1306,如果所選球是服務(wù)器球而所選倉是服務(wù)器倉,則RAF 102嘗試將該服務(wù)器球裝入服務(wù)器倉,只要該服務(wù)器球的相關(guān)聯(lián)作業(yè)球已經(jīng)被指派至作業(yè)倉即可。(注意,規(guī)范建立了對應(yīng)于VM的所選服務(wù)器球和特定作業(yè)之間的聯(lián)結(jié)。)RAF 102對于所有待決的作業(yè)請求重復(fù)此進(jìn)程。在框1308,在接收到新作業(yè)請求之際,RAF 102將當(dāng)前執(zhí)行作業(yè)和/或調(diào)度的未來作業(yè)釘扎至其相關(guān)聯(lián)的作業(yè)倉和服務(wù)器倉。RAF 102然后將嘗試使用其余的未曾分配作業(yè)球和未曾分配服務(wù)器球來滿足新作業(yè)請求。
[0124]g)針對機(jī)架知曉副本放置的情形來指派VM。在下一分配問題中,請求者可能想要放置三個數(shù)據(jù)副本:兩個在同一機(jī)架上的多分開服務(wù)器上,而一個在不同機(jī)架上的服務(wù)器上。RAF規(guī)范可通過定義兩種球類型(機(jī)架球和服務(wù)器球)和兩種倉類型(機(jī)架倉和服務(wù)器倉)來捕捉此問題。RAF規(guī)范用兩個球來表示每個副本:要置于機(jī)架倉上的機(jī)架球,以及要置于服務(wù)器倉上的服務(wù)器球。因此,規(guī)范對每個數(shù)據(jù)項關(guān)聯(lián)6個球。
[0125]RAF 102使用朋友和對手約束來增強(qiáng)以上所定義的放置約束。S卩,規(guī)范將機(jī)架球I和2描述為朋友,并且將機(jī)架球I和3描述為對手。這捕捉副本至機(jī)架約束。進(jìn)一步地,規(guī)范陳述服務(wù)器球I和2為對手。這具有將同機(jī)架副本置于不同服務(wù)器上的效果。
[0126]在操作中,RAF 102在指派與感興趣機(jī)架相關(guān)聯(lián)的任何服務(wù)器球之前指派機(jī)架球。這類似以上陳述的示例(f),其中RAF 102在指派與作業(yè)球相關(guān)聯(lián)的任何服務(wù)器球之前指派作業(yè)球。
[0127]h)將網(wǎng)絡(luò)路徑指派至VLAN IDo在下一示例中,分配問題涉及將網(wǎng)絡(luò)路徑映射至最小數(shù)目的VLAN ID,作為多路徑協(xié)議的一部分。此問題進(jìn)一步規(guī)定指派至VLAN ID的網(wǎng)絡(luò)路徑不能創(chuàng)建回路。RAF 102通過使用球表示路徑、并使用倉表示VLAN ID來對此問題建模。進(jìn)一步地,利用函數(shù)包括用于確定將路徑添加至VLAN ID是否創(chuàng)建與VLAN中現(xiàn)有路徑的回路的邏輯。
[0128]RAF 102不能夠直接最小化VLAN的數(shù)量。然而,RAF 102能通過以適當(dāng)下限數(shù)量的倉開始、然后迭代地增加倉的數(shù)量直至發(fā)現(xiàn)解(如果可能的話)來間接地逼近此結(jié)果。
[0129]i)將端口映射至交換機(jī)。在最后的示例中,分配問題涉及將流映射至交換機(jī)的不同端口。即,在此問題中,目標(biāo)是映射流以使最高負(fù)載端口與最低負(fù)載端口的流容量之間的差最小化。該規(guī)范通過將任兩個端口的負(fù)載之間的差約束至給定至來逼近該目標(biāo)。RAF 102在搜索解時迭代地收緊此約束,直至RAF 102無法產(chǎn)生解。
[0130]總之,此直接已陳述了若干示例,作為示例而非限制。RAF 102可應(yīng)用于許多其它問題環(huán)境,諸如:施加路徑長度約束的分配問題;多播無線網(wǎng)絡(luò)問題;廣域內(nèi)容分發(fā)網(wǎng)絡(luò)中的服務(wù)器選擇問題;企業(yè)網(wǎng)絡(luò)中的VLAN指派等等。
[0131]C.探索操作模式和開拓操作模式
[0132]圖14歸納了圖1的處理元件106能藉以求解分配問題的兩種模式:探索模式和開拓模式。一般而言,圖14示出兩個三角形包絡(luò)線;左側(cè)包絡(luò)線對應(yīng)于探索模式,而右側(cè)包絡(luò)線對應(yīng)于開拓模式。每個包絡(luò)線進(jìn)一步描繪多個指派階段。即,包絡(luò)線的頂部對應(yīng)于第一階段;中部對應(yīng)于第二階段;而底部對應(yīng)于第三階段。盡管僅示出了三個階段,但處理可涉及附加階段。
[0133]在每個階段中,波浪線表示特定處理元件(例如,特定GPU或多核CPU線程)執(zhí)行的處理。由此,每個階段涉及并行工作的4個處理元件。每條波浪線端部的圓圈表示相關(guān)聯(lián)處理元件產(chǎn)生的結(jié)果。該結(jié)果在不同的相應(yīng)上下文中可具有不同的含義。在第一上下文中,結(jié)果可表示將指定球排序中的所有球指派至特定倉的嘗試的結(jié)果。例如,在第一階段,處理元件嘗試將球指派至倉O。在第二階段,處理元件嘗試將球指派至倉I。在第三階段,處理元件嘗試將球指派至倉2。在第二上下文中,端部圓圈可表示將所有球指派至所有可能倉的嘗試的結(jié)果。換言之,在此上下文中,端部圓圈表示對分配問題的解,對應(yīng)于完全解(其中每一個球被指派至倉)或部分解(其中一個或多個球保持未分配)。在以下說明中,首先假設(shè)第一上下文應(yīng)用于圖14的說明。
[0134]首先考慮探索模式的情形,在該圖的左側(cè)示出。在第一頂部階段,每個處理元件獨(dú)立地嘗試將未分配球裝入倉0,以達(dá)成與其它處理元件不同的結(jié)果。(為了簡化說明,假設(shè)處理元件使用圖5-6的第一模式而非圖7-8的第二模式計算結(jié)果,盡管后者也是一可能的選擇。)然后,在第二階段,每個處理元件嘗試將未分配球裝入倉1,以達(dá)成與其它處理元件不同的結(jié)果。RAF 102不評估由處理元件在第一階段內(nèi)生成的結(jié)果,例如以在4個結(jié)果中選擇被認(rèn)為最合乎需要的一個結(jié)果。因此,第二階段的輸入條件不取決于任何這種評估。上述進(jìn)程繼續(xù),直至最后一個倉即倉bk被處理。在此處理結(jié)束時,每個處理元件會以與其它處理元件不同的方式將球指派至倉。即,解中將不存在共性,除非碰巧導(dǎo)致了該共性。
[0135]現(xiàn)在考慮圖14右側(cè)所描繪的開拓模式。第一頂部階段與探索模式相同地進(jìn)行;即,每個處理元件獨(dú)立地嘗試將未分配球裝入倉0,以達(dá)成與其它處理元件不同的結(jié)果。RAF102現(xiàn)在在第一階段所提供的4個結(jié)果中挑選被認(rèn)為最為合乎需要的一結(jié)果。最為合乎需要的解可用不同方式來定義。例如,在一情形中,最為合乎需要的結(jié)果可對應(yīng)于放置最大數(shù)量球的結(jié)果,和/或滿足了被認(rèn)為難以滿足的一個或多個約束的結(jié)果。在第二階段,每個處理元件采用已被判定為最合乎需要的球向倉O的指派。在所有階段結(jié)束時,最終的解將針對倉O至k-ι具有相同的球至倉的指派,而對倉k則具有不同的指派。
[0136]現(xiàn)在考慮其中圖14的每個端部圓圈表示一完全解的上下文,即其表示處理元件的將所有球指派至所有倉的嘗試的結(jié)果。因而,在此上下文中,三個階段表示每個處理元件對分配問題求解的三個嘗試。
[0137]在探索模式中,每個處理元件能在每個階段開始時重新開始,而不考慮前一階段所提供的解。另一方面,在開拓模式中,每個處理元件的確考慮前一階段所提供的解(如果前一階段存在)。RAF 102可用不同方式執(zhí)行開拓模式。在一辦法中,在階段結(jié)束時,RAF102能基于任何一個或多個準(zhǔn)則選擇被認(rèn)為最為合乎需要的解。RAF 102然后能以任何方式擾亂該解,諸如通過從至少一個倉移除至少一個球。作為附加或替代,RAF 102能將一個或多個約束指定為相較于其它約束在后續(xù)階段中滿足是更為重要的。RAF 102然后能將此輸入條件饋送至所有處理元件,從而請求處理元件再次嘗試將未分配球裝入倉。每個處理元件可嘗試通過按照不同相應(yīng)次序?qū)⑽捶峙淝蜓b入倉來求解,由此可能產(chǎn)生相較于其它處理元件不同的解。作為替代或附加,RAF 102可以不同方式擾亂來自前一階段的“最佳”解,諸如通過從倉移除不同集合的球和/或?qū)嵤┎煌系募s束。RAF 102然后可將不同的經(jīng)擾亂的輸入條件饋送至下一階段中的不同相應(yīng)處理元件。
[0138]作為替代或附加,RAF 102能逐步地增加其在遭遇不滿意的解之際擾亂“最佳”解的程度。例如,RAF 102能在第二階段移走η個球。如果這無法得到令人滿意的解,則RAF102能在第三階段移走η+ρ個球,依此類推。此退火策略可幫助將現(xiàn)有的最佳解移離搜索空間內(nèi)的局部最小值。
[0139]探索模式和開拓模式具有不同的相應(yīng)優(yōu)點和潛在缺點。探索模式是有用的,因為它相較于開拓模式提供解的更大多樣性。此外,探索模式不需要RAF102在每一階段之后關(guān)于哪一結(jié)果最為合乎需要作出選擇(這在不利用因域而異的試探法考慮的情況下可能是挑戰(zhàn)性的判斷)。另一方面,開拓模式在對解下鉆時會是有用的,尤其當(dāng)解空間僅提供若干解時。實際上,RAF 102可采用根據(jù)探索模式和開拓模式執(zhí)行的處理的任何組合,包括其中不執(zhí)行開拓模式處理或不執(zhí)行探索模式處理的情形。
[0140]圖15示出歸納探索模式的操作的過程1500。在單一框1502,RAF 102產(chǎn)生線程I至η(或線程群組)的結(jié)果集。如標(biāo)記1504所示,框1502中的處理不考慮對前一階段所產(chǎn)生的在先指派結(jié)果(如果前一階段存在的話)的評估。
[0141]圖16示出歸納開拓模式的操作的過程1600。在單一框1602,RAF 102再次產(chǎn)生線程I至η(或線程群組)的結(jié)果集。如標(biāo)記1604所示,框1602中的處理現(xiàn)在的確考慮對前一階段所產(chǎn)生的指派結(jié)果(如果前一階段存在的話)的評估。
[0142]圖17示出提供對線程集合或進(jìn)程群組(例如,GPU線程、多核CPU線程、或某其它處理框架的處理元件)所執(zhí)行的處理的一般縱覽的過程1700。在一情形中,RAF 102可執(zhí)行求解分配問題的過程1700。但過程1700不限于此。更一般地,任何問題求解框架可使用過程1700來執(zhí)行對解空間的并行探索,包括與任何問題域中的任何非確定性多項式時間難題(NP難題)相關(guān)聯(lián)的解空間。
[0143]框1702和1704指由第一線程或線程群組執(zhí)行的處理。在框1702,線程(或線程群組)生成輸入數(shù)據(jù)以供處理。在以上上述的示例中,此處理需要生成球和/或倉的經(jīng)排序列表。在框1704,線程(或線程群組)嘗試基于框1702中提供的輸入數(shù)據(jù)計算解。在上述示例中,此處理需要將從球排序中選出的球置入從倉排序中選出的倉內(nèi)???706和1708對應(yīng)于由第二線程或線程群組執(zhí)行的相同操作。框1710和1712對應(yīng)于由第η線程或線程群組執(zhí)行的相同操作。
[0144]在框1714,在每一迭代之后,求解問題框架輸出一解。該解可對應(yīng)于完全解(如果找到一個的話);否則,該框架輸出部分解。過程1700重復(fù)直至求得完全解或達(dá)到其它終止條件。該處理可進(jìn)一步利用探索模式和開拓模式的任何組合,如上所述。
[0145]D.代表性計算功能
[0146]圖18闡述了可以被用來實現(xiàn)上文所描述的功能的任何方面的說明性計算功能1800。例如,圖18所示的計算功能1800的類型可被用來實現(xiàn)圖1的RAF102的任何方面,或者與RAF 102交互的計算機(jī)設(shè)備的任何方面。在一情形中,計算功能1800對應(yīng)于主存某類型的并行處理框架(諸如一個或多個GPU模塊(例如GPU芯片)、多芯CPU等等)的計算設(shè)備。在所有情形中,計算功能1800表示一個或多個物理且有形的處理結(jié)構(gòu)。
[0147]計算功能1800可以包括諸如RAM 1802和ROM 1804等易失性和非易失性存儲器以及一個或多個處理設(shè)備1806。例如,處理設(shè)備1806可包括一個或多個CPU (單核或多核)和至少一個GPU模塊1808。計算功能1800還可任選地包括諸如硬盤模塊、光盤模塊等等之類的各種介質(zhì)設(shè)備1810。當(dāng)處理設(shè)備1806執(zhí)行由存儲器(例如,RAM 1802,ROM 1804或在別處維護(hù)的指令時,計算功能1800可以執(zhí)行上文所標(biāo)識的各種操作。
[0148]更一般地,指令和其它信息可以被存儲在任何計算機(jī)可讀介質(zhì)1812上,計算機(jī)可讀介質(zhì)包括但不限于靜態(tài)存儲器存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備等。術(shù)語計算機(jī)可讀介質(zhì)還涵蓋多個存儲設(shè)備。在任何情況下,計算機(jī)可讀介質(zhì)1812都表示某種形式的物理和有形的實體。
[0149]計算功能1800還包括用于接收各種輸入(通過輸入模塊1816),以及用于提供各種輸出(通過輸出模塊)的輸入/輸出模塊1814。一種特定輸出機(jī)制可包括呈現(xiàn)模塊1818及相關(guān)聯(lián)的圖形用戶界面(⑶I) 1820。計算功能1800還可以包括用于通過一個或多個通信管道1824與其他設(shè)備交換數(shù)據(jù)的一個或多個網(wǎng)絡(luò)接口 1822。一條或多條通信總線1826將上述組件通信地耦合在一起。
[0150]通信管道1824可以以任何方式來實現(xiàn),例如,通過局域網(wǎng)、廣域網(wǎng)(例如,因特網(wǎng))等等,或其任何組合。通信管道1824可包括可由任何協(xié)議或協(xié)議的組合管理的硬連線的鏈路、無線鏈路、路由器、網(wǎng)關(guān)功能、名稱服務(wù)器等等的任何組合。
[0151]圖19示出GPU模塊1900的細(xì)節(jié)。在一非限制實現(xiàn)中,GPU模塊1900實現(xiàn)由RAF102執(zhí)行的成批處理。GPU模塊1900可由圖18的計算功能1800 (例如對應(yīng)于該附圖所示的GPU模塊1808)或某其它主機(jī)系統(tǒng)主存。
[0152]GPU模塊1900包括多個線程(出于簡化的目的僅其兩個被示出)。例如,GPU模塊1900可包括64個線程、128個線程等等。線程I可包括處理組件1902連同存儲器組件1904。例如,存儲器組件1904可對應(yīng)于寄存器等等。相似地,線程2可包括處理組件1906連同存儲器組件1908。在一實現(xiàn)中,每一線程群組具有單個指令指針。GPU模塊1900以群組中的線程都在相同時間但對于不同的輸入數(shù)據(jù)執(zhí)行同一指令的方式來驅(qū)動這些線程。任何單個線程可扔掉特定指令的結(jié)果(如果不需要的話)。在一實現(xiàn)中,線程群組中的線程可在某些情形下彼此通信(如雙箭頭1910指示地)。
[0153]作為替代或除此之外,前述各節(jié)中所述的任何功能可至少部分地由一個或多個硬件邏輯組件來執(zhí)行。作為示例而非限制,計算功能可使用以下的一個或多個來實現(xiàn):現(xiàn)場可編程門陣列(FPGA);專用集成電路(ASIC);專用標(biāo)準(zhǔn)產(chǎn)品(ASSP);片上系統(tǒng)(SOC);復(fù)雜可編程邏輯器件(CPLD)等等。
[0154]最后,說明書在說明性挑戰(zhàn)或問題的上下文中描述了各種概念。這種說明方式不構(gòu)成其他人以此處所指定的方式理解和/或明確表達(dá)挑戰(zhàn)或問題的許可。
[0155]盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特定特征或動作。相反,上述具體特征和動作是作為實現(xiàn)權(quán)利要求的示例形式公開的。
【權(quán)利要求】
1.一種用于將一集合的項分配至一集合的倉的方法,包括: 接收規(guī)范,所述規(guī)范以聲明性方式描述特定分配問題的各種特性;以及使用所述規(guī)范連同域不可知的資源分配框架來確定將所述集合的項分配至所述集合的倉的解, 所述規(guī)范與至少一個利用函數(shù)相關(guān)聯(lián),所述利用函數(shù)針對所提議的特定項向特定倉的指派描述與所提議的指派相關(guān)聯(lián)的資源的消費(fèi), 所述資源分配框架由計算功能實現(xiàn)。
2.如權(quán)利要求1所述的方法,其特征在于,所述規(guī)范還闡述: 與所述分配問題相關(guān)聯(lián)的真實實體向所述集合的項的映射; 與所述分配問題相關(guān)聯(lián)的真實實體向所述集合的倉的映射;以及 資源向量,其標(biāo)識與所述分配問題相關(guān)聯(lián)的資源、連同相應(yīng)資源的容量。
3.如權(quán)利要求2所述的方法,其特征在于,所述資源向量包括以下至少之一: 與非共享資源相關(guān)聯(lián)的一個或多個維度; 與共享資源相關(guān)聯(lián)的一個或多個維度;以及 具有向其指派的沖突檢查容量值的至少一個沖突維度。
4.如權(quán)利要求2所述的方法,其特征在于,所述規(guī)范附加地闡述以下至少之一: 至少第一項和第二項之間的朋友關(guān)系,所述朋友關(guān)系提示如果可能的話,所述資源分配框架將所述第一項和所述第二項指派至同一倉; 至少第一項和第二項之間的對手關(guān)系,所述對手關(guān)系提示如果可能的話所述資源分配框架將所述第一項和所述第二項指派至不同的各個倉; 釘扎約束,其定義其中在所述資源分配框架所執(zhí)行的求解操作開始時至少一項被釘扎至至少一個倉的情形;以及 至少一個軟約束,所述至少一個軟約束描述其中準(zhǔn)許至少一個其它約束被違背的條件。
5.如權(quán)利要求1所述的方法,其特征在于,所述計算功能由并行操作以求所述解的多個處理元件來實現(xiàn)。
6.如權(quán)利要求5所述的方法,其特征在于, 每個處理元件或每一群組的處理元件通過對每次迭代嘗試將項裝入倉來迭代地嘗試求解, 在探索模式中,每次迭代的輸入條件不取決于對前一迭代中所提供結(jié)果的評估。
7.如權(quán)利要求5所述的方法,其特征在于, 每個處理元件或每一群組的處理元件通過對每次迭代嘗試將項裝入倉來迭代地嘗試求解, 在開拓模式中,除第一次迭代外,每次迭代的輸入條件取決于對前一迭代中所提供結(jié)果的評估。
8.一種用于求解約束問題的問題求解框架,包括: 多個處理元件, 每個處理元件被配置成重復(fù)地: 生成與所述約束問題相關(guān)聯(lián)的輸入數(shù)據(jù);以及 嘗試基于所述輸入數(shù)據(jù)計算所述約束問題的解。
9.如權(quán)利要求8所述的問題求解框架,其特征在于,所述問題求解框架被配置成使用探索模式和開拓模式的任何組合來操作: 在探索模式中,與特定處理元件的特定迭代相關(guān)聯(lián)的所述輸入數(shù)據(jù)不取決于對前一迭代中所提供結(jié)果的評估;以及 在開拓模式中,除第一次迭代外,與特定處理元件的特定迭代相關(guān)聯(lián)的所述輸入數(shù)據(jù)取決于對前一迭代中所提供結(jié)果的評估。
10.—種用于存儲計算機(jī)可讀指令的計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀指令在由一個或多個處理設(shè)備執(zhí)行時提供一種資源分配框架,所述計算機(jī)可讀指令包括: 配置成提供一項排序的第一邏輯組件; 配置成在一倉排序中選擇下一倉倉的第二邏輯組件; 配置成從所述項排序中選擇下一項球的第三邏輯組件; 配置成針對項至倉的當(dāng)前分配(分配3|?)連同倉和球來調(diào)用利用模塊的第四邏輯組件; 配置成從所述利用模塊接收消費(fèi)向量消費(fèi)的第五邏輯組件,所述消費(fèi)向量消費(fèi)描述與所提議的球向倉的指派相關(guān)聯(lián)的資源的消費(fèi); 配置成將與消費(fèi)相關(guān)聯(lián)的資源添加至當(dāng)前利用向量利用的第六邏輯組件,所述當(dāng)前利用向量利用描述對用于項至倉的當(dāng)前部分指派的資源的當(dāng)前利用;以及 配置成確定利用是否滿足指定約束,并且如果滿足則存留所述第六邏輯組件的結(jié)果,如果不滿足則取消所述第六邏輯組件的結(jié)果的第七邏輯組件, 由所述第一邏輯組件至所述第七邏輯組件執(zhí)行的操作對不同相應(yīng)項重復(fù),直至求得解,所述解對應(yīng)于項至倉的最終指派。
【文檔編號】G06F9/50GK104487947SQ201380038734
【公開日】2015年4月1日 申請日期:2013年7月19日 優(yōu)先權(quán)日:2012年7月20日
【發(fā)明者】S·古哈, R·巴格萬, A·萊 申請人:微軟公司