欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

通信量和負(fù)載感知動態(tài)隊列管理的制作方法

文檔序號:7803191閱讀:323來源:國知局
通信量和負(fù)載感知動態(tài)隊列管理的制作方法
【專利摘要】本發(fā)明涉及通信量和負(fù)載感知動態(tài)隊列管理。一些實施例提供了有效且動態(tài)地管理多個隊列的隊列管理系統(tǒng),多個隊列處理進(jìn)出在主機上執(zhí)行的多個虛擬機(VM)的通信量。這個系統(tǒng)通過以下步驟管理隊列:(1)將隊列分成不同優(yōu)先級池,其中為特定類型的通信量或VM(例如,用于需要低延遲的VM的通信量)保留較高優(yōu)先級池,(2)動態(tài)地調(diào)節(jié)每個池中的隊列數(shù)量(即,動態(tài)地調(diào)節(jié)池的大小),(3)基于一個或多個優(yōu)化標(biāo)準(zhǔn)(例如,與隊列的未充分使用或過度使用有關(guān)的標(biāo)準(zhǔn)),將VM動態(tài)地分派給新隊列。
【專利說明】通信量和負(fù)載感知動態(tài)隊列管理

【技術(shù)領(lǐng)域】
[0001] 在過去的幾年中,已經(jīng)針對用多個隊列通過網(wǎng)絡(luò)接口卡(NIC)分配進(jìn)出主機的傳 入和傳出通信量,提出了隊列管理系統(tǒng)。圖1示出一個這樣的系統(tǒng)。具體地講,圖1示出(1) 在主機計算機(未示出)上執(zhí)行的多個虛擬機(VM) 102和(2)具有多個隊列的NIC100。如 在此圖中示出的,每個隊列具有接收側(cè)的緩沖器集合104和發(fā)送側(cè)的緩沖器集合106,以分 別處理傳入和傳出通信量。該系統(tǒng)具有四種類型的隊列,它們是:默認(rèn)隊列105、一些非默 認(rèn)隊列115、LRO(大型接收卸載,largereceiveoffload)隊列120和RSS(接收側(cè)調(diào)整, receivesidescaling)隊列125。后兩種類型的隊列是與NIC支持的專用硬件LRO和RSS 功能關(guān)聯(lián)的專業(yè)隊列。

【背景技術(shù)】
[0002] 圖1的隊列管理系統(tǒng)跨多個隊列分配進(jìn)出虛擬機(VM)的通信量。在這個系統(tǒng)中, 所有VM在默認(rèn)隊列105中開始。每當(dāng)VM的通信量超過給定閾值時,把VM從默認(rèn)隊列移出 到非默認(rèn)隊列115。當(dāng)把VM從默認(rèn)隊列移出時,這種實現(xiàn)方式總是將VM移向負(fù)載最小的非 默認(rèn)隊列而不管VM的要求。這造成三個主要問題。
[0003] 第一,由于目前的實現(xiàn)方式是在沒有考慮VM的通信量類型的情況下選擇非默認(rèn) 隊列,因此具有特別要求的VM可能受到其它VM干擾。例如,如果發(fā)送和接收對延遲敏感的 通信量的特定VM與運行對延遲不太敏感、對吞吐量敏感的工作負(fù)荷的一些其它VM共用同 一隊列,則該特定VM的延遲和抖動一定會受影響。圖1中的隊列150是具有用于低延遲要 求(LLR)VM152和一些高延遲容忍(HLT)VM二者的通信量的超負(fù)荷隊列的示例。在這種情 形下,LLRVM152可能因為各種HLTVM的通信量而在它可容忍的最大延遲內(nèi)無法發(fā)送和接 收通信量。
[0004] 這個實現(xiàn)方式的第二個問題在于,它將固定數(shù)量的隊列靜態(tài)地分派給三個不同非 默認(rèn)隊列池中的一個,這三個不同非默認(rèn)隊列池是非默認(rèn)隊列115、LR0(大型接收卸載)隊 列120和RSS(接收側(cè)調(diào)整)隊列125。在這種方法中,各個池在驅(qū)動器初始化期間分派和 分配其所有的隊列。默認(rèn)地,各個池將得到相同數(shù)量的隊列,即使該池實際上并不使用。這 導(dǎo)致當(dāng)池需要更多的隊列來維持通信量時出現(xiàn)性能問題,因為超負(fù)荷的池將無法接管其它 池中的空閑隊列,因此無法進(jìn)一步增長,即使該系統(tǒng)具有容量。
[0005] 第三個問題在于,VM的隊列分派是一次性的,S卩,一旦VM移到隊列,它將再也不移 動到其它非默認(rèn)隊列。這造成兩個問題。第一,因為分派是一次性的,所以如果VM隨后需 要更多資源來增長通信量,則它會最終變得受限于對其目前隊列的利用。即使存在具有更 多增長空間的不太忙的隊列,這種現(xiàn)有方法不允許VM有這個機會。另外,這種方法嘗試靜 態(tài)地使所有隊列忙,即使并不需要那么多隊列來服務(wù)于通信量。由于這種方法具有用于每 個隊列的專用內(nèi)核上下文,因此具有不必要數(shù)量的活動隊列導(dǎo)致更多活動的上下文。這些 活動的上下文將不可避免地在中斷到達(dá)時停止其它上下文(例如,vCPU)。因此,主機最終 變得花費更多周期進(jìn)行上下文切換,這損害了VM整合率。


【發(fā)明內(nèi)容】

[0006] -些實施例提供了有效且動態(tài)地管理多個隊列的隊列管理系統(tǒng),這多個隊列處理 進(jìn)出在主機上執(zhí)行的多個虛擬機(VM)的通信量。這個系統(tǒng)通過以下步驟管理隊列:(1)將 隊列分成不同優(yōu)先級池,其中為特定類型的通信量或VM(例如,用于需要低延遲的VM的通 信量)保留較高優(yōu)先級池,(2)動態(tài)地調(diào)節(jié)每個池中的隊列的數(shù)量(即,動態(tài)地調(diào)節(jié)池的大 ?。?,(3)基于一個或多個優(yōu)化標(biāo)準(zhǔn)(例如,與隊列的未充分使用或過度使用有關(guān)的標(biāo)準(zhǔn)), 將VM動態(tài)地重新分派給新隊列。
[0007] 在一些實施例中,隊列管理系統(tǒng)初始地在未分派的默認(rèn)池中具有新初始化的VM。 當(dāng)VM的通信量超過預(yù)設(shè)閾值時,該系統(tǒng)確定是否存在匹配VM通信量要求的池,并且,如果 有的話,則將VM分派給該池。如果沒有匹配的池,則該系統(tǒng)創(chuàng)建新的池并且將VM分派給該 池。在沒有用于創(chuàng)建新的池的空閑隊列的情形下,隊列管理系統(tǒng)先占取一個或多個分派的 隊列(即,分派給之前創(chuàng)建的池的隊列)并且將先占取的隊列分派給新創(chuàng)建的池。這個先 占取處理重新均衡了現(xiàn)有池之中的隊列,以空出一個或多個隊列用于新的池。在一些實施 例中,可通過資源分配標(biāo)準(zhǔn)(例如,池的最小和最大大小、池的相對優(yōu)先級等)控制跨池的 重新均衡處理。
[0008] 另外,隊列管理系統(tǒng)可基于一個或多個標(biāo)準(zhǔn)(例如,相關(guān)聯(lián)的管理線程(例如,內(nèi) 核上下文)的CPU負(fù)載、通信量類型、通信量負(fù)載、隊列的其它實時負(fù)載指標(biāo)等)來重新均 衡池內(nèi)的通信量。在一些實施例中,系統(tǒng)針對不同的池使用不同的重新均衡標(biāo)準(zhǔn)。例如,在 一些池中,系統(tǒng)可能想要將VM裝滿一些隊列,而對于其它池,系統(tǒng)可能想要跨盡可能多的 隊列分配VM。在一些實施例中,隊列管理系統(tǒng)具有負(fù)載均衡器,該負(fù)載均衡器周期性地和/ 或在特定事件時執(zhí)行重新均衡處理。
[0009] 當(dāng)VM的通信量降至閾值以下時,一些實施例的隊列管理系統(tǒng)將VM移回到默認(rèn)隊 列。當(dāng)VM是正使用非默認(rèn)隊列中的隊列的最后一個VM時,則系統(tǒng)將最后使用的隊列移到 空閑隊列的池,使得它隨后可被重新分配給任何池。
[0010] 作為VM數(shù)據(jù)通信量的附加或者替代VM數(shù)據(jù)通信量,一些實施例的隊列管理系統(tǒng) 動態(tài)地定義池,唯一地管理每個池,動態(tài)地改變池內(nèi)的隊列,并且動態(tài)地重新分派進(jìn)出在主 機上執(zhí)行的非VM可尋址節(jié)點(例如,源端節(jié)點或目的地端節(jié)點)的數(shù)據(jù)通信量。具體地講, 一些實施例的系統(tǒng)通過主機裝置的NIC監(jiān)控VM和/或非VM可尋址節(jié)點(例如,數(shù)據(jù)端節(jié) 點)集合的數(shù)據(jù)通信量?;谠摫O(jiān)控,該系統(tǒng)指定至少用于非VM可尋址節(jié)點集合的池,并 且將隊列集合分派給該池。該系統(tǒng)接著使用目的地或源媒體訪問控制(MC)過濾器或者五 元組過濾,引導(dǎo)用于非VM可尋址節(jié)點集合的由主機裝置接收或發(fā)送的數(shù)據(jù)通信量到分派 的隊列集合。
[0011] 替選地,或者結(jié)合地,基于該監(jiān)控,一些實施例的系統(tǒng)可改變分派給用于VM和非 VM可尋址節(jié)點集合的池的隊列集合。如以上提到的,這種改變的示例包括當(dāng)池的一個或多 個隊列被過度使用或未被充分使用時向池添加隊列或者從池中去除隊列。在一些實施例 中,該系統(tǒng)通過先占取另一個池中的隊列(例如,通過使用上述先占取方法之一)向該池添 加隊列。
[0012] 另外,替代上述操作或與上述操作結(jié)合,該系統(tǒng)可基于該監(jiān)控,將用于VM或非VM 可尋址節(jié)點(例如,數(shù)據(jù)端節(jié)點)的數(shù)據(jù)通信量從該池中的第一隊列重新分派給該池中的 第二隊列。例如,基于該監(jiān)控,一些實施例的系統(tǒng)檢測通過第一隊列的用于VM或非VM可尋 址節(jié)點的通信量降至通信量的最小閾值量以下(例如,持續(xù)一段時間)。因為這種未充分使 用,系統(tǒng)將該通信量切換至第二隊列。在進(jìn)行該切換之前,一些實施例的系統(tǒng)確定通過第二 隊列的通信量沒有超過通信量的最大閾值量。
[0013] 基于該監(jiān)控,一些實施例的系統(tǒng)檢測通過第一隊列的通信量超過通信量的最大閾 值量(例如,持續(xù)一段時間)。因為這種過度使用,系統(tǒng)將用于VM或非VM可尋址節(jié)點(例 如,數(shù)據(jù)端節(jié)點)的通信量從第一隊列切換至第二隊列。同樣,在進(jìn)行該切換之前,一些實 施例的系統(tǒng)確定通過第二隊列的通信量沒有超過通信量的最大閾值量。
[0014] 之前的"
【發(fā)明內(nèi)容】
"旨在用作對本發(fā)明的一些實施例的簡要介紹。它并不意味著 是本文獻(xiàn)中公開的所有獨創(chuàng)性主題的介紹或概要。后面的"【具體實施方式】"和在"具體實施 方式"中參照的附圖將進(jìn)一步描述"
【發(fā)明內(nèi)容】
"中描述的實施例以及其它實施例。因此,為 了理解本文獻(xiàn)描述的所有實施例,需要對"
【發(fā)明內(nèi)容】
"、"【具體實施方式】"和附圖的全面閱讀。 此外,要求保護(hù)的主題將不受"
【發(fā)明內(nèi)容】
"、"【具體實施方式】"和附圖中的示例細(xì)節(jié)限制。

【專利附圖】

【附圖說明】
[0015] 在所附的權(quán)利要求書中闡明了本發(fā)明的新穎特征。然而,出于說明的目的,在下面 的附圖中闡明了本發(fā)明的一些實施例。
[0016] 圖1是具有用于低延遲要求(LLR)VM和一些高延遲容忍(HLT)VM二者的通信量的 超負(fù)荷隊列的示例。
[0017] 圖2示出基于通信量的類型或VM要求將隊列概念性地分組成兩個優(yōu)先級池的示 例。
[0018] 圖3示出用于三種不同類型的VM的三個優(yōu)先級池的示例。
[0019] 圖4示出網(wǎng)絡(luò)虛擬化層(NVL)中的負(fù)責(zé)PNIC中的隊列的線程以及本發(fā)明的一些 實施例的中斷產(chǎn)生結(jié)構(gòu)。
[0020] 圖5示出一些實施例的隊列管理系統(tǒng)。
[0021] 圖6概念性示出在一些實施例中負(fù)載均衡器執(zhí)行的整體處理。
[0022] 圖7示出一些實施例的隊列分派處理。
[0023] 圖8概念性地示出在一些實施例中由負(fù)載均衡器周期性地(例如,每隔幾秒)調(diào) 用的池調(diào)節(jié)處理。
[0024] 圖9示出由一些實施例的負(fù)載均衡器執(zhí)行以評估VM對其隊列的使用度的處理。
[0025] 圖10示出因為對第一隊列的未充分使用或因為VM對其第一隊列的未充分使用而 將VM從第一隊列重新分派給第二隊列的示例。
[0026] 圖11示出因為對第一隊列的過度使用而將VM從第一隊列重新分派給第二隊列的 示例。
[0027] 圖12示出跨池的池均衡處理的示例。
[0028] 圖13示出一些實施例的隊列管理系統(tǒng),所述隊列管理系統(tǒng)使用MAC地址過濾把在 主機裝置上執(zhí)行的VM和非VM數(shù)據(jù)可尋址節(jié)點的數(shù)據(jù)通信量路由到隊列的不同池和池內(nèi)的 不同隊列。
[0029] 圖14和圖15圖示示出一些實施例使用五元組過濾器來區(qū)分在視頻呈現(xiàn)期間由虛 擬機發(fā)送或接收的VOIP和視頻包的示例。
[0030] 圖16概念性地示出用來實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)。

