溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hyper-V 性能加速之VMQ

發(fā)布時間:2020-07-06 17:35:05 來源:網(wǎng)絡(luò) 閱讀:10002 作者:IT小匠Leo 欄目:系統(tǒng)運維


善假于“物”——網(wǎng)卡RSS技術(shù)


        在介紹VMQ之前,我們先來看看在傳統(tǒng)的物理服務(wù)器上,網(wǎng)卡是如何接收網(wǎng)絡(luò)數(shù)據(jù)的。在多核CPU出現(xiàn)的時候,因為網(wǎng)卡不支持將網(wǎng)絡(luò)流量中斷到多個邏輯核而是中斷到其中一個邏輯核進(jìn)行處理,這樣就造成CPU使用不平均以及降低了CPU處理網(wǎng)絡(luò)流量的效率,如圖1所示。

Hyper-V 性能加速之VMQ

圖1 網(wǎng)卡中斷一個CPU邏輯核接收數(shù)據(jù)

        而現(xiàn)在大部分的網(wǎng)卡都已經(jīng)支持接收端縮放(Receive SideScaling,以下簡稱為RSS),物理機(jī)網(wǎng)卡如果支持多個硬件接收隊列,則會將接收的數(shù)據(jù)分發(fā)到網(wǎng)卡的多個隊列里,在具備多核的物理服務(wù)器上,通過網(wǎng)卡的RSS技術(shù)將多個隊列中斷不同的CPU邏輯核來提高數(shù)據(jù)接收效率,如圖2所示。RSS技術(shù)的目的在于為隊列找到最佳的CPU邏輯核來平衡網(wǎng)絡(luò)的CPU開銷。

Hyper-V 性能加速之VMQ

圖2 RSS隊列中斷多個CPU邏輯核接收數(shù)據(jù)

 

Hyper-V虛機(jī)隊列的工作方式

        虛擬化環(huán)境的情況比物理環(huán)境要復(fù)雜些,其一是因為物理機(jī)網(wǎng)卡發(fā)生“形變”成虛擬交換機(jī)之后網(wǎng)卡喪失了RSS功能,其二是由于物理機(jī)上運行了若干臺虛機(jī),物理機(jī)和虛機(jī)通過相同的網(wǎng)卡接收數(shù)據(jù)包,所以需要尋求同等有效的方法來平衡網(wǎng)絡(luò)的CPU開銷,并同時保證虛機(jī)的網(wǎng)絡(luò)性能。VMQ技術(shù)因需而生,VMQ是一種特殊的隊列,采用和網(wǎng)卡硬件類似的隊列,并采用類似于RSS為隊列中斷不同的CPU邏輯核的機(jī)制。所不同的是,VMQ篩選和分配數(shù)據(jù)包與網(wǎng)卡硬件隊列的邏輯不一樣,在只有物理機(jī)的情況下,物理機(jī)的網(wǎng)卡只考慮物理機(jī)自己數(shù)據(jù)隊列,而在虛擬化環(huán)境中虛擬交換機(jī)不僅要平衡物理機(jī)的隊列還要照顧虛機(jī)的隊列。

        在介紹VMQ工作原理之前,我們先來了解虛擬交換機(jī)數(shù)據(jù)包的路由路徑,Hyper-V虛擬交換機(jī)存在兩種隊列—VMQ和默認(rèn)隊列。默認(rèn)隊列的數(shù)據(jù)先后通過虛擬交換機(jī)的路由、篩選、擴(kuò)展、訪問控制列表和轉(zhuǎn)發(fā)路徑,最后由虛機(jī)總線進(jìn)行數(shù)據(jù)分發(fā),如圖3所示。


Hyper-V 性能加速之VMQ

圖3 虛擬交換機(jī)數(shù)據(jù)轉(zhuǎn)發(fā)路徑

        VMQ隊列在分發(fā)數(shù)據(jù)給隊列之前先將虛機(jī)虛擬網(wǎng)卡的MAC地址收集起來,然后通過VMQ MAC篩選器為啟用了VMQ的虛機(jī)分配VMQ隊列,未啟用VMQ的虛機(jī)和不能匹配VMQ MAC篩選器的數(shù)據(jù)將繼續(xù)放置在默認(rèn)隊列里。VMQ隊列不像默認(rèn)隊列一樣通過完整的路由、篩選、擴(kuò)展、訪問控制列表和轉(zhuǎn)發(fā)路徑,而是“插隊”到擴(kuò)展通過更少的路由代碼發(fā)送數(shù)據(jù)給虛機(jī)總線,數(shù)據(jù)由虛機(jī)總線發(fā)送給虛擬網(wǎng)卡后,虛機(jī)使用虛擬RSS(vRSS)技術(shù)為虛擬網(wǎng)卡上的隊列中斷虛擬CPU,如圖4所示。


Hyper-V 性能加速之VMQ