【具體實施方式】
[0031] 在下面對本發(fā)明的詳細(xì)描述中,闡明和描述了本發(fā)明的眾多細(xì)節(jié)、示例和實施例。 然而,本領(lǐng)域的技術(shù)人員將明白和清楚的是,本發(fā)明不限于所闡明的實施例,并且可在沒有 所討論的一些具體細(xì)節(jié)和示例的情況下實施本發(fā)明。
[0032] 一些實施例提供了一種有效且動態(tài)地管理多個隊列的隊列管理系統(tǒng),這多個隊列 處理進(jìn)出在主機上執(zhí)行的多個虛擬機(VM)的通信量。該系統(tǒng)通過以下步驟管理隊列:(1) 將隊列分成不同優(yōu)先級池,其中為特定類型的通信量或VM(例如,用于需要低延遲的VM的 通信量)保留較高優(yōu)先級池,(2)動態(tài)地調(diào)節(jié)每個池中的隊列數(shù)量(即,動態(tài)地調(diào)節(jié)池的大 ?。?,(3)基于一個或多個優(yōu)化標(biāo)準(zhǔn)(例如,與隊列的未充分使用或過度使用有關(guān)的標(biāo)準(zhǔn)), 將VM動態(tài)地重新分派給新隊列。
[0033] 在一些實施例中,隊列管理系統(tǒng)將隊列分組成四種類型的池。它們是:
[0034] (1)默認(rèn)池,該默認(rèn)池在一些實施例中包括一個默認(rèn)隊列,該默認(rèn)隊列是在一些或 全部VM初始化時用于一些或全部VM的初始隊列(在其它實施例中,默認(rèn)池包括一個以上 默認(rèn)隊列);
[0035] (2)空閑池,該空閑池包括所有未使用的隊列(S卩,沒有分派給進(jìn)出任何VM的通信 量的隊列);
[0036] (3)硬件特征池,該硬件特征池包括與特定硬件特征關(guān)聯(lián)的隊列,例如LRO和 RSS;
[0037] (4)VM要求池,該VM要求池包括服務(wù)于具有不同種類要求的VM(例如,低延遲要求 (LLR)VM和高延遲容忍(HLT)VM)的隊列。
[0038] 在這些實施例中的一些實施例中,除了默認(rèn)池中的一個默認(rèn)隊列之外,隊列管理 系統(tǒng)初始地具有未分派的空閑池中的所有隊列。一些實施例一直沒有分派默認(rèn)隊列,直到 第一VM被初始化,而其它實施例甚至在第一VM被初始化之前就指定默認(rèn)隊列。
[0039] 當(dāng)VM的通信量超過預(yù)設(shè)閾值時,系統(tǒng)確定是否存在匹配VM通信量要求的池(例 如,是否存在針對超過其閾值的LLRVM的LLR池),如果有的話,系統(tǒng)將VM分派給該池。如 果沒有匹配的池,則系統(tǒng)形成新的池并且將VM分派給該池。當(dāng)沒有用于創(chuàng)建新的池的空閑 隊列時,隊列管理系統(tǒng)先占取一個或多個分派的隊列(即,分派給之前指定的池的隊列)并 且將先占取的隊列分派給新創(chuàng)建的池。該先占取處理重新均衡了現(xiàn)有池之中的隊列,以空 出一個或多個隊列用于新的池。在一些實施例中,跨池的重新均衡處理是基于一個或多個 資源分配標(biāo)準(zhǔn),例如池的最小和最大大小、池的相對優(yōu)先級等。
[0040] 除了跨池均衡隊列之外,一些實施例的隊列管理系統(tǒng)還重新均衡池內(nèi)的通信量。 該系統(tǒng)在不同實施例中使用不同標(biāo)準(zhǔn)來重新均衡池內(nèi)的通信量。這種標(biāo)準(zhǔn)的示例包括相 關(guān)聯(lián)的管理線程的CUP負(fù)載、通信量類型、通信量負(fù)載、隊列的其它實時負(fù)載指標(biāo)等。在一 些實施例中,系統(tǒng)針對不同的池使用不同的重新均衡標(biāo)準(zhǔn)。例如,在一些池中,系統(tǒng)嘗試將 VM裝滿一些隊列,而對于其它池,系統(tǒng)嘗試跨盡可能多的隊列分配VM。在一些實施例中,隊 列管理系統(tǒng)具有負(fù)載均衡器,該負(fù)載均衡器周期性地和/或在特定事件時執(zhí)行重新均衡處 理。
[0041] 當(dāng)VM的通信量降至閾值以下時,一些實施例的隊列管理系統(tǒng)將VM移回到默認(rèn)隊 列。當(dāng)VM是正使用非默認(rèn)隊列中的隊列的最后一個VM時,則將最后使用的隊列移到未分派 隊列的空閑池,使得它隨后可被重新分配給任何池。因此,在這種方法下,隊列一被分派VM, 就將隊列分派給非默認(rèn)池之一,并且隊列的最后一個VM-被重新分派或被關(guān)斷,就將該隊 列分派回到空閑池。
[0042] 作為VM數(shù)據(jù)通信量的附加或者替代VM數(shù)據(jù)通信量,一些實施例的隊列管理系統(tǒng) 動態(tài)地定義池,唯一地管理每個池,動態(tài)地改變池內(nèi)的隊列,并且動態(tài)地重新分派進(jìn)出在主 機上執(zhí)行的非VM可尋址節(jié)點(例如,源端節(jié)點或目的地端節(jié)點)的數(shù)據(jù)通信量。以下,首 先描述針對VM執(zhí)行這些操作。然后,在此討論之后討論針對非VM可尋址節(jié)點執(zhí)行這些操 作。
[0043] I.用于具有不同要求的VM的不同池
[0044] 如以上提到的,一些實施例的隊列管理系統(tǒng)將隊列分成不同優(yōu)先級池,其中為特 定類型的通信量或VM(例如,用于需要低延遲的VM的通信量)保留較高優(yōu)先級池。圖2示出 基于通信量的類型或VM要求將隊列概念性地分組成兩個優(yōu)先級池210和215的示例。具體 地,圖2示出(1)具有多個隊列的物理NIC200,和(2)具有不同要求的多個虛擬機(VM) 202。 VM在主機計算機(未示出)上執(zhí)行??鏝IC的各種隊列分配進(jìn)出這些VM的通信量。如此 圖中示出的,每個隊列具有接收側(cè)的緩沖器集合204和發(fā)送側(cè)的緩沖器集合206,以分別處 理傳入和傳出通信量。在一些實施例中,多核處理器中的一個核管理每個隊列。因此,在圖 2中示出的示例中,八個核將管理NIC的八個隊列。
[0045] 在一些NIC中,每個接收側(cè)的緩沖器集合204是其自己在NIC中的獨立的隊列。 同樣地,在這些NIC中,每個發(fā)送側(cè)的緩沖器集合206是其自己在NIC中的獨立的隊列。然 而,即使在這些NIC中接收側(cè)隊列與發(fā)送側(cè)隊列分開并且獨立,一些實施例的隊列管理系 統(tǒng)也將一個接收側(cè)隊列與一個發(fā)送側(cè)隊列配對,使得隊列對可被用作VM的一個隊列構(gòu)造。 然而,其它實施例沒有將隊列"配對"。具體地,這些其它實施例不要求使用接收側(cè)隊列的VM 都使用相同的發(fā)送側(cè)隊列;兩個VM可使用相同的接收側(cè)隊列,但使用不同的發(fā)送側(cè)隊列。 然而,為了保持圖示簡單,圖3至圖6和圖10至圖15中示出的每個隊列是隊列對,該隊列 對包括與發(fā)送側(cè)隊列配對的接收側(cè)隊列。
[0046] 在圖2中,隊列管理系統(tǒng)將物理NIC200的隊列分組成三種不同類型的池。它們是: ⑴默認(rèn)池205,(2)LLR池210,(3)HLT池215。如圖2中所示,一些實施例中的默認(rèn)池205 只包括一個默認(rèn)隊列。在其它實施例中,它包括一個以上默認(rèn)隊列。默認(rèn)隊列服務(wù)于沒有 被分派給非默認(rèn)池的隊列的VM的通信量。當(dāng)只有一個默認(rèn)隊列(例如,默認(rèn)隊列207)時, "默認(rèn)"隊列服務(wù)于沒有被分派給非默認(rèn)池的所有VM。在一些實施例中,默認(rèn)隊列207服務(wù) 于所有低通信量VM,S卩,服務(wù)于具有比預(yù)設(shè)通信量閾值低的通信量的任何VM。這些VM的通 信量太小,以致于應(yīng)被置于非默認(rèn)隊列中。
[0047] 以某些方式,默認(rèn)隊列207可被視為不屬于任何池,因為從硬件的視角看,該隊列 只服務(wù)于沒有匹配過濾器的所有VM,所述匹配過濾器將它們的傳入和傳出通信量的路由引 導(dǎo)到另一隊列。一些實施例的隊列管理系統(tǒng)啟動默認(rèn)隊列上的每個VM,直到VM的通信量 超過閾值。一旦VM的通信量超過閾值,系統(tǒng)就為VM選擇非默認(rèn)隊列,然后引導(dǎo)PNIC來分 配用于VM的入站通信量的過濾器,并且引導(dǎo)虛擬化層來分配用于VM的出站通信量的過濾 器。在一些實施例中,對出站通信量的過濾器是基于源MC地址,而對入站通信量的過濾器 是基于目的地MAC地址。這些過濾器引導(dǎo)虛擬化層和PNIC中的模塊,以將傳入和傳出通信 量路由到所選擇的隊列。應(yīng)該注意,過濾器可基于其它標(biāo)識符。例如,在一些實施例中,對 出站通信量的過濾器是基于軟件轉(zhuǎn)發(fā)元件端口ID。
[0048] 過濾器的分配允許概念性地被分派給非默認(rèn)池的隊列服務(wù)于VM的通信量。換句 話講,通過指定過濾器,系統(tǒng)將VM的通信量與隊列相鏈接。此外,通過將隊列與其保持的概 念上的"池"關(guān)聯(lián),隊列管理系統(tǒng)可應(yīng)用不同的管理處理,以不同地管理不同池中的隊列,從 而管理具有不同要求的不同VM。以下,在部分II中對此進(jìn)行進(jìn)一步描述。
[0049] 當(dāng)針對要被分配給池的隊列而言不存在池時,隊列管理系統(tǒng)首先定義池,然后將 隊列分配給該池,如以下進(jìn)一步描述的。LLR池210和HLT池215是被創(chuàng)建用于應(yīng)對具體VM要求的兩個池。LLR池210包括旨在服務(wù)于LLRVM的隊列,而HLT池215包括旨在服務(wù)于 HLTVM的隊列。如圖2中所示,LLRVM250和252通過LLR池210的LLR隊列222和224 發(fā)送和接收它們的數(shù)據(jù)包,而HLTVM260通過HLT池215的HLT隊列230-238發(fā)送和接收 它們的數(shù)據(jù)包。
[0050] 在一些實施例中,隊列管理系統(tǒng)通過具體地分配過濾器(在發(fā)送側(cè)和接收側(cè)二 者)來概念性地定義這些池,使得LLRVM通信量經(jīng)過一個隊列集合,而HLTVM經(jīng)過另一個 隊列集合。對于LLRVM,一些實施例的隊列管理系統(tǒng)優(yōu)化LLR隊列的分配,以確保VM通信 量盡可量地跨LLR隊列分散開,使得LLRVM受其它VM的通信量的影響最小。另一方面,對 于HLTVM,一些實施例的系統(tǒng)通過嘗試減少由HLTVM使用的HLT隊列的數(shù)量來優(yōu)化HLT隊 列的分配,以使更多的空閑隊列可用于新分配。
[0051] 通過將用于LLRVM的隊列與用于HLTVM的隊列分開,一些實施例的隊列管理系 統(tǒng)允許進(jìn)出LLRVM的通信量經(jīng)過不太擁塞的LLR隊列。如此,LLRVM在發(fā)送和接收它們 的數(shù)據(jù)包時可具有較低延遲。
[0052] 盡管圖2中圖示的示例示出了三種類型的池,但本領(lǐng)域的普通技術(shù)人員將認(rèn)識 至IJ,其它實施例使用更少的池或額外的池。例如,替代提供LLR池和HLT池兩者,一些實施 例的隊列管理系統(tǒng)只定義LLR池,并且引導(dǎo)全部HLT通信量通過默認(rèn)池。為了處理所有這 種HLT通信量,一些實施例的隊列管理系統(tǒng)定義默認(rèn)池中的多個隊列。
[0053] 除了LLR池和/或HLT池之外,一些實施例的隊列管理系統(tǒng)還定義LRO和RSS池 (類似于圖1中示出的那些),以支持NIC的LRO和RRS硬件特征。另外,LLR池和HLT池是 基于VM要求而制定的池的示例,其中,相比于HLT,LLR是更高優(yōu)先級池,因為LLR旨在用于 LLRVM通信量。在其它實施例中,隊列管理系統(tǒng)定義兩個以上優(yōu)先級池,以處理兩種類型以 上的VM要求。例如,圖3示出用于三種不同類型的VM的三個優(yōu)先級池的示例。這些池包 括高池305、中間池310和低池315,并且它們的隊列分別處理用于高優(yōu)先級(HP)VM320、中 間優(yōu)先級(MP)VM325和低優(yōu)先級(LP)VM330的通信量。在一些實施例中,相比于較低優(yōu)先 級池,較高優(yōu)先級池可具有較少的VM和/或每隊列具有較少的總體通信量。
[0054] 另外,替代定義LLR池或HLT池或者結(jié)合定義這種池,一些實施例的隊列管理系統(tǒng) 定義高中斷(HI)池或低中斷(LI)池。在該上下文中,中斷是指由PNIC產(chǎn)生的、通向負(fù)責(zé) PNIC中的隊列的網(wǎng)絡(luò)虛擬化層(NVL)中的線程的信號。圖4示出這種線程以及本發(fā)明的一 些實施例的中斷產(chǎn)生結(jié)構(gòu)。在一些實施例中,線程是被初始化成執(zhí)行任務(wù)集合(例如,管理 用于VM的網(wǎng)絡(luò)堆棧中的接收側(cè)模塊或發(fā)送側(cè)模塊)的處理。另外,在一些實施例中,不同 線程可作為多線程處理器的不同線程上和/或多核處理器的不同核上的獨立處理來執(zhí)行。
[0055] 圖4示出PNIC400,PNIC400包括(1)用于接收需要被中繼到VM的傳入通信量的 一些隊列,(2)用于管理傳入通信量到隊列的分派的接收側(cè)(RX)處理引擎405,(3)用于監(jiān) 控隊列狀態(tài)的隊列監(jiān)控器410,(4)用于產(chǎn)生中斷的中斷發(fā)生器430,所述中斷引導(dǎo)NVL的 接收側(cè)線程檢索存儲在隊列中的數(shù)據(jù)。RX處理引擎包括如上所述并且以下進(jìn)一步描述的、 用于將VM的傳入通信量與隊列配對的MAC過濾器420。
[0056] 圖4還示出用于PNIC中的每個隊列的接收側(cè)(RX)線程427。在一些實施例中,線 程427是管理通過PNIC進(jìn)出虛擬機的通信量的網(wǎng)絡(luò)虛擬化層的一部分。在一些實施例中, 隊列管理系統(tǒng)是網(wǎng)絡(luò)虛擬化層的一部分。
[0057] 每個線程管理其相關(guān)聯(lián)的隊列。每當(dāng)隊列被接收到的數(shù)據(jù)包堵塞時,PNIC的隊列 監(jiān)控器410檢測該情況并且引導(dǎo)PNIC的中斷發(fā)生器430生成針對執(zhí)行隊列的線程425的 核的中斷,以引導(dǎo)線程從隊列中檢索數(shù)據(jù)包。發(fā)生器通過PNIC驅(qū)動器435的API發(fā)送該中 斷,其進(jìn)而生成針對核的中斷。每當(dāng)因這個操作調(diào)用隊列的線程時,管理該隊列并且執(zhí)行該 隊列的線程的核必須中斷它正在執(zhí)行的其它任務(wù),以執(zhí)行該線程,使得它可從隊列中檢索 數(shù)據(jù)包。這種中斷影響處理器的操作效率。
[0058] 因此,為了提高處理器的操作效率和/或降低關(guān)鍵VM的延遲,一些實施例的隊列 管理系統(tǒng)定義HI池或LI池。HI池是包含承載需要以較低延遲傳遞的通信量的隊列的池, 而LI池是包含承載可容忍較大延遲的通信量的隊列的池。
[0059] 在一些實施例中,管理HI池的線程將比管理LI池的線程接收更多中斷,如此,在 一些實施例中,它由其上具有比操作LI池的核更小的負(fù)載的處理器核來操作。具體地講, 為了導(dǎo)致LLRVM的期望的低延遲,一些實施例的隊列管理系統(tǒng)指定處理用于LLRVM的通 信量的隊列作為HI池中的隊列?;谠撝付?,它接著可執(zhí)行各種任務(wù),以優(yōu)化對該隊列的 管理和對執(zhí)行該隊列的線程的核的管理。例如,一些實施例中的隊列管理系統(tǒng)減少分派給 該HI隊列的VM的數(shù)量,或者只將也是關(guān)鍵的并且需要低延遲的VM分派給該隊列。與此結(jié) 合或者作為替代方式,一些實施例的隊列管理系統(tǒng)還可引導(dǎo)處理器的調(diào)度器來減少執(zhí)行該 HI隊列的線程的核上的負(fù)載,和/或引導(dǎo)PNIC針對該隊列及早生成中斷。
[0060] 圖4示出減少執(zhí)行HI池的核上的負(fù)載的示例。具體地講,在這個示例中,隊列管 理線程TQMl和TQM2用于管理作為HI隊列的高優(yōu)先級隊列HPQl和HPQ2。這些線程被分派 給多核處理器450的核1和核2。如圖4中所示,這些核上的負(fù)載相對輕,因為核2只執(zhí)行 線程TQM2,而核1執(zhí)行線程TQMl和非隊列管理線程TNQMl。這些核上的負(fù)載與核5上的負(fù) 載形成對比,核5執(zhí)行隊列管理線程TQM5 (針對低優(yōu)先級隊列5 (LPQ5)),而且還執(zhí)行三個其 它非隊列管理線程TNQM2-TNQM4。
[0061] 為了導(dǎo)致HLTVM的較高的可接受延遲,一些實施例的隊列管理系統(tǒng)指定處理用于 HLTVM的通信量的隊列作為LI池中的LPQ。基于該指定,它接著可執(zhí)行各種任務(wù),以優(yōu)化 對該隊列的管理和對執(zhí)行該隊列的線程的核的管理。例如,一些實施例中的隊列管理系統(tǒng) 可將更多的VM分派給該隊列。與此結(jié)合或者作為替代方式,一些實施例的隊列管理系統(tǒng)還 可向處理器的調(diào)度器通知它可將額外的線程調(diào)度到執(zhí)行該隊列的線程的核上,和/或引導(dǎo)PNIC針對該隊列生成較少中斷(即,在生成中斷之前允許該隊列更多地填充)。
[0062] 在一些實施例中,將HI池和/或LI池的指定與LLR池和/或HLT池的指定結(jié)合起 來使用,而在其它實施例中,使用HI池和/或LI池的指定以取代LLR池和/或HLT池的指 定。在一些實施例中,隊列可被指定為LLR隊列和HI隊列二者。替選地,LLRVM可與HLT VM-起被包括在隊列中,但該隊列可被指定為HI隊列,使得它的核未被嚴(yán)重地負(fù)載,因此 可被頻繁地中斷以清空隊列。
[0063]II.隊列管理系統(tǒng)
[0064] 現(xiàn)在,將參照圖5描述一些實施例的隊列管理系統(tǒng)。該系統(tǒng)500將隊列分成不同 優(yōu)先級池,其中為特定類型的通信量或VM(例如,用于需要低延遲的VM的通信量)保留較 高優(yōu)先級池。它還動態(tài)地調(diào)節(jié)每個池中的隊列(即,動態(tài)地調(diào)節(jié)池的大?。⑶一谝粋€ 或多個優(yōu)化標(biāo)準(zhǔn)(例如,與隊列的未充分使用或過度使用有關(guān)的標(biāo)準(zhǔn)),將VM動態(tài)地重新分 派給新隊列。
[0065] 圖5示出(1)正在主機上執(zhí)行的一些VM505,(2)主機的由VM共用的物理NIC515, (3) 在主機上執(zhí)行并且有助于通過共用的PNIC進(jìn)出VM的通信量的網(wǎng)絡(luò)虛擬化層510,(4) 作為內(nèi)核調(diào)度器的物理處理器調(diào)度器525 (也被稱為物理CPU或PCPU),該內(nèi)核調(diào)度器引導(dǎo) 處理器何時何地運行線程(也被稱為上下文)之一。
[0066]PNIC515具有一些隊列517。這些隊列包括用于存儲由主機接收到的傳入數(shù)據(jù)的 接收側(cè)隊列和用于存儲從VM發(fā)送的傳出數(shù)據(jù)的發(fā)送側(cè)隊列。在一些實施例中,每個隊列包 括用于存儲傳入或傳出數(shù)據(jù)的緩沖器集合。在一些實施例中,接收側(cè)隊列與發(fā)送側(cè)隊列分 開并且獨立,但虛擬化層將一個接收側(cè)隊列與一個發(fā)送側(cè)隊列配對,使得隊列對可被用作 VM的一個隊列構(gòu)造。然而,其它實施例沒有將隊列"配對"。換句話講,這些實施例不要求 使用接收側(cè)隊列的VM都使用同一發(fā)送側(cè)隊列;兩個VM可使用同一接收側(cè)隊列,但使用不同 發(fā)送側(cè)隊列。
[0067] PNIC還具有用于從有線或無線鏈接接收傳入數(shù)據(jù)包的接收(RX)側(cè)處理引擎511。RX處理引擎具有MAC過濾器514,MAC過濾器514被配置成基于目的地MAC將每個VM的傳 入通信量與一個隊列對關(guān)聯(lián)。虛擬化層保持用于傳出數(shù)據(jù)包的相似的過濾器516,并且該層 中的隊列選擇器518使用該過濾器中的數(shù)據(jù)來配置每個VM的傳出通信量,以使用與傳入通 信量相同的隊列對。在一些實施例中,過濾器516依據(jù)VM的源MAC地址或它的VNIC的源 MAC地址來指定VM,而在其它實施例中,過濾器516依據(jù)VM的VNIC所連接的軟件轉(zhuǎn)發(fā)元件 的端口ID來指定VM。在一些實施例中,PNIC還包括用于監(jiān)控隊列并且生成中斷的電路,如 以上參照圖4描述的。
[0068]VM在超級監(jiān)督者(未示出)之上執(zhí)行,在一些實施例中,超級監(jiān)督者包括網(wǎng)絡(luò)虛擬 化層510。圖5示出每個VM包括虛擬NIC(VNIC) 507。圖5還示出網(wǎng)絡(luò)虛擬化層510包括 (1)用于每個VM的一個網(wǎng)絡(luò)堆棧550,(2)軟件轉(zhuǎn)發(fā)元件535,(3)統(tǒng)計信息收集引擎540, (4) 統(tǒng)計信息存儲器545,和(5)動態(tài)負(fù)載均衡器555。每個網(wǎng)絡(luò)堆棧包括VNIC仿真器527 和I/O鏈529。每個網(wǎng)絡(luò)堆棧由接收/發(fā)送線程531管理。
[0069] 每個網(wǎng)絡(luò)堆棧通過其VNIC仿真器連接到其VM并且連接到由所有VM的所有網(wǎng)絡(luò) 堆棧共用的軟件轉(zhuǎn)發(fā)元件535。每個網(wǎng)絡(luò)堆棧通過交換機的端口(未示出)連接到軟件轉(zhuǎn) 發(fā)元件。在一些實施例中,軟件轉(zhuǎn)發(fā)元件保持用于每個VNIC的單個端口。軟件轉(zhuǎn)發(fā)元件 535執(zhí)行數(shù)據(jù)包處理操作,以將它的一個端口接收的數(shù)據(jù)包轉(zhuǎn)發(fā)到它的另一個端口,或者轉(zhuǎn) 發(fā)到在另一個主機上執(zhí)行的另一個軟件轉(zhuǎn)發(fā)元件的一個端口。例如,在一些實施例中,軟件 轉(zhuǎn)發(fā)元件嘗試使用數(shù)據(jù)包中的數(shù)據(jù)(例如,數(shù)據(jù)包頭部中的數(shù)據(jù))來使數(shù)據(jù)包匹配基于流 的規(guī)則,并且在發(fā)現(xiàn)匹配時,執(zhí)行由匹配規(guī)則指定的動作。
[0070] 在一些實施例中,在不同主機裝置(例如,不同計算機)上執(zhí)行的軟件轉(zhuǎn)發(fā)元件被 配置成針對使用相同的共用計算和連網(wǎng)資源的不同租用者、用戶、部門等的不同邏輯網(wǎng)絡(luò) 來實現(xiàn)不同的邏輯轉(zhuǎn)發(fā)元件(LFE)。例如,在兩個主機上執(zhí)行的兩個軟件轉(zhuǎn)發(fā)元件可執(zhí)行 L2交換功能。這些軟件交換中的每個可部分地實現(xiàn)兩個不同的邏輯L2交換,其中,每個邏 輯L2交換連接一個實體的VM。在一些實施例中,軟件轉(zhuǎn)發(fā)元件提供L3路由功能,并且可被 配置成利用在其它主機上執(zhí)行的軟件L3路由器來實現(xiàn)不同的邏輯路由器。
[0071] 在虛擬化領(lǐng)域中,有些人將軟件交換稱為虛擬交換,因為它們是軟件元件。然而, 在本文獻(xiàn)中,軟件轉(zhuǎn)發(fā)元件被稱為物理轉(zhuǎn)發(fā)元件(PFE),以將它們與邏輯轉(zhuǎn)發(fā)元件池區(qū)分 開,邏輯轉(zhuǎn)發(fā)元件是與物理世界無關(guān)的邏輯構(gòu)造。換句話講,軟件轉(zhuǎn)發(fā)元件被稱為PFE,因為 它們在物理世界中存在并進(jìn)行操作,而邏輯轉(zhuǎn)發(fā)元件僅僅是向用戶呈現(xiàn)的轉(zhuǎn)發(fā)元件的邏輯 表示。邏輯轉(zhuǎn)發(fā)元件的示例是諸如邏輯交換、邏輯路由器等邏輯轉(zhuǎn)發(fā)元件。美國專利申請 14/070, 360提供了PFE和LFE的額外示例,并且以引用方式并入本文。
[0072]軟件轉(zhuǎn)發(fā)元件535連接到PNIC,以發(fā)送傳出數(shù)據(jù)包并且接收傳入數(shù)據(jù)包。在一些 實施例中,軟件轉(zhuǎn)發(fā)元件被定義成包括端口,該軟件轉(zhuǎn)發(fā)元件通過該端口連接到PNIC以發(fā) 送和接收數(shù)據(jù)包。如以上提到的,在一些實施例中,在軟件轉(zhuǎn)發(fā)元件535和PNIC之間插入 隊列選擇器518。隊列選擇器選擇用于檢索傳入數(shù)據(jù)包的接收側(cè)隊列和用于供應(yīng)傳出數(shù)據(jù) 包的發(fā)送側(cè)隊列。如以上提到的,隊列選擇器使用過濾器516中的數(shù)據(jù)來識別用于供應(yīng)特 定VM傳出通信量的發(fā)送側(cè)隊列。選擇器沒有使用過濾器中的數(shù)據(jù)來選擇隊列并且檢索其 用于VM的RX線程的數(shù)據(jù)包。在一些實施例中,隊列選擇器是網(wǎng)絡(luò)堆棧的接收/發(fā)送線程 531的一部分,如以下進(jìn)一步描述的。如此,對于這些實施例,隊列選擇器518是接收/發(fā)送 線程531在一些實施例中執(zhí)行的隊列選擇操作的概念表示。
[0073]VM中的每個VNIC負(fù)責(zé)通過其關(guān)聯(lián)的VNIC仿真器527在VM和網(wǎng)絡(luò)虛擬化層之間 交換數(shù)據(jù)包。每個VNIC仿真器與VM中的NIC驅(qū)動器交互,以將數(shù)據(jù)發(fā)送到VM并且從VM 接收數(shù)據(jù)。在一些實施例中,VNIC是由虛擬NIC仿真器實現(xiàn)的物理NIC的軟件抽象。例如, 在一些實施例中,用于請求和獲得連接ID的代碼駐留在虛擬NIC仿真器的組件中。換句話 講,在一些實施例中,由每個VNIC仿真器實現(xiàn)并保持VNIC狀態(tài)。諸如VNIC的虛擬裝置盡 管是作為VM的一部分的便于討論的軟件抽象,但實際上是由使用仿真器的虛擬軟件來實 現(xiàn)的。然而,每個VM的狀態(tài)包括其虛擬裝置的狀態(tài),虛擬裝置的狀態(tài)是由下層的虛擬化軟 件來控制和保持的。盡管圖5示出用于每個VM的每個VNIC的一個VNIC仿真器,但是在一 些實施例中,每個VNIC仿真器可以保持一個以上VNIC和/或一個以上VM的狀態(tài)。
[0074] 每個網(wǎng)絡(luò)堆棧中的I/O鏈包括對每個數(shù)據(jù)包執(zhí)行一系列任務(wù)的一系列模塊。如以 上并入的美國專利申請14/070, 360中描述的,I/O鏈模塊的兩個示例是ARP和DHCP代理 模塊,ARP和DHCP代理模塊解析ARP和DHCP廣播消息,而不采取廣播這些消息的手段。由 I/O鏈中的模塊執(zhí)行的處理的其它示例包括防護(hù)墻和通信量隧穿操作。I/O鏈的輸入/輸 出轉(zhuǎn)到軟件轉(zhuǎn)發(fā)元件的端口之一。
[0075] 在一些實施例中,每個網(wǎng)絡(luò)堆棧550的接收/發(fā)送線程531是管理網(wǎng)絡(luò)堆棧中的 模塊的內(nèi)核級線程。這些線程還管理與堆棧的VM關(guān)聯(lián)的PNIC隊列517。具體地,在一些 實施例中,每個隊列的接收側(cè)具有用于處理來自隊列接收側(cè)的輪詢數(shù)據(jù)包和中斷的專用RX 內(nèi)核線程。另外,每個VM具有用于處理從VM發(fā)送的數(shù)據(jù)包的專用TX內(nèi)核線程。在一些實 施例中,每對接收/發(fā)送線程由主機的多核處理器的核之一執(zhí)行,因為這些實施例中推薦 的隊列的數(shù)量等于主機的多核處理器的核的數(shù)量。盡管在圖5中使用單獨的接收和發(fā)送線 程來分別管理堆棧及其關(guān)聯(lián)隊列的接收和發(fā)送操作,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識到, 在其它實施例中,使用一個線程來執(zhí)行這兩個任務(wù)。另外,在一些實施例中,RX/TX線程可 與隊列、核和/或VM不相關(guān)或嚴(yán)格相關(guān)。
[0076] 如以上提到的,網(wǎng)絡(luò)虛擬化層還包括統(tǒng)計信息收集引擎540、統(tǒng)計信息存儲器545 和動態(tài)負(fù)載均衡器555。統(tǒng)計信息收集引擎540、負(fù)載均衡器555和RX/TX線程531部分地 形成一些實施例的隊列管理系統(tǒng)。由統(tǒng)計信息收集引擎540收集的統(tǒng)計信息向負(fù)載均衡器 提供為確定何時將隊列分派給池以及何時調(diào)節(jié)池所需的信息。
[0077] 在不同實施例中,統(tǒng)計信息收集引擎從不同源中得到統(tǒng)計信息。例如,在一些實施 例中,該統(tǒng)計信息收集引擎從任一CPU調(diào)度器525 (針對CPU使用率)和RX/TX線程(針對 網(wǎng)絡(luò)通信量)"拉?。╬ull) "統(tǒng)計信息或者從任一CPU調(diào)度器525 (針對CPU使用率)和 RX/TX線程(針對網(wǎng)絡(luò)通信量)接收被推送的統(tǒng)計信息。對于網(wǎng)絡(luò)通信量,網(wǎng)絡(luò)虛擬化層使 得從各種源收集統(tǒng)計信息(例如,吞吐量、數(shù)據(jù)包比率、丟包率等),所述各種源包括網(wǎng)絡(luò)堆 棧的每層(即,由RX/TX線程管理的每個模塊)。
[0078] 在一些實施例中,統(tǒng)計信息收集引擎收集負(fù)載均衡器的以下網(wǎng)絡(luò)統(tǒng)計信息:PNIC 數(shù)據(jù)包比率、PNIC吞吐量和每個RX/TX線程的CPU使用率。在一些實施例中,CPU調(diào)度器 525更新CPU使用率數(shù)據(jù),而RX/TX線程更新PNIC數(shù)據(jù)包比率和吞吐量,因為它們是實際上 與PNIC通信并且具有精確計數(shù)的線程。在一些實施例中,PNIC驅(qū)動器模塊處于隊列選擇 器以下,并且該PNIC驅(qū)動器是與PNIC通信并且更新PNIC負(fù)載統(tǒng)計信息的模塊。另外,在 一些實施例中,統(tǒng)計信息收集引擎不僅收集負(fù)載均衡器的PNIC統(tǒng)計信息,而且收集由VNIC 仿真器采集的VNIC統(tǒng)計信息。
[0079] 通過依靠VNIC統(tǒng)計信息,負(fù)載均衡器可決定,當(dāng)對延遲敏感的VM的VNIC數(shù)據(jù)包 比率在某個閾值以上時將對延遲敏感的VM移到獨有隊列,所述某個閾值會開始損害任何 一個與其共用同一隊列的VM。更通常地,負(fù)載均衡器555使用收集到的統(tǒng)計信息來確定要 將哪個隊列分派給哪個VM,何時將隊列動態(tài)地分派給池以及何時動態(tài)地調(diào)節(jié)池。
[0080] 在一些實施例中,負(fù)載均衡器周期性地(例如,每隔幾秒、幾毫秒、幾微秒等)運 行負(fù)載均衡處理。該處理從統(tǒng)計信息收集引擎保持的"負(fù)載統(tǒng)計信息"數(shù)據(jù)存儲器545中 拉取統(tǒng)計信息,并且基于這些統(tǒng)計信息,確定是否需要分配池,解除分配池,將VM分派給隊 列,調(diào)整池的大小和/或先占取隊列。在一些實施例中,負(fù)載均衡器通過配置PNIC和虛擬 化層的過濾器以將特定隊列標(biāo)識符與用于傳出通信量的特定源MAC地址和用于傳入通信 量的特定目的地MAC相關(guān)聯(lián)來將VM分派給隊列。為了配置PNIC的MAC過濾器,負(fù)載均衡 器使用PNIC驅(qū)動器的API來對每個隊列的硬件特征和過濾器進(jìn)行編程。
[0081] 如圖5中所示,負(fù)載均衡器具有三個模塊,S卩,池561、隊列均衡器559和池均衡器 557。這些池是負(fù)載均衡器定義的PNIC隊列的軟件抽象分組。負(fù)載均衡器應(yīng)用不同處理來 管理不同"池"中的隊列。如此,每個池可被視為具有相同"特征"的隊列集合,其中,特征 類似于硬件特征(類似RSS/LRO)。這種特征的示例包括VM要求(例如,低延遲或低中斷比 率)。
[0082] 通過應(yīng)用不同處理來管理不同池中的隊列,負(fù)載均衡器可針對不同池不同地優(yōu)化 隊列的分配和池大小的調(diào)整。池重新均衡器557基于池的資源分配標(biāo)準(zhǔn)調(diào)整每個池的大小 并且在需要時先占取其它池中的隊列。這種資源分配標(biāo)準(zhǔn)的示例包括池中的隊列的最大/ 最小數(shù)量、池的總CPU使用率、池的網(wǎng)絡(luò)通信量、池的服務(wù)質(zhì)量(QoS)約束。隊列重新均衡 器559基于池的重新均衡標(biāo)準(zhǔn),重新均衡同一池中的隊列。這種池重新均衡標(biāo)準(zhǔn)的示例包 括將VM填充盡可能少的隊列(例如,針對HLT池),跨盡可能多的隊列(例如,針對LLR池) 分配VM等。在一些實施例中,管理兩個不同池的兩個不同處理指定不同的資源分配標(biāo)準(zhǔn)、 不同的先占取標(biāo)準(zhǔn)、不同的重新平衡標(biāo)準(zhǔn)等。
[0083]III.調(diào)節(jié)VM分配并且調(diào)節(jié)池
[0084] 圖6概念性地不出在一些實施例中負(fù)載均衡器555執(zhí)行的整體處理600。一些實 施例中的負(fù)載均衡器555周期性地(例如,每隔幾秒、幾毫秒、幾微秒等)執(zhí)行該處理,以將 VM分派給隊列,重新均衡每個池內(nèi)的隊列并且保持跨池的期望均衡。
[0085] 在一些實施例中,當(dāng)計時器(例如,N秒計時器)期滿時,開始處理600。如圖6中 所示,處理600初始地調(diào)用(在605)隊列分派處理,該隊列分派處理檢查默認(rèn)池中的VM以 識別必須移到非默認(rèn)池的任何VM,并且將識別的任何VM移到非默認(rèn)池中的合適的非默認(rèn) 隊列。在一些實施例中,當(dāng)VM對默認(rèn)隊列的使用超過默認(rèn)隊列的閾值水平或VM對默認(rèn)隊 列的使用的閾值水平時,隊列分派處理將VM移到(在605)非默認(rèn)隊列。在605,該處理還 識別非默認(rèn)隊列中的必須移回到默認(rèn)池的任何VM,并且將任何識別的VM移回到默認(rèn)池。在 一些實施例中,當(dāng)VM對其默認(rèn)隊列的使用在非默認(rèn)隊列的閾值水平或VM對非默認(rèn)隊列的 使用的閾值水平以下時,隊列分派處理將VM移回到(在605)默認(rèn)池。以下,通過參照圖7 進(jìn)一步描述一些實施例的隊列分派處理。
[0086] 在605之后,處理600調(diào)用(在610)池調(diào)節(jié)處理,以均衡每個池內(nèi)的隊列。在一 些實施例中,池調(diào)節(jié)處理檢查每個池,以基于池的一個或多個優(yōu)化標(biāo)準(zhǔn)確定它是否必須將 一個或多個VM在池中的隊列之間移動、或者將一個或多個VM移到池中的新隊列。一些實 施例的池調(diào)節(jié)處理針對不同的池使用不同的優(yōu)化標(biāo)準(zhǔn)。例如,在一些實施例中,用于LLR池 的優(yōu)化標(biāo)準(zhǔn)使得該處理傾向于將VM分配到LLR池的隊列之間,而用于HLT池的優(yōu)化標(biāo)準(zhǔn)使 得該處理傾向于將VM聚集到HLT池中的較少隊列上。基于這些標(biāo)準(zhǔn)及其在610的確定,處 理600在池中的隊列之間重新分派VM(在610)、或者將VM重新分派給池中的新隊列。以 下,進(jìn)一步描述一些實施例的池調(diào)節(jié)處理。
[0087] 接著,在615,處理600調(diào)用保持跨池的期望均衡的池均衡處理。在一些實施例中, 池均衡處理檢查跨各種池的隊列使用率。基于該檢查,均衡處理可將一個或多個隊列分配 給一個池。它還可基于該檢驗將一個或多個隊列從另一個池解除分配。在一個調(diào)用中,該 處理可將更多隊列分配給一個以上的池,或者它可將一個以上的池中的隊列解除分配。以 下,進(jìn)一步描述跨池的重新均衡處理。
[0088] 普通技術(shù)人員將認(rèn)識到,在其它實施例中,負(fù)載均衡處理600是不同的。例如,在 一些實施例中,處理600沒有單獨的重新均衡操作615,而是作為操作605和610的一部 分,隱含地或明確地執(zhí)行該操作。另外,雖然以上和以下說明了作為操作605、610、615之一 的一部分的某些子操作,但普通技術(shù)人員將認(rèn)識到,這些子操作可在這些操作605、610、615 中的不同操作中執(zhí)行,或者作為對它們自身的不同操作或者不同操作的子操作來執(zhí)行。
[0089]在615之后,處理600結(jié)束。
[0090] 圖7概念性地示出在一些實施例中負(fù)載均衡器555周期性地(例如,每隔幾秒、幾 毫秒、幾微秒等)調(diào)用的隊列分派處理700。一些實施例中的負(fù)載均衡器555周期性地調(diào)用 該處理,以識別和移動過度使用默認(rèn)隊列或未充分使用非默認(rèn)隊列的任何VM。如圖7中所 示,處理700初始地從統(tǒng)計信息存儲器545收集(在705)統(tǒng)計信息,而不管所有VM對默認(rèn) 隊列和非默認(rèn)隊列的使用情況。該處理使用獲取的統(tǒng)計信息來執(zhí)行分析,如以下進(jìn)一步描 述的。
[0091] 接下來,基于獲取的統(tǒng)計信息,處理識別(在710)使用默認(rèn)池中的目前超過默認(rèn) 隊列的閾值使用水平或VM對默認(rèn)隊列的使用的閾值使用水平(例如,當(dāng)不同VM針對默認(rèn) 隊列具有不同閾值使用水平時)的默認(rèn)隊列的任何VM。如以上提到的,一些實施例在VM被 初始化時將每個VM分派給默認(rèn)隊列,但監(jiān)控每個VM對默認(rèn)隊列的使用,并且當(dāng)VM的使用 超過閾值時將VM移到非默認(rèn)隊列。
[0092] 在715,該處理確定是否能夠在710識別到任何VM。如果識別不到,則該處理轉(zhuǎn)到 以下將進(jìn)一步描述的765。否則,該處理轉(zhuǎn)到720,以選擇在710識別的VM之一,并且識別 所選擇的VM對于加入池的隊列的要求。如以上提到的,本發(fā)明的一些實施例定義滿足不同 VM集合的一個或多個不同要求的隊列的一個或多個非默認(rèn)池。
[0093] 接下來,在725,該處理確定它之前是否已經(jīng)定義了針對所選擇的VM要求的池。例 如,假設(shè)所選擇的VM是LLRVM,則該處理確定(在725)它之前是否已經(jīng)定義了用于將LLR VM分配給該池的隊列的LLR池。當(dāng)該處理確定(在725)它之前已經(jīng)定義了針對VM要求的 池時,它接著確定(在730)它是否可將所選擇的VM分派給之前定義的該池中的隊列之一。 換句話講,在730,該處理確定該池的現(xiàn)有隊列是否具有用于在720選擇的VM的足夠的可用 容量。
[0094] 當(dāng)該池中的隊列具有足夠容量時,該處理將VM分派(在735)給該隊列和該隊列 的池,然后轉(zhuǎn)到以下將描述的740。如以上提到的,一些實施例通過過濾來創(chuàng)建VM和隊列之 間的關(guān)聯(lián),其使用源MAC地址將VM的傳出通信量與特定隊列關(guān)聯(lián)并且使用目的地MAC地址 將傳入通信量與特定隊列關(guān)聯(lián)。一些實施例明確地指定VM和池之間的關(guān)聯(lián),而其它實施例 隱含地通過VM的關(guān)聯(lián)隊列和池之間的關(guān)聯(lián)來指定該關(guān)聯(lián)。在735創(chuàng)建的VM和池之間的關(guān) 聯(lián)允許負(fù)載均衡器應(yīng)用公共的處理集合來管理其隊列上的VM、以及同一池中的該隊列和其 它隊列上的其它VM。如以上提到的,在一些實施例中,這些處理集合不同于用于管理隊列的 其它池中的其它VM的處理集合。
[0095] 當(dāng)該處理確定(在725)針對所選擇VM的要求(例如,LLR要求)而言不存在池 時,該處理指定(在745)針對所選擇VM的要求的池(例如,指定LLR池),然后轉(zhuǎn)到750。 當(dāng)該處理確定(在730)之前針對VM的要求指定的池沒有對于所選擇的VM具有足夠容量 的任何隊列時,該處理也轉(zhuǎn)到750。
[0096] 在750,該處理確定是否存在目前未分派給任何VM的任何PNIC隊列(即,在隊列 的空閑池中是否存在任何隊列)。如果存在,該處理(在755)選擇空閑隊列中的一個,將 它分派給池,將所選擇的VM分派給該隊列和池,然后轉(zhuǎn)到以下將描述的740。否則,該處理 先占?。ㄔ?60)由非空閑池中的另一個所使用的隊列中的一個。先占取涉及首先將正在 使用先占取隊列的VM重新分派給池中的包括先占取隊列的其它隊列。在一些實施例中,該 處理在一些情況下將無法先占取另一個池中的隊列,因為VM的目前非默認(rèn)池具有比其它 非默認(rèn)池低的優(yōu)先級。一旦所有VM已經(jīng)被重新分派并且隊列已經(jīng)處理了這種VM的所有通 信量,該處理就將先占取隊列分派(760)給針對所選擇VM的要求的池。該處理還將所選擇 VM分派(在760)給該隊列和池,然后轉(zhuǎn)到740。
[0097] 在740,該處理確定它是否已經(jīng)處理了在710識別的所有VM。如果為否,該處理返 回到720以選擇識別的另一個VM。否則,在該處理已經(jīng)將在710識別的每個VM分派給池和 隊列之后,該處理基于在705檢索的統(tǒng)計信息,確定(在765)位于非默認(rèn)隊列中的任何VM 是否應(yīng)該被移回到默認(rèn)池。在一些實施例中,當(dāng)VM對非默認(rèn)隊列的使用降至非默認(rèn)隊列的 閾值使用水平或VM對非默認(rèn)隊列的使用的閾值使用水平以下時,該處理將VM移回到默認(rèn) 隊列。在這些實施例中的一些實施例中,該處理只在VM的使用已經(jīng)在閾值使用水平以下持 續(xù)足夠長的時間段時才移動VM。當(dāng)該處理在765識別了任何VM時,它將識別的VM移回到 默認(rèn)池的默認(rèn)隊列,并且從其之前分配的非默認(rèn)隊列的池中去除該VM。當(dāng)在該重新分派之 后沒有其它VM使用之前分派的非默認(rèn)隊列時,處理700還將非默認(rèn)隊列重新分派(在765) 給空閑隊列的池。當(dāng)該重新分配的隊列是池中最后一個隊列時,一些實施例的處理700還 解除池的分配,因為它不再包含任何隊列。然而,其它實施例在這種情形下不解除池的分 配。在765之后,該處理結(jié)束。
[0098] 圖8概念性地示出在一些實施例中負(fù)載均衡器555周期性地(例如,每隔幾秒、每 隔數(shù)毫秒、每隔數(shù)微秒等)調(diào)用的池調(diào)節(jié)處理800。一些實施例中的負(fù)載均衡器555周期性 地調(diào)用該處理,以重新均衡每個池內(nèi)的隊列。在一些實施例中,池調(diào)節(jié)處理檢查每個池,以 基于池的一個或多個優(yōu)化標(biāo)準(zhǔn)確定它是否必須將一個或多個VM在池中的隊列之間移動、 或者將一個或多個VM移到池中的新隊列。一些實施例的池調(diào)節(jié)處理針對不同的池使用不 同的優(yōu)化標(biāo)準(zhǔn)。例如,在一些實施例中,用于LLR池的優(yōu)化標(biāo)準(zhǔn)使得該處理傾向于在LLR池 的隊列之間分配VM,而用于HLT池的優(yōu)化標(biāo)準(zhǔn)使得該處理傾向于將VM聚集到HLT池中的隊 列上。
[0099] 如圖8中所示,處理800初始地從關(guān)于所有VM對默認(rèn)隊列和非默認(rèn)隊列的使用的 統(tǒng)計信息存儲器545收集(在805)統(tǒng)計信息。該處理使用檢索到的統(tǒng)計信息來執(zhí)行分析, 如以下進(jìn)一步描述的。在805之后,處理800選擇(在810)非默認(rèn)池中的一個進(jìn)行檢查 (例如,選擇LLR池進(jìn)行檢查)。接下來,在815,該處理確定池中的任何隊列是否未被充分 使用。如果發(fā)現(xiàn)任何這種隊列,則該處理接著確定(在815)所選擇池中的任何其它隊列是 否具有用于目前正在使用該處理在815識別的任何未充分使用隊列的一個或多個VM的容 量。當(dāng)該處理識別具有過量容量的這種隊列時,該處理將一個或多個VM從未充分使用的隊 列分派(在815)到具有過量容量的一個或多個隊列。當(dāng)在移動之后沒有任何其它VM被分 派給未充分使用的隊列時,該處理還將未充分使用的隊列從所選擇池中解除分配(在815) (即,將未充分使用的隊列分派給空閑池)。以此方式,未充分使用的隊列可空出來,以在隨 后被分配給另一池或同一池。
[0100] 在815之后,該處理識別(在820)所選擇池中正被過度使用的任何隊列。該處理 接著確定(在825)所選擇池是否存在任何隊列具有過量容量來處理目前被分派給識別的 過度使用隊列的一個或多個VM的通信量。當(dāng)該處理識別(在825)具有過量容量的一個或 多個隊列時,該處理將目前被分派給識別的過度使用隊列的一個或多個VM分派(在830) 給具有過量容量的一個或多個隊列,然后轉(zhuǎn)到以下將描述的835。
[0101] 另一方面,當(dāng)該處理確定(在825)所選擇池沒有任何過量容量的隊列來處理目前 正經(jīng)過過度使用隊列的通信量中的一些時,該處理確定(在840)是否存在任何空閑隊列 (例如,空閑池是否具有任何隊列)。如果存在,則該處理將空閑隊列中的一個或多個分配 (在845)給所選擇池(即,在810選擇的池)。在845,該處理還將目前被分派給識別的過 度使用隊列的一個或多個VM分配給重新分配的隊列,然后轉(zhuǎn)到以下將描述的835。
[0102] 當(dāng)該處理確定(在840)沒有空閑隊列時,該處理確定(在850)它是否可先占取 另一池中的隊列。在一些實施例中,并非所有池可先占取其它池中的隊列;只有一些池(例 如,LLR池)可先占取其它池(例如,HLT池)中的隊列。另外,在一些實施例中,在某些情 形下(例如,當(dāng)其它池本身沒有嚴(yán)重超負(fù)荷時),一些池可先占取其它池中的隊列。
[0103] 當(dāng)該處理確定(在850)它無法先占取另一池中的隊列時,該處理轉(zhuǎn)到835。另一 方面,當(dāng)該處理確定(在850)它可先占取另一池中的隊列時,該處理將目前正在使用先占 取隊列的所有VM分派(在855)給與先占取池相同的池內(nèi)的新隊列。在重新分派所有VM 之后,該處理接著將先占取隊列分配(在855)給所選擇池(即,在810選擇的池),并且將 目前被分派給識別的過度使用隊列的一個或多個VM分派給新分配的隊列,然后轉(zhuǎn)到835。
[0104] 在835,該處理確定它是否檢查了它應(yīng)該檢查的所有非默認(rèn)池。如果是,該處理結(jié) 束。否則,該處理返回到810以選擇另一個非默認(rèn)池。該處理使用不同標(biāo)準(zhǔn)來評估不同池 的隊列的未充分使用和過度使用。例如,對于LLR池,過度使用閾值可以是50 %負(fù)載并且未 充分使用閾值可以是5 %,而對于HLT池,過度使用閾值可以是90 %并且未充分使用閾值可 以是75%。
[0105] 另外,如以上提到的,一些實施例基于不同池資源分配標(biāo)準(zhǔn)(例如,池中隊列的最 大/最小數(shù)量、池的總CPU使用率、池的網(wǎng)絡(luò)通信量、池的服務(wù)質(zhì)量(Qos)約束等)調(diào)整不 同池的大小。類似地,一些實施例基于不同的重新均衡標(biāo)準(zhǔn)(例如,將VM填充盡可能少的 隊列(例如,針對HLT池)、跨盡可能多的隊列分配VM(例如,針對LLR池)等)來重新均衡 不同池中的隊列。
[0106] 在一些實施例中,圖8的處理800檢查未充分使用的隊列,以將它們的VM重新分 派給同一池中的其它隊列,使得它可解除未充分使用隊列的分配。作為檢查未充分使用的 隊列的補充或替代,一些實施例的負(fù)載均衡器檢查要分派給未默認(rèn)隊列的每個VM,以確定 VM對其非默認(rèn)隊列的使用是否在閾值水平以下。圖9示出一些實施例的負(fù)載均衡器執(zhí)行的 用于評估VM對其隊列的使用率的處理900。
[0107] 如該圖中所示,處理900先開始選擇(在905)非默認(rèn)隊列的VM。接下來,在910, 該處理確定VM是否未充分使用其隊列。例如,在一些實施例中,當(dāng)只有通過隊列的通信量 的1 %歸屬于VM時,認(rèn)為VM未充分使用其隊列。
[0108] 當(dāng)該處理確定(在910)VM沒有未充分使用其隊列時,該處理結(jié)束。否則,該處理確 定(在915)與VM的目前隊列相同的池中的另一隊列是否具有用于所選擇VM的容量。如 果沒有,則該處理結(jié)束。否則,該處理(在920)將VM分派給與VM的目前隊列相同的池中 的新隊列。如果VM的之前隊列沒有被分派任何其它VM,則該處理接著解除之前隊列的分 配。
[0109] 圖10示出因為對第一隊列的未充分使用或因為MV對其第一隊列的未充分使用而 將VM從第一隊列重新分派給第二隊列的示例。具體地講,該圖示出初始被分派給兩個隊列 1025和1030的兩個VM1015和1020的網(wǎng)絡(luò)堆棧1005和1010。在這兩個VM被初始化時, 這兩個VM被分派給這兩個隊列。
[0110] 在某個隨后時間點,負(fù)載均衡器555檢索關(guān)于各種隊列的各種VM使用的統(tǒng)計信 息?;谶@些統(tǒng)計信息,負(fù)載均衡器檢測VM1020使用隊列1030的容量的不足1%。因為該VM未充分使用其隊列,所以負(fù)載均衡器接著定義網(wǎng)絡(luò)虛擬化層中和PNIC中的過濾器,其將 VM1020及其網(wǎng)絡(luò)堆棧1010從隊列1030重新分派給隊列1025。如果沒有其它VM正在使用 隊列1030,則負(fù)載均衡器還把隊列1030重新分配給隊列的空閑池。在一些實施例中,負(fù)載 均衡器會把VM1020重新分派給隊列1025,這只有當(dāng)確定在進(jìn)行該重新分派(和同時使用隊 列1030的任何其它VM的重新分派)時,隊列1030可從任何VM通信量中空出來,因此被重 新分配給空閑池才進(jìn)行。然而,在其它實施例中,負(fù)載均衡器僅僅基于VM自身對其隊列的 使用來進(jìn)行其重新分配決定。
[0111] 圖11示出因為第一隊列的過度使用而將VM從第一隊列重新分派給第二隊列的示 例。具體地講,這個圖示出在相同的兩個VM1015和1020已經(jīng)被分派給隊列1025之后這 兩個VM的相同的兩個網(wǎng)絡(luò)堆棧1005和1010。在某個時間點,負(fù)載均衡器555檢索關(guān)于各 種隊列的各種VM使用的統(tǒng)計信息?;谶@些統(tǒng)計信息,負(fù)載均衡器檢測隊列1025正以其 90%的容量處理通信量。因為這個隊列正被過度使用,所以負(fù)載均衡器接著定義網(wǎng)絡(luò)虛擬 化層中和PNIC中的過濾器,其將VM1020及其網(wǎng)絡(luò)堆棧1010從隊列1025重新分派給隊列 1030。
[0112] 如以上提到的,一些實施例中的負(fù)載均衡器是保持跨池的期望均衡的池均衡處 理。在一些實施例中,池均衡處理檢查跨各種池的隊列使用?;谠摍z查,均衡處理可將一 個或多個隊列分配給一個池。還可基于該檢查將一個或多個隊列從另一個池解除分配。在 一次調(diào)用中,該處理可將更多隊列分配給一個以上的池,或者它可解除一個以上的池中的 隊列的分配。
[0113] 圖12示出跨池的池均衡的示例。具體地講,它示出在兩個階段1205和1210中將 隊列從低優(yōu)先級池1215添加到高優(yōu)先級池1220。在第一階段中,負(fù)載均衡器555從統(tǒng)計信 息存儲器545檢索統(tǒng)計信息?;跈z索的統(tǒng)計信息,負(fù)載均衡器確定通過高優(yōu)先級池1220 的隊列的負(fù)載(LH)大于通過低優(yōu)先級池1215的隊列的負(fù)載(LT)的特定百分比(例如, 75% ) 〇
[0114] 因為一些實施例想要通過高優(yōu)先級隊列的負(fù)載顯著小于通過低優(yōu)先級隊列的負(fù) 載,所以負(fù)載均衡器設(shè)置過濾器,使得低優(yōu)先級池中的隊列1250從該池中被去除并且被添 加到高優(yōu)先級池中。在隊列1250可切換到高優(yōu)先級池之前,正在使用低優(yōu)先級池中的隊列 1250的VM必須被分派給該池中的不同隊列。圖12示出將隊列1250添加到高優(yōu)先級隊列 之后,通過高優(yōu)先級隊列的負(fù)載(LH)小于通過低優(yōu)先級隊列的負(fù)載(LL)的指定百分比。
[0115] IV.非VM可尋址節(jié)點和其它過濾
[0116] 以上已經(jīng)描述了一些實施例,對于進(jìn)出在主機裝置上執(zhí)行的一個或多個VM的數(shù) 據(jù)通信量,動態(tài)地定義隊列的池,唯一地管理每個池,動態(tài)地改變池內(nèi)的隊列,并且將VM的 通信量重新分派給新隊列。這些實施例中的許多實施例使用主機裝置接收或發(fā)送的數(shù)據(jù)包 的目的地或源MAC地址,以將VM數(shù)據(jù)通信量數(shù)據(jù)包分派給不同池和池內(nèi)的不同隊列。
[0117] 然而,并非所有實施例使用MC地址將數(shù)據(jù)通信量分派給池和池內(nèi)的隊列。另外, 一些實施例的隊列管理方法和設(shè)備用于除VM數(shù)據(jù)通信量之外的數(shù)據(jù)通信量。具體地講,作 為VM數(shù)據(jù)通信量的附加或者作為VM數(shù)據(jù)通信量的替代,一些實施例動態(tài)地定義池,唯一地 管理每個池,動態(tài)地改變池內(nèi)的隊列,并且動態(tài)地重新分派進(jìn)出在主機上執(zhí)行的非VM可尋 址節(jié)點(例如,源端節(jié)點或目的地端節(jié)點)的數(shù)據(jù)通信量。一些實施例的方法和設(shè)備用于 執(zhí)行這些操作,以區(qū)分通過隊列的不同類型的數(shù)據(jù)通信量的路由。
[0118] 以下,進(jìn)一步描述一些這樣的實施例。具體地講,子部分A描述使用MC地址過濾 將非VM通信量數(shù)據(jù)路由到不同池的不同隊列的一些實施例。接著,子部分B描述使用五元 組IP過濾將不同類型的數(shù)據(jù)通信量路由到不同池的不同隊列的一些實施例。
[0119] A.用于非VM通信量的MAC過濾
[0120] 一些實施例使用MC地址過濾將在主機裝置上執(zhí)行的非VM數(shù)據(jù)可尋址節(jié)點的數(shù) 據(jù)通信量路由到隊列的不同池和池內(nèi)的不同隊列。例如,一些實施例的方法監(jiān)控通過主機 裝置的物理NIC的非VM可尋址節(jié)點(例如,數(shù)據(jù)端節(jié)點)集合的數(shù)據(jù)通信量?;谠摫O(jiān)控, 該方法指定至少用于非VM可尋址節(jié)點集合的池,并且將隊列集合分派給該池。該方法接著 使用目的地或源MAC過濾將用于非VM可尋址節(jié)點集合的由主機裝置接收或發(fā)送的數(shù)據(jù)通 信量引導(dǎo)到分派的隊列集合。
[0121] 可替選地或者可結(jié)合地,基于該監(jiān)控,該方法可改變被分派給用于非VM可尋址節(jié) 點集合的池的隊列集合。這種改變的示例包括當(dāng)池的一個或多個隊列被過度使用或未充分 使用時在池中添加隊列或者從池中去除隊列。在一些實施例中,該方法通過先占取另一個 池中的隊列(例如,通過使用上述先占取方法中的一種)在該池中添加隊列。
[0122] 另外,作為上述操作的替代或與上述操作結(jié)合,該方法可基于該監(jiān)控,將用于非VM 可尋址節(jié)點(例如,數(shù)據(jù)端節(jié)點)的數(shù)據(jù)通信量從該池中的第一隊列重新分派給該池中的 第二隊列。例如,基于該監(jiān)控,一些實施例的方法檢測通過第一隊列的用于非VM可尋址節(jié) 點的通信量降至通信量的最小閾值量以下(例如,在一段時間內(nèi))。因為這種未充分使用, 該方法將這個通信量切換至第二隊列。在進(jìn)行該切換之前,一些實施例的方法確定通過第 二隊列的通信量沒有超過通信量的最大閾值量。
[0123] 基于該監(jiān)控,一些實施例的方法檢測通過第一隊列的通信量超過通信量的最大閾 值量(例如,在一段時間內(nèi))。因為這種過度使用,該方法將用于非VM可尋址節(jié)點(例如, 數(shù)據(jù)端節(jié)點)的通信量從第一隊列切換至第二隊列。同樣,在進(jìn)行該切換之前,一些實施例 的方法確定通過第二隊列的通信量沒有超過通信量的最大閾值量。
[0124] 圖13示出一些實施例的隊列管理系統(tǒng)1300,隊列管理系統(tǒng)1300使用MAC地址過 濾將在主機裝置上執(zhí)行的VM和非VM數(shù)據(jù)可尋址節(jié)點的數(shù)據(jù)通信量路由到隊列的不同池和 池內(nèi)的不同隊列。這個系統(tǒng)類似于圖5的系統(tǒng)500,不同的是,系統(tǒng)500只管理進(jìn)出VM端節(jié) 點的通信量,而系統(tǒng)1300管理進(jìn)出VM和非VM可尋址節(jié)點(例如,iSCSI(內(nèi)部小型計算機 系統(tǒng)接口)安裝器1305、NFS(網(wǎng)絡(luò)文檔存儲)安裝器1307和VM遷移器1309)的通信量。 系統(tǒng)1300將隊列分成不同優(yōu)先級池,其中為特定類型的可尋址節(jié)點保留較高優(yōu)先級池。它 還動態(tài)地調(diào)節(jié)每個池中的隊列(即,動態(tài)地調(diào)節(jié)池的大小),并且基于一個或多個優(yōu)化標(biāo)準(zhǔn) (例如,與隊列的未充分使用或過度使用有關(guān)的標(biāo)準(zhǔn))將可尋址節(jié)點動態(tài)地重新分派給池 中的新隊列。
[0125] 圖13示出(1)在主機(未示出)上執(zhí)行的一些VM505,(2)兩個安裝的存儲卷1320 和1325,(3)VM遷移數(shù)據(jù)1330,(4)主機的由VM和非VM節(jié)點共用的物理NIC515,(5)有助 于通過共用的PNIC進(jìn)出VM的通信量的虛擬化層1307。如進(jìn)一步示出的,虛擬化層包括一 些非VM可尋址節(jié)點,例如iSCSI安裝器1305、NFS安裝器1307、VM遷移器1309。該層還包 括用于每個VM或非VM可尋址節(jié)點的網(wǎng)絡(luò)堆棧1311、1313、1315、1317或1319。虛擬化層還 包括軟件轉(zhuǎn)發(fā)元件535 (例如,軟件交換)、隊列選擇器518、動態(tài)負(fù)載均衡器555、統(tǒng)計信息 收集引擎540和統(tǒng)計信息存儲器545。
[0126] 在一些實施例中,圖13的PNIC515等同于圖5的上述PNIC515。如以上提到的, PNIC具有用于從有線或無線鏈接接收輸入數(shù)據(jù)包的接收側(cè)(RX)處理引擎51URX處理引擎 具有MAC過濾器514,MAC過濾器514被配置成基于目的地MAC將每個(VM或非VM)可尋址 節(jié)點的傳入通信量與一個隊列對關(guān)聯(lián)。虛擬化層保持用于傳出數(shù)據(jù)包的類似的過濾器516, 并且該層中的隊列選擇器518使用該過濾器中的數(shù)據(jù)配置每個可尋址節(jié)點的傳出通信量, 以使用與傳入通信量相同的隊列對。在一些實施例中,過濾器516依據(jù)VM的源MC地址或 VM的VNIC的源MAC地址來指定可尋址節(jié)點,而在其它實施例中,它依據(jù)VM的VNIC所連接 的軟件轉(zhuǎn)發(fā)元件的端口ID來指定VM。因為圖13的PNIC515等同于圖5的PNIC515,所以 為了不用不必要細(xì)節(jié)模糊對圖13的描述,將不對圖13的PNIC515進(jìn)行進(jìn)一步描述。
[0127]VM和非VM可尋址節(jié)點在超級監(jiān)督者(未示出)之上執(zhí)行,在一些實施例中,超級 監(jiān)督者包括虛擬化層1310。VM和非VM可尋址節(jié)點可以是用于通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包的 源端節(jié)點和目的地端節(jié)點。如以上提到的,這些節(jié)點包括VM505、卷安裝器1305和1307和 VM遷移器1309。iSCSI安裝器1305將存儲卷1320安裝在主機上。該存儲卷1320是通過 iSCSI協(xié)議可訪問的外部存儲器(即,例如存儲器服務(wù)器的主機外部的存儲器)的一些或 全部。類似地,NFS安裝器1307將存儲卷1325安裝在主機上。該存儲卷1325是通過NFS 協(xié)議可訪問的外部存儲器(例如,存儲服務(wù)器)的一些或全部。接著,在主機或其它裝置上 執(zhí)行的模塊(例如,VM)可訪問安裝的卷,就好像外部存儲器駐留在主機中一樣。VM遷移器 1309收集關(guān)于在主機上執(zhí)行的每個VM的數(shù)據(jù),以有助于VM從一個主機在線遷移到另一個。 這種VM遷移器的一個示例是在VMware公司的ESX超級監(jiān)督者中使用的vMotion模塊。
[0128] 每個可尋址節(jié)點通過網(wǎng)絡(luò)堆棧和轉(zhuǎn)發(fā)元件的端口(未示出)連接到軟件轉(zhuǎn)發(fā)元件 535。在一些實施例中,每個VM的網(wǎng)絡(luò)堆棧包括VNIC仿真器527和I/O鏈529,并且由接 收/發(fā)送線程531管理,如以上參照圖5描述的。在一些實施例中,每個非VM可尋址節(jié)點 的網(wǎng)絡(luò)堆棧包括超級監(jiān)督者內(nèi)核網(wǎng)絡(luò)接口和接收/發(fā)送線程。在一些實施例中,每個非VM 可尋址節(jié)點的超級監(jiān)督者內(nèi)核網(wǎng)絡(luò)接口(例如,VMware公司的vmknic)包括用于處理由非 VM可尋址節(jié)點接收和由非VM可尋址節(jié)點發(fā)送的TCP/IP數(shù)據(jù)包的TCP/IP堆棧。例如,在一 些實施例中,每個非VM可尋址節(jié)點的網(wǎng)絡(luò)(1)將TCP/IP數(shù)據(jù)包頭部附于它從其對應(yīng)的安 裝卷1320/1325或遷移數(shù)據(jù)存儲器1330發(fā)送的數(shù)據(jù)包,(2)從它接收的用于存儲在其對應(yīng) 的安裝卷或遷移數(shù)據(jù)存儲器中的數(shù)據(jù)包中去除TCP/IP數(shù)據(jù)包頭部。
[0129] 在一些實施例中,非VM可尋址節(jié)點(例如,VM遷移器1309)的超級監(jiān)督者內(nèi)核網(wǎng) 絡(luò)接口不包括TCP/IP堆棧,而是包括其它數(shù)據(jù)包處理模塊,例如RDM(遠(yuǎn)程直接存儲器訪 問)數(shù)據(jù)包處理模塊。另外,在一些實施例中,非VM可尋址節(jié)點的網(wǎng)絡(luò)堆棧包括其它I/O 鏈模塊,這些I/O鏈模塊用于對由它們對應(yīng)的卷或數(shù)據(jù)存儲器發(fā)送和接收的數(shù)據(jù)包執(zhí)行其 它變換操作。類似于圖5的接收/發(fā)送線程531,每個非VM可尋址節(jié)點的網(wǎng)絡(luò)堆棧的接收 /發(fā)送線程管理網(wǎng)絡(luò)堆棧中的模塊,與和堆棧的非VM可尋址節(jié)點關(guān)聯(lián)的PNIC隊列517交 互,并且收集關(guān)于其堆棧的模塊的操作的統(tǒng)計信息。
[0130] 如以上提到的,虛擬化層還包括統(tǒng)計信息收集引擎540、統(tǒng)計信息存儲器545和動 態(tài)負(fù)載均衡器555。統(tǒng)計信息收集引擎540、負(fù)載均衡器555和RX/TX線程(未示出)部分 地形成一些實施例的隊列管理系統(tǒng)。由統(tǒng)計信息收集引擎540收集的統(tǒng)計信息向負(fù)載均衡 器提供為確定何時將隊列分派給池以及何時調(diào)節(jié)池所需的信息。
[0131] 在不同實施例中,統(tǒng)計信息收集引擎從不同源中得到統(tǒng)計信息。例如,在一些實施 例中,該統(tǒng)計信息收集引擎從任一CPU調(diào)度器525 (針對CPU使用率)和RX/TX線程(針對 網(wǎng)絡(luò)通信量)拉取統(tǒng)計信息或者從任一CPU調(diào)度器525 (針對CPU使用率)和RX/TX線程 (針對網(wǎng)絡(luò)通信量)接收被推送的統(tǒng)計信息。對于網(wǎng)絡(luò)通信量,虛擬化層使得從各種源收集 統(tǒng)計信息(例如,吞吐量、數(shù)據(jù)包比率、丟包率等),所述各種源包括網(wǎng)絡(luò)堆棧的每層(即,由 RX/TX線程管理的每個模塊)。
[0132] 在一些實施例中,統(tǒng)計信息收集引擎收集負(fù)載均衡器的以下網(wǎng)絡(luò)統(tǒng)計信息:PNIC 數(shù)據(jù)包比率、PNIC吞吐量和每個RX/TX線程的CPU使用率。在一些實施例中,CPU調(diào)度器 525更新CPU使用率數(shù)據(jù),而RX/TX線程更新PNIC數(shù)據(jù)包比率和吞吐量,因為它們是實際上 與PNIC通信并且具有精確計數(shù)的線程。在一些實施例中,PNIC驅(qū)動器模塊處于隊列選擇 器以下,并且該PNIC驅(qū)動器是與PNIC通信并且更新PNIC負(fù)載統(tǒng)計信息的模塊。另外,在 一些實施例中,統(tǒng)計信息收集引擎不僅收集負(fù)載均衡器的PNIC統(tǒng)計信息,而且還收集非VM 可尋址節(jié)點采集的一個或多個VNIC統(tǒng)計信息。
[0133] 通過依靠VNIC統(tǒng)計信息,負(fù)載均衡器可決定,當(dāng)對延遲敏感的(VM或非VM)可尋 址節(jié)點的數(shù)據(jù)包比率在某個閾值以上、或者它由于與其共用同一隊列的一個或多個其它節(jié) 點的吞吐量而受損害時,將它移到獨有隊列或更高優(yōu)先級池。更一般地,負(fù)載均衡器555使 用收集到的統(tǒng)計信息來確定將哪個隊列分派給哪個可尋址節(jié)點,何時將隊列動態(tài)地分派給 池以及何時動態(tài)地調(diào)節(jié)池。
[0134] 在一些實施例中,負(fù)載均衡器周期性地(例如,每隔幾秒、幾毫秒、幾微秒等)運 行負(fù)載均衡處理。該處理從統(tǒng)計信息收集引擎保持的"負(fù)載統(tǒng)計信息"數(shù)據(jù)存儲器545檢 索統(tǒng)計信息,并且基于這些統(tǒng)計信息,確定是否需要將可尋址節(jié)點分派給隊列,調(diào)整池的大 小,和/或先占取隊列。負(fù)載均衡器通過配置PNIC和虛擬化層的過濾器以將特定隊列標(biāo)識 符與用于輸出通信量的特定源MAC地址和用于輸入通信量的特定目的地MAC關(guān)聯(lián)來將節(jié)點 分派給隊列。為了配置PNIC的MAC過濾器,負(fù)載均衡器使用PNIC驅(qū)動器的API來對過濾 器和各隊列的硬件特征進(jìn)行編程。
[0135] 如圖13中所示,負(fù)載均衡器具有三個模塊,S卩,池561、隊列均衡器559和池均衡器 557。這些池是負(fù)載均衡器定義的PNIC隊列的軟件抽象分組。負(fù)載均衡器應(yīng)用不同處理來 管理不同"池"中的隊列。如此,每個池可被視為具有相同"特征"的隊列集合,其中,特征 類似于硬件特征(類似RSS/LRO)。這種特征的示例包括VM要求(例如,低延遲或低中斷比 率)。
[0136] 通過應(yīng)用不同處理來管理不同池中的隊列,負(fù)載均衡器可針對不同池不同地優(yōu)化 隊列的分配和池大小的調(diào)整。池重新均衡器557基于池的資源分配標(biāo)準(zhǔn)調(diào)整每個池的大小 并且在需要時先占取其它池中的隊列。這種資源分配標(biāo)準(zhǔn)的示例包括池中隊列的最大/最 小數(shù)量、池的總CPU使用率、池的網(wǎng)絡(luò)通信量、池的服務(wù)質(zhì)量(QoS)約束等。隊列重新均衡 器559基于池的重新均衡標(biāo)準(zhǔn),重新均衡同一池中的隊列。這種池重新均衡標(biāo)準(zhǔn)的示例包 括將可尋址節(jié)點填充盡可能少的隊列(例如,針對HLT池),跨盡可能多的隊列分配可尋址 節(jié)點(例如,針對LLR池)等。在一些實施例中,負(fù)載均衡器555通過使用類似于以上參照 圖6至圖9的上述處理的處理,管理PNIC隊列來處理VM和非VM可尋址節(jié)點。在這些實施 例中的一些實施例中,這些處理僅被修改為不僅監(jiān)控和管理VM通信量而且監(jiān)控和管理進(jìn) 出非VM可尋址節(jié)點的通信量(例如,進(jìn)出安裝器1305和1307和遷移器1309的通信量)。
[0137] B.用于區(qū)分不同類型的數(shù)據(jù)包的替代過濾
[0138] 作為MAC地址過濾的替代,一些實施例使用其它過濾技術(shù)以不同方式處理不同類 型的數(shù)據(jù)包,以便例如為不同的數(shù)據(jù)包類型集合定義不同的池,以不同方式管理每個池,動 態(tài)地改變池內(nèi)的隊列,以及動態(tài)地重新分派不同類型的數(shù)據(jù)通信量。例如,基于非MC數(shù)據(jù) 包標(biāo)識符,一些實施例的方法識別和監(jiān)控通過主機裝置的NIC的第一類型的數(shù)據(jù)通信量。 基于該監(jiān)控,該方法指定用于第一類型的數(shù)據(jù)通信量的池,將隊列集合分派給該池。該方法 接著使用非MC地址過濾將第一類型的數(shù)據(jù)通信量引導(dǎo)到所分派的隊列集合。
[0139] 可替選地或者可結(jié)合地,基于該監(jiān)控,該方法可改變分派給通過非MAC數(shù)據(jù)包標(biāo) 識符識別的用于第一類型的數(shù)據(jù)通信量的池的隊列集合。這種改變的示例包括當(dāng)該池的一 個或多個隊列被過度使用或未充分使用時在該池中添加或去除隊列。在一些實施例中,該 方法通過先占取另一個池中的隊列(例如,通過使用上述先占取方法中的一種)在該池中 添加隊列。
[0140]另外,作為上述操作的替代或與上述操作結(jié)合,該方法可基于該監(jiān)控,將第一類型 的數(shù)據(jù)通信量從該池中的第一隊列重新分派給該池中的第二隊列。例如,基于該監(jiān)控,一些 實施例的方法檢測通過第一隊列的第一類型的數(shù)據(jù)通信量降至通信量的最小閾值量以下 (例如,在一段時間內(nèi))?;谶@種未充分使用,該方法將這個通信量切換至第二隊列。在 進(jìn)行該切換之前,一些實施例的方法確定通過第二隊列的通信量沒有超過通信量的最大閾 值量。
[0141] 可替選地,基于該監(jiān)控,一些實施例的方法可檢測通過第一隊列的第一類型的數(shù) 據(jù)通信量超過通信量的最大閾值量(例如,在一段時間內(nèi))。因為這種過度使用,該方法將 第一類型的數(shù)據(jù)通信量從第一隊列切換至第二隊列。同樣,在進(jìn)行該切換之前,一些實施例 的方法確定通過第二隊列的通信量沒有超過通信量的最大閾值量。
[0142] 不同的實施例使用不同的非MC過濾。一些實施例使用數(shù)據(jù)包頭部數(shù)據(jù)將數(shù)據(jù)包 有效載荷歸類為多種類型中的一種。例如,一些實施例使用L3和L4數(shù)據(jù)包頭部中的五元組 IP數(shù)據(jù)對數(shù)據(jù)包有效載荷進(jìn)行歸類。五元組數(shù)據(jù)包括源端口標(biāo)識符、目的地端口標(biāo)識符、源 IP地址、目的地IP地址和協(xié)議。使用這五個標(biāo)識符,一些實施例的過濾器可將IP數(shù)據(jù)包指 定為任何數(shù)量的不同類型,例如VOIP數(shù)據(jù)包、視頻數(shù)據(jù)包、音頻數(shù)據(jù)包、FTP數(shù)據(jù)包、HTTP數(shù) 據(jù)包、!1111^數(shù)據(jù)包、遠(yuǎn)程桌面數(shù)據(jù)包(?&)1?、¥從:、1?朽、管理數(shù)據(jù)包(認(rèn)證、服務(wù)器健康監(jiān) 控、時間同步)、電子郵件數(shù)據(jù)包(P〇P3、SMTP)等。由于這些協(xié)議全都具有不同的通信模式, 因此一些實施例將其中的一個或多個分成隊列的不同池,并且使用不同的優(yōu)化標(biāo)準(zhǔn)將數(shù)據(jù) 通信量分配到每個池中的隊列。
[0143] 以下提供的列表示出可以如何使用五元組來通過使用下面的標(biāo)志區(qū)分網(wǎng)絡(luò)通信 量、VoIP、視頻流、遠(yuǎn)程桌面、管理、電子郵件:協(xié)議-src_ip-dst_ip-src_port-dest_port, 其中,*表示通配符匹配。在這個列表中,假設(shè)VM是請求服務(wù)/數(shù)據(jù)/來自服務(wù)器的服務(wù) 的客戶端。
[0144] ?網(wǎng)絡(luò):TCP-*-*-*-80/443 (80 是針對HTTP并且 443 是針對HTTPS)
[0145].VoIP(Skype) :TCP/UDP-*-*-23399_* 或TCP/UDP-*-*-*-23399 (傳入和傳出通信 量)
[0146] ?視頻流(MMS) :TCP/UDP-*-*-*-1755
[0147] ?遠(yuǎn)程桌面(PCoIP) :TCP/UDP-*-*-*-4172
[0148] ?認(rèn)證(Kerberos) :TCP/UDP-*-*-*_88
[0149] ?電子郵件(POP3) :TCP-*-*-*-110
[0150] 圖14和圖15圖示示出了一些實施例使用五元組過濾器區(qū)分在視頻呈現(xiàn)期間由虛 擬機發(fā)送或接收的VOIP和視頻數(shù)據(jù)包的示例。圖14示出使用五元組區(qū)分由VM1405正在 發(fā)送的VOIP和視頻數(shù)據(jù)包的情況。在這個示例中,動態(tài)負(fù)載均衡器555在隊列選擇器518 中設(shè)置一組五元組過濾器1410,以將VOIP數(shù)據(jù)包從VM1405路由到高優(yōu)先級隊列池1420, 同時設(shè)置另一組五元組過濾器,以將視頻數(shù)據(jù)包從這個VM路由到低優(yōu)先級隊列池1425。
[0151] 圖15示出使用五元組區(qū)分由VM1405正在接收的VOIP和視頻數(shù)據(jù)包的情況。在 這個示例中,動態(tài)負(fù)載均衡器555在PNIC515的RX處理引擎511中設(shè)置一組五元組過濾 器1510,以將傳入的VOIP數(shù)據(jù)包(針對VM1405)發(fā)送到高優(yōu)先級隊列池1420,同時設(shè)置 另一組五元組過濾器1510,以將傳入的視頻數(shù)據(jù)包(針對VM1405)發(fā)送到低優(yōu)先級隊列池 1425。
[0152] 負(fù)載均衡器555設(shè)置五元組過濾器,以便將隊列分組成池,然后它基于不同標(biāo)準(zhǔn) 來管理該池。具體地講,通過依靠統(tǒng)計信息存儲器545中收集的統(tǒng)計信息,負(fù)載均衡器555 可確定將哪個可尋址節(jié)點分派給哪個隊列,何時將隊列動態(tài)地分派給池,何時從池中動態(tài) 地去除隊列,何時將可尋址節(jié)點動態(tài)地重新分派給新隊列。
[0153] 在一些實施例中,負(fù)載均衡器周期性地(例如,每隔幾秒、幾毫秒、幾微秒等)運行 負(fù)載均衡處理。這個處理從統(tǒng)計信息收集引擎保持的"負(fù)載統(tǒng)計信息"數(shù)據(jù)存儲器545檢 索統(tǒng)計信息,并且基于這些統(tǒng)計信息,確定是否需要將可尋址節(jié)點分派給隊列、調(diào)整池的大 小、和/或先占取隊列。負(fù)載均衡器通過配置PNIC和虛擬化層的五元組過濾器以將特定隊 列標(biāo)識符與特定五元組過濾器關(guān)聯(lián)來將節(jié)點分派給隊列。為了配置PNIC的過濾器,負(fù)載均 衡器使用PNIC驅(qū)動器的API來對過濾器和各隊列的硬件特征進(jìn)行編程。
[0154] 如以上參考圖5和圖13描述的,在一些實施例中,圖14和圖15的虛擬化層中的 負(fù)載均衡器555具有三個模塊(未示出)。這三個模塊是(1)存儲器,該存儲器存儲各個 池、其相關(guān)隊列的標(biāo)識符、與每個隊列關(guān)聯(lián)的可尋址節(jié)點,(2)隊列均衡器,(3)池均衡器。
[0155] 圖14和圖15的負(fù)載均衡器555應(yīng)用不同處理來管理不同"池"中的隊列。如此, 每個池可被視為具有相同"特征"的一組隊列。通過應(yīng)用不同處理來管理不同池中的隊列, 負(fù)載均衡器可針對不同池不同地優(yōu)化隊列的分配和池大小的調(diào)整。池重新均衡器基于池的 資源分配標(biāo)準(zhǔn)調(diào)整每個池的大小,并且在需要時先占取其它池中的隊列。以上提供了這種 資源分配標(biāo)準(zhǔn)的示例(例如,池中隊列的最大/最小數(shù)量、池的總CPU使用率、池的網(wǎng)絡(luò)通 信量、池的服務(wù)質(zhì)量(QoS)約束等)。
[0156] 隊列重新均衡器基于池的重新均衡標(biāo)準(zhǔn),重新均衡同一池中的隊列,例如將可尋 址節(jié)點填充盡可能少的隊列(例如,針對HLT池),跨盡可能多的隊列分配可尋址節(jié)點(例 如,針對LLR池)等。在一些實施例中,圖14和圖15的負(fù)載均衡器555通過使用類似于以 上參照圖6至圖9的上述處理的處理,管理PNIC隊列來處理VM和非VM可尋址節(jié)點。在這 些實施例中的一些實施例中,這些處理僅被修改為不僅監(jiān)控和管理VM通信量而且監(jiān)控和 管理進(jìn)出非VM可尋址節(jié)點的通信量。
[0157]V.電子系統(tǒng)
[0158] 上述特征和應(yīng)用中的一些被實現(xiàn)為被指定為在計算機可讀存儲介質(zhì)(也被稱為 計算機可讀介質(zhì))上記錄的一組指令的軟件處理。當(dāng)這些指令由一個或多個處理單元(例 如,一個或多個處理器、處理器的核或其它處理單元)執(zhí)行時,它們使得處理單元執(zhí)行指令 中指示的動作。計算機可讀介質(zhì)的示例包括但不限于CD-ROM、閃存驅(qū)動器、RAM芯片、硬驅(qū) 動器、EPROM等。計算機可讀介質(zhì)不包括無線地或者通過有線連接傳遞的載波和電子信號。
[0159] 在本說明書中,術(shù)語"軟件"意指包括可被讀入存儲器中供處理器處理的、存在于 只讀存儲器中的固件或存儲在磁存儲器中的應(yīng)用。另外,在一些實施例中,多個軟件發(fā)明可 在保持不同的軟件發(fā)明的同時被實現(xiàn)為較大程序的子部分。在一些實施例中,多個軟件發(fā) 明還可被實現(xiàn)為單獨的程序。最終,一起實現(xiàn)本文描述的處理的單獨程序的任何組合在本 發(fā)明的范圍內(nèi)。在一些實施例中,程序當(dāng)被安裝以在一個或多個電子系統(tǒng)上操作時定義一 個或多個特定機器實現(xiàn)方式,這些實現(xiàn)方式執(zhí)行和運行軟件程序的操作。
[0160] 圖16概念性地示出用來實現(xiàn)本發(fā)明的一些實施例的電子系統(tǒng)1600。電子系統(tǒng) 1600可以是上述主機裝置中的任一個。這個系統(tǒng)可以是執(zhí)行上述處理和/或隊列管理系統(tǒng) 中的任一個的任何裝置。電子系統(tǒng)1600可以是計算機(例如,臺式計算機、個人計算機、平 板計算機、服務(wù)器計算機、大型機、刀片計算機等)、電話、PDA或任何其它類型的電子裝置。 這種電子系統(tǒng)包括各種類型的計算機可讀介質(zhì)和用于各種其它類型的計算機可讀介質(zhì)的 接口。電子系統(tǒng)1600包括總線1605、處理單元1610、系統(tǒng)貯存器1625、只讀貯存器1630、 永久存儲裝置1635、輸入裝置1640和輸出裝置1645。
[0161] 總線1605共同地代表所有以通信方式連接電子系統(tǒng)1600的眾多內(nèi)部裝置的系統(tǒng) 總線、外圍設(shè)備總線和芯片組總線。例如,總線1605將處理單元1610與只讀貯存器1630、 系統(tǒng)貯存器1625和永久存儲裝置1635通信地連接。
[0162] 從這些各種貯存器單元,處理單元1610獲取要執(zhí)行的指令和要處理的數(shù)據(jù),以執(zhí) 行本發(fā)明的處理。在不同的實施例中,處理單元可以是單個處理器或多核處理器。
[0163] 只讀貯存器(ROM) 1630存儲電子系統(tǒng)的處理單元1610和其它模塊所需的統(tǒng)計信 息數(shù)據(jù)和指令。另一方面,永久存儲裝置1635是讀寫貯存器裝置。這個裝置是非易失性貯 存器單元,即使當(dāng)電子系統(tǒng)1600關(guān)閉時也存儲指令和數(shù)據(jù)。本發(fā)明的一些實施例使用大容 量存儲裝置(例如,磁盤或光盤及其對應(yīng)的盤驅(qū)動器)作為永久存儲裝置1635。
[0164] 其它實施例使用可移動存儲裝置(例如,軟盤、閃存驅(qū)動器等)作為永久存儲裝 置。類似于永久存儲裝置1635,系統(tǒng)貯存器1625是讀寫貯存器裝置。然而,不同于存儲裝 置1635,系統(tǒng)貯存器是易失性讀寫貯存器,例如隨機存取貯存器。系統(tǒng)貯存器存儲處理器 在運行時需要的指令和數(shù)據(jù)中的一些。在一些實施例中,本發(fā)明的處理被存儲在系統(tǒng)貯存 器1625、永久存儲裝置1635和/或只讀貯存器1630中。從這些各種貯存器單元,處理單元 1610獲取要執(zhí)行的指令和要處理的數(shù)據(jù),以執(zhí)行一些實施例的處理。
[0165] 總線1605還連接到輸入裝置1640和輸出裝置1645。輸入裝置使用戶能夠傳送信 息并且選擇針對電子系統(tǒng)的命令。輸入裝置1640包括字母數(shù)字鍵盤和指點裝置(也被稱 為"光標(biāo)控制裝置")。輸出裝置1645顯示電子系統(tǒng)產(chǎn)生的圖像。輸出裝置包括打印機和 顯示裝置,例如陰極射線管(CRT)或液晶顯示器(LCD)。一些實施例包括諸如同時用作輸入 裝置和輸出裝置的觸摸屏的裝置。
[0166] 最后,如圖16中所示,總線1605還通過網(wǎng)絡(luò)適配器(未示出)將電子系統(tǒng)1600 連接到網(wǎng)絡(luò)1665。以此方式,計算機可以成為計算機網(wǎng)絡(luò)(例如,局域網(wǎng)(LAN))、廣域網(wǎng) (WAN)、或以太網(wǎng)、或諸如因特網(wǎng)的網(wǎng)絡(luò)中的網(wǎng)絡(luò)的部分。電子系統(tǒng)1600的任何或所有組件 可與本發(fā)明結(jié)合使用。
[0167] 一些實施例包括電子組件,例如將計算機程序指令存儲在機器可讀或計算機可讀 介質(zhì)(可替選地,被稱為計算機可讀存儲介質(zhì)、機器可讀介質(zhì)、或機器可讀存儲介質(zhì))中 的微處理器、存儲器和貯存器。這種計算機可讀介質(zhì)的一些示例包括RAM、ROM、只讀光盤 (CD-ROM)、可記錄光盤(CD-R)、可重寫光盤(CD-RW)、只讀數(shù)字通用盤(例如,DVD-ROM、雙層 DVD-ROM)、各種可記錄/可重寫DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、閃存存儲器(例 如,SD卡、迷你SD卡、微型SD卡等)、磁和/或固態(tài)硬盤驅(qū)動器、只讀和可記錄Blu-Ray? 盤、超級密度光盤、任何其它光或磁介質(zhì)、軟盤。計算機可讀介質(zhì)可存儲能由至少一個處理 單元執(zhí)行的計算機程序并且包括用于執(zhí)行各種操作的一組指令。計算機程序或計算機代碼 的示例包括諸如由編譯器生成的機器代碼和包括由計算機、電子組件或微處理器使用解釋 器執(zhí)行的更高級代碼的文件。
[0168] 雖然以上討論主要指的是執(zhí)行軟件的微處理器或多核處理器,但一些實施例是由 一個或多個集成電路(例如,專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA))執(zhí)行的。 在一些實施例中,這種集成電路執(zhí)行存儲在電路本身中的指令。
[0169] 如本說明書中使用的,術(shù)語"計算機"、"服務(wù)器"、"處理器"和"貯存器"都是指電 子或其它技術(shù)裝置。這些術(shù)語不包括人或人的群組。出于說明書的目的,術(shù)語"顯示"意指 在電子裝置上顯示。如本說明書中使用的,術(shù)語"計算機可讀介質(zhì)"和"機器可讀介質(zhì)"完 全限于將信息以計算機可讀形式存儲的有形物理物體。這些術(shù)語不包括任何無線信號、有 線下載信號、任何其它短暫或瞬變信號。
[0170] 雖然已經(jīng)參照眾多具體細(xì)節(jié)描述了本發(fā)明,但本領(lǐng)域的普通技術(shù)人員將認(rèn)識到, 在不脫離本發(fā)明的精神的情況下,可以以其它具體形式實施本發(fā)明。另外,多個圖(包括圖 6至圖9)概念性地示出處理。這些處理的具體操作可以不按照示出和描述的準(zhǔn)確次序執(zhí) 行。具體操作可以不在連續(xù)一系列操作中執(zhí)行,不同具體操作可在不同實施例中執(zhí)行。此 夕卜,可使用多個子處理來實現(xiàn)處理,或者處理可被實現(xiàn)為更大宏處理的一部分。
【權(quán)利要求】
1. 一種為包括具有多個隊列的網(wǎng)絡(luò)接口卡NIC的電子裝置管理所述隊列的方法,所述 方法包括: 監(jiān)控進(jìn)出所述NIC的數(shù)據(jù)通信量; 基于所述監(jiān)控,指定池并且將隊列集合分派給所述池,所述池具有用于管理經(jīng)過所述 隊列集合的數(shù)據(jù)通信量的標(biāo)準(zhǔn)集合;以及 基于所述標(biāo)準(zhǔn)集合,引導(dǎo)所述數(shù)據(jù)通信量的子集到所述隊列集合。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述池是第一池,所述隊列集合是第一隊列集合, 所述標(biāo)準(zhǔn)集合是第一標(biāo)準(zhǔn)集合,并且所述數(shù)據(jù)通信量的子集是數(shù)據(jù)通信量的第一子集,所 述方法包括: 基于所述監(jiān)控,指定第二池并且將第二隊列集合分派給所述第二池,所述第二池具有 用于管理經(jīng)過所述第二隊列集合的數(shù)據(jù)通信量的第二標(biāo)準(zhǔn)集合;以及 基于所述第二標(biāo)準(zhǔn)集合,引導(dǎo)所述數(shù)據(jù)通信量的第二子集到所述第二隊列集合; 其中所述第一標(biāo)準(zhǔn)集合不同于所述第二標(biāo)準(zhǔn)集合。
3. 根據(jù)權(quán)利要求2所述的方法,其中每個特定池的標(biāo)準(zhǔn)集合指定經(jīng)過所述特定池的每 個隊列的數(shù)據(jù)通信量的最大閾值量,其中所述第一標(biāo)準(zhǔn)集合指定與所述第二標(biāo)準(zhǔn)集合不同 的最大閾值。
4. 根據(jù)權(quán)利要求3所述的方法,還包括:當(dāng)至少經(jīng)過所述特定池中的隊列的子集的數(shù) 據(jù)通信量超過所述最大閾值量時,將新隊列分派給特定池的隊列集合。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述特定池的隊列的子集包括所述特定池的隊列 集合中的所有隊列。
6. 根據(jù)權(quán)利要求4所述的方法,其中所述特定池的隊列的子集不包括所述特定池的隊 列集合中的所有隊列。
7. 根據(jù)權(quán)利要求2所述的方法,其中特定池的每個標(biāo)準(zhǔn)集合指定經(jīng)過所述特定池的每 個隊列的數(shù)據(jù)通信量的最小閾值量,其中所述第一標(biāo)準(zhǔn)集合指定與所述第二標(biāo)準(zhǔn)集合不同 的最小閾值。
8. 根據(jù)權(quán)利要求7所述的方法,還包括:當(dāng)經(jīng)過特定隊列的數(shù)據(jù)通信量在所述最小閾 值量以下持續(xù)一段時間時,從特定池的隊列集合中去除該特定隊列。
9. 根據(jù)權(quán)利要求2所述的方法,其中: 特定池的每個標(biāo)準(zhǔn)集合指定經(jīng)過所述特定池的每個隊列的數(shù)據(jù)通信量的閾值量, 所述第一標(biāo)準(zhǔn)集合指定最大閾值量而不指定最小閾值量,而所述第二標(biāo)準(zhǔn)集合指定最 小閾值量而不指定最大閾值量。
10. 根據(jù)權(quán)利要求1所述的方法,其中監(jiān)控數(shù)據(jù)通信量包括監(jiān)控與在所述電子裝置上 執(zhí)行的可尋址節(jié)點關(guān)聯(lián)的數(shù)據(jù)通信量。
11. 根據(jù)權(quán)利要求1所述的方法,其中所述隊列集合只包括一個隊列。
12. 根據(jù)權(quán)利要求1所述的方法,其中所述隊列集合包括一個以上隊列。
13. 根據(jù)權(quán)利要求1所述的方法,其中引導(dǎo)數(shù)據(jù)通信量的子集包括指定所述NIC中的過 濾器集合以經(jīng)過所述隊列集合路由所述數(shù)據(jù)通信量的子集。
14. 根據(jù)權(quán)利要求13所述的方法,其中所述過濾器集合將所述數(shù)據(jù)通信量的子集經(jīng)過 所述隊列集合路由到在所述電子裝置上執(zhí)行的可尋址目的地節(jié)點集合。
15. 根據(jù)權(quán)利要求1所述的方法,其中引導(dǎo)數(shù)據(jù)通信量的子集包括指定過濾器集合,所 述過濾器集合將所述數(shù)據(jù)通信量的子集經(jīng)過所述隊列集合從在所述電子裝置上執(zhí)行的可 尋址源節(jié)點集合路由到所述電子裝置之外。
16. 根據(jù)權(quán)利要求15所述的方法,其中所述過濾器集合被限定在與多個可尋址源節(jié)點 共用所述電子裝置上的網(wǎng)絡(luò)連網(wǎng)資源集合的網(wǎng)絡(luò)層中。
17. 根據(jù)權(quán)利要求15所述的方法,其中所述過濾器集合被限定在與在所述電子裝置上 執(zhí)行的多個可尋址節(jié)點共用所述電子裝置上的連網(wǎng)資源集合的網(wǎng)絡(luò)虛擬化層中。
18. 根據(jù)權(quán)利要求15所述的方法,其中所述監(jiān)控、指定和引導(dǎo)是由在多個不同虛擬模 塊之間共用所述電子裝置上的連網(wǎng)資源集合的網(wǎng)絡(luò)虛擬化層所執(zhí)行的操作,其中所述過濾 器集合被限定在所述網(wǎng)絡(luò)虛擬化層中,以將來自不同虛擬模塊的數(shù)據(jù)通信量分派給多個隊 列中的不同隊列。
19. 一種為包括具有多個隊列的網(wǎng)絡(luò)接口卡NIC的電子裝置管理所述隊列的方法,所 述方法包括: 指定包括至少第一隊列的默認(rèn)池; 將數(shù)據(jù)通信量集合分派給所述默認(rèn)池; 確定非默認(rèn)池應(yīng)該被指定用于處理所述數(shù)據(jù)通信量集合的第一子集; 指定所述非默認(rèn)池和針對所述非默認(rèn)池的第二隊列;以及 將所述數(shù)據(jù)通信量的子集分派給所述第二隊列。
20. 根據(jù)權(quán)利要求19所述的方法,還包括:監(jiān)控進(jìn)出所述NIC的數(shù)據(jù)通信量集合,其中 所述確定基于所述監(jiān)控。
21. 根據(jù)權(quán)利要求20所述的方法,還包括: 基于所述監(jiān)控,識別要分派給所述非默認(rèn)池的所述數(shù)據(jù)通信量集合的第二子集;以及 分派所述第二子集到所述非默認(rèn)池。
22. 根據(jù)權(quán)利要求21所述的方法,其中分派所述第二子集包括將所述第二子集分派給 所述第二隊列。
23. 根據(jù)權(quán)利要求21所述的方法,其中分派所述第二子集包括將所述第二子集分派給 被分派給所述非默認(rèn)池的第三隊列。
24. 根據(jù)權(quán)利要求20所述的方法,還包括: 監(jiān)控數(shù)據(jù)通信量的第一子集;以及 基于所述監(jiān)控,重新分派所述數(shù)據(jù)通信量的第一子集回到所述默認(rèn)池。
25. 根據(jù)權(quán)利要求24所述的方法,其中重新分派第一子集包括將所述第一子集重新分 派回到所述第一隊列。
26. 根據(jù)權(quán)利要求24所述的方法,其中重新分派所述第一子集包括將所述第一子集重 新分派回到被分派給所述默認(rèn)池的第三隊列。
27. 根據(jù)權(quán)利要求19所述的方法,其中不同池具有用于將數(shù)據(jù)通信量分派給池中的隊 列的不同標(biāo)準(zhǔn)集合。
28. 根據(jù)權(quán)利要求27所述的方法,其中不同池的各個標(biāo)準(zhǔn)集合的不同之處在于,指定 用于經(jīng)過特定池的每個隊列的數(shù)據(jù)通信量的不同的最大閾值量。
29. 根據(jù)權(quán)利要求27所述的方法,其中不同池的各個標(biāo)準(zhǔn)集合的不同之處在于,指定 用于經(jīng)過特定池的每個隊列的數(shù)據(jù)通信量的不同的最小閾值量。
30. 根據(jù)權(quán)利要求27所述的方法,其中不同池的各個標(biāo)準(zhǔn)集合的不同之處在于,指定 用于經(jīng)過特定池的每個隊列的數(shù)據(jù)通信量的不同的閾值量,其中一個池指定最大閾值而另 一個池指定最小閾值。
31. 根據(jù)權(quán)利要求19所述的方法,其中所述數(shù)據(jù)通信量集合包括與在所述電子裝置上 執(zhí)行的可尋址節(jié)點關(guān)聯(lián)的數(shù)據(jù)通信量。
32. 根據(jù)權(quán)利要求31所述的方法,其中所述可尋址節(jié)點包括虛擬機VM、存儲卷安裝器 和VM遷移器中的至少一個。
33. -種管理執(zhí)行多個虛擬機VM的主機的網(wǎng)絡(luò)接口中的多個隊列的方法,所述方法包 括: 指定第一池和第二池,所述第一池和第二池定義所述隊列的至少一個子集的第一分組 和第二分組; 基于第一標(biāo)準(zhǔn)集合,指定第一 VM集合到所述第一池中的隊列的分配;以及 基于第二標(biāo)準(zhǔn)集合,指定第二VM集合到所述第二池中的隊列的分配,其中所述第一標(biāo) 準(zhǔn)集合和所述第二標(biāo)準(zhǔn)集合不同。
34. 根據(jù)權(quán)利要求33所述的方法, 其中指定所述第一 VM集合的分配包括使用第一處理集合來指定該分配; 其中指定所述第二VM集合的分配包括使用第二處理集合來指定該分配,其中所述第 一處理集合和第二處理集合是不同的處理。
【文檔編號】H04L12/863GK104426799SQ201410191336
【公開日】2015年3月18日 申請日期:2014年5月8日 優(yōu)先權(quán)日:2013年8月26日
【發(fā)明者】S·阿加瓦爾, L·辛格阿崴魯, A·維爾阿伊顏, C-C·陳 申請人:Vm維爾股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
岢岚县| 清远市| 上林县| 河源市| 特克斯县| 绥德县| 潍坊市| 盐津县| 永胜县| 琼中| 台南县| 敦煌市| 博乐市| 福贡县| 上思县| 志丹县| 长治市| 桓台县| 金山区| 合阳县| 谢通门县| 泾源县| 荥阳市| 哈密市| 阿瓦提县| 河曲县| 盐城市| 邵阳市| 长寿区| 巩留县| 龙里县| 南岸区| 资阳市| 屏山县| 齐河县| 尚义县| 博爱县| 高要市| 盐津县| 哈巴河县| 安庆市|