圖4 VMQ隊列和默認(rèn)隊列

         從圖4中我們可以清楚地認(rèn)識到VMQ帶來的好處。如果虛機(jī)網(wǎng)卡屬性啟用了VMQ功能,虛擬交換機(jī)將繞過虛擬交換機(jī)層層路由代碼,如此一來可以保證數(shù)據(jù)能夠精確而快速地將轉(zhuǎn)發(fā)給虛機(jī),對比沒有VMQ的情況下,不但可以減少處理路由所需CPU資源占用,而且可以降低數(shù)據(jù)傳送的延遲。

        VMQ又有動態(tài)和靜態(tài)的區(qū)分,靜態(tài)VMQ指的是VMQ隊列和中斷的CPU邏輯核關(guān)聯(lián)關(guān)系是固定的。圖4是典型的靜態(tài)VMQ,網(wǎng)卡里給虛擬1分配的VMQ隊列和邏輯CPU1關(guān)聯(lián),給虛擬2分配的VMQ隊列和邏輯CPU2關(guān)聯(lián),在虛機(jī)1和虛機(jī)2整個生命周期內(nèi)不會改變,可以認(rèn)為虛機(jī)1的數(shù)據(jù)一直由邏輯CPU1處理,而虛機(jī)2的數(shù)據(jù)一直由邏輯CPU2處理。靜態(tài)VMQ在虛機(jī)關(guān)聯(lián)的CPU繁忙時可能會導(dǎo)致虛機(jī)網(wǎng)絡(luò)處理變慢,因此從WindowsServer 2012 R2開始引入了動態(tài)VMQ的機(jī)制,動態(tài)VMQ更加智能,顧名思義動態(tài)VMQ允許虛機(jī)網(wǎng)絡(luò)根據(jù)負(fù)載和其關(guān)聯(lián)的邏輯CPU進(jìn)行動態(tài)關(guān)聯(lián)調(diào)整。如圖5所示,當(dāng)邏輯CPU2處于相對空閑狀態(tài)時,虛機(jī)1和虛機(jī)2的VMQ隊列都關(guān)聯(lián)到邏輯CPU2。


Hyper-V 性能加速之VMQ

圖5 動態(tài)VMQ

         在了解VMQ和動態(tài)VMQ基本原理后,我們可以實際了解下網(wǎng)卡的RSS和虛擬網(wǎng)卡的vRSS默認(rèn)接收隊列數(shù)和默認(rèn)使用處理器數(shù)量信息,通過以下示例命令和結(jié)果可以顯示網(wǎng)卡的隊列數(shù)和使用的處理器數(shù),示例中的Ethernet4這塊網(wǎng)卡RSS默認(rèn)接收隊列數(shù)為8,默認(rèn)使用最多處理器數(shù)量為16。

PS C:\> Get-NetworkAdapterRss -Name  “Ethernet 4”


Name

: Ethernet  4

InterfaceDescription

: Intel Ethernet CNA X540-T2  #2

Enabled

: True

NumberOfReceiveQueues

: 8

Profile  

: NUMAStatic  

BaseProcessor:[Group:Number]  [Group:Number]  [Group:Number]  [Group:Number]

: 0

MaxProcessor:[Group:Number]【[][Group:Number]

: :

MaxProcessors 

: 16

        其中幾個重要的參數(shù)說明如下:

  • Enabled:啟用或者禁用RSS;

  • BaseProcessor:系統(tǒng)分配給網(wǎng)卡的最小處理器數(shù)量;[Group:Number] – 處理器組數(shù)量和處理器數(shù)量比。

  • MaxProcessor:分配給網(wǎng)卡的最大處理器數(shù)量;[Group:Number] - 處理器組數(shù)量和處理器數(shù)量比。

  • MaxProcessors:分配給網(wǎng)卡的處理器總數(shù)的最大值。

        我們可以通過Set-NetAdapter命令設(shè)置參與接收隊列數(shù)和RSS中斷的最大CPU數(shù)量,如下示例將網(wǎng)卡Ethernet4的RSS默認(rèn)接收隊列數(shù)為16。

PS C:\> Set-NetworkAdapterRss -Name  “Ethernet 4” -NumberOfReceiveQueues 16

Name

: Ethernet  4

InterfaceDescription

: Intel Ethernet CNA X540-T2  #2

Enabled

: True

NumberOfReceiveQueues

: 16

Profile  

: NUMAStatic  

BaseProcessor:[Group:Number]  [Group:Number]  [Group:Number]  [Group:Number]

: 0

MaxProcessor:[Group:Number]【[][Group:Number]

: :

MaxProcessors 

: 16

       虛機(jī)VMQ開啟關(guān)閉也比較簡單,默認(rèn)情況下,Hyper-V虛機(jī)會啟用VMQ功能。我們可以依據(jù)虛機(jī)是否需要VMQ和實際的網(wǎng)卡性能進(jìn)行開啟或者關(guān)閉。如果虛機(jī)過多而網(wǎng)卡的VMQ隊列又不足時,我們還可以適時為啟用了VMQ的虛機(jī)設(shè)置VMQ權(quán)重,權(quán)重高的虛機(jī)網(wǎng)絡(luò)數(shù)據(jù)將優(yōu)先置于VMQ隊列,反之亦然,默認(rèn)的VMQ權(quán)重是100,如下示例所示。

PS C:\> Set-NetworkAdapterRss -Name  “Ethernet 4” -NumberOfReceiveQueues 16

VMQWeight  : 100

        

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI