Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products

SR-IOV-nätverks-I/O-förbättring i en virtualiserad miljö i Windows Server 2012

Summary: Dells OS och programlösningar i Dell TechCenter – Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu m.m.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Det här inlägget skrevs ursprungligen av Abhijit Khande & Vineeth V Acharya från DELL Windows Engineering Team.

Kommentarer är välkomna! Kontakta WinServerBlogs@dell.com om du vill föreslå ett ämne eller lämna andra kommentarer.


Med operativsystemet Microsoft® Windows Server® 2012 Beta har Microsoft introducerat stöd för ett antal funktioner inom nätverksområdet. En sådan viktig och intressant egenskap är I/O-virtualisering med en rot (SR-IOV), som gör det möjligt för virtuella maskiner att dela en enda PCI-e-enhet. Det här inlägget ger en grundläggande översikt över SR-IOV i Windows Server 2012 Beta och hur det drastiskt minskar CPU-användningen i en virtualiserad miljö under nätverks-I/O.

SR-IOV-gränssnittet är ett tillägg till PCI Express (PCIe)-specifikationen. SR-IOV gör det möjligt för en enda PCIe-enhet, t.ex. ett nätverkskort, att tillhandahålla flera lätta hårdvaruytor på PCI-bussen och separat åtkomst till dess resurser bland de olika instanserna. Det uppnås genom användning av flera virtuella funktioner (VF) utöver den (vanliga) fysiska funktionen (PF). Eftersom både PCIe-enheten och plattformen är maskinvaruberoende måste de ha stöd för den här funktionen. 

Traditionellt tas ett paket som är avsett för den virtuella datorn emot av det fysiska nätverkskortet (med fysisk funktion) som finns i värdoperativsystemet. Det här paketet hanteras av NDIS-drivrutinsmodulen (Network Driver Interface Specification for NICs). Paketet tillhandahålls sedan till Hyper-V-växeln, som bearbetar paketet (till exempel routning, VLAN-filtrering) och vidarebefordrar paketet till den avsedda virtuella datorn via VMBus, som du ser i bild 1. Den omvända sökvägen följs när den virtuella datorn måste skicka ett paket.

 Med SR-IOV kan den virtuella maskinen använda en virtuell funktion (VF) för att skicka och ta emot paket direkt till det fysiska nätverkskortet och kringgå den traditionella sökvägen helt som visas i bild 1. Detta ökar inte bara nätverkets I/O utan minskar även omkostnaderna för värddatorns CPU.
SLN312240_en_US__1i_OSandApplications_Virtualized_Environment1_2012_N_V1
Figur 1: Datasökväg med och utan SR-IOV

Live Migration och SR-IOV

I Windows Server 2012 Beta kan direktmigrering utföras med SR-IOV som används av en virtuell dator. Om käll- och målsystemen stöder SR-IOV och målet har en tillgänglig VF använder den virtuella datorn den virtuella funktionen. Annars återgår den virtuella datorn till den traditionella sökvägen (VM-Bus).

Varje SR-IOV-kompatibelt nätverkskort exponerar ett fast antal virtuella funktioner, som kan erhållas genom att köra PowerShell-kommandot "Get-NetAdapterSriov".


Prestandaanalys

Vi utförde några tester i vårt labb för att jämföra prestandan med och utan SR-IOV. Testmiljön består av en testserver (där testerna körs) och en filserver. Testservern är en Dell PowerEdge™ R710 II med en Intel® X520 10 GB Ethernet-adapter och Windows Server 2012 Beta OS. Filservern är värd för flera SMB-resurser och är ansluten till testservern via ett 10 GB-nätverk via en Dell PowerConnect™ 8024-switch.

Vi samlade in prestandadata i termer av CPU som används av DPC:erna (Deferred Procedure Call) som schemalagts av de olika drivrutinsmodulerna som deltar i nätverksdataöverföringen. Dessa data samlades in både i gäst- och värdoperativsystemet, enligt beskrivningen i följande scenarier. Testservern har fyra identiska virtuella datorer med Windows Server 2012 Beta som gästoperativsystem. De fyra VM:arna är anslutna till 10 GB-nätverket via en virtuell växel. Denna testkonfiguration visas i figur 2.
SLN312240_en_US__2i_OSandApplications_Virtualized_Environment2_2012_N_V1
Figur 2: Testkonfiguration
Innan vi visar prestandadata är det viktigt att introducera en mycket kritisk parameter som används för denna testning. I den Microsoft Windows Det finns en systemmekanism som kallas Deferred Procedure Call (DPC), som gör det möjligt att utföra uppgifter med hög prioritet (t.ex. en Avbrottshanterare) för att skjuta upp obligatoriska men lägre prioriterade uppgifter för senare utförande. Detta gör att enhetsdrivrutiner och andra händelsekonsumenter på låg nivå kan utföra den högprioriterade delen av bearbetningen snabbt och schemalägga icke-kritisk ytterligare bearbetning för körning med lägre prioritet.


Scenario 1 – Prestanda resulterar i virtuell dator (gästoperativsystem):

Vi använde fyra virtuella datorer (VM) för det här scenariot (VM 1 till VM 4). Vi har aktiverat SR-IOV på VM 1 och VM 2 (genom att markera alternativet "Enable SR-IOV" i VM-inställningarna) och inaktiverat SR-IOV på VM 3 och VM 4 (genom att avmarkera samma alternativ). Därför använder VM 1 och VM 2 den virtuella funktionen (som exponeras av Intel-adaptern), medan VM 3 och VM 4 använder den syntetiska sökvägen (VMBus) för all nätverkskommunikation, som visas i bild 2.

Vi började kopiera data (med storleken 20 GB) från en enda SMB-resurs till de virtuella datorerna och samlade in systemets CPU-användningsloggar i gästoperativsystemet.
SLN312240_en_US__3i_OSandApplications_Virtualized_Environment3_2012_N_V1
Figur 3: DPC-CPU-användning i virtuella maskiner

I bild 3 hänvisar SR-IOV till den genomsnittliga DPC-CPU-användningen i VM-1 och VM-2 och icke-SR-IOV hänvisar till den genomsnittliga DPC-CPU-användningen i VM-3 och VM-4. Om vi tittar på diagrammet ser vi att det inte är så stor skillnad i CPU-användningen mellan de två fallen, men vi har inte tagit hänsyn till CPU-användningen i värddatorn ännu.


Scenario 2 – Prestandaresultat på värddatorn (värdoperativsystemet):

Vi använde en virtuell dator för det här scenariot. Vi började kopiera data (med storleken 20 GB) från SMB-resursen till den virtuella datorn och samlade in DPC CPU-användningen av 2 moduler, NDIS och VMBUS, som används i nätverks-I/O.
SLN312240_en_US__4i_OSandApplications_Virtualized_Environment4_2012_N_V1
Figur 4: DPC-CPU-användning i värddatorn
Resultaten visas i bild 4. Som förväntat finns det en stor skillnad i CPU-användning mellan de två fallen (SR-IOV och icke-SR-IOV). CPU-användningen är i storleksordningen 102 för SR-IOV och i storleksordningen 103 - 104 för icke-SR-IOV. Detta beror främst på att den virtuella maskinen, när det gäller SR-IOV, kommunicerar direkt med det fysiska nätverkskortet via den virtuella funktionen. Därför används inte värdens CPU-cykler för bearbetning av nätverkspaket. När det gäller icke-SR-IOV (som visas i bild 1) kommunicerar gästoperativsystemet med värdoperativsystemet via VM-bussen, som i sin tur bearbetar paketen och skickar dem via det fysiska nätverkskortet. Därför används moduler som VM Bus och NDIS i stor utsträckning.

Vid beräkning av den totala CPU-användningen ser vi att CPU-användningen under nätverks-I/O är mycket mindre när SR-IOV används. Därför kan Windows Server 2012 Beta med SR-IOV aktiverat hjälpa kunder att minska CPU-overhead under nätverks-I/O och därmed förbättra den totala systemprestandan.

 

Cause

Konfigurera SR-IOV med PowerShell

Du kan använda följande PowerShell-kommandon för att skapa en ny virtuell växel med SR-IOV aktiverat och koppla den virtuella växeln till det virtuella nätverkskortet för en befintlig virtuell dator.

OBSERVERA: Innan du kör följande kommandon bör följande alternativ aktiveras i BIOS
  • Virtualiseringsteknik
  • SR-IOV Global aktivera
(Förutsatt att ett enda nätverkskort (Intel X520) är anslutet)

$NetAdap = Get-NetAdapter | Where-Object { $_. Status -eq "Up"}(Växeln -EnableIov används för att aktivera SR-IOV i den virtuella växeln)

New-VMSwitch -Name "SRIOV Switch" -NetAdapterName $NetAdap.Name -AllowManagementOS $True -Notes "SRIOV Switch on X520" -EnableIov $True

$VMSw = Get-VMSwitch
Lägga till ett nytt nätverkskort till VM-1 och ansluta det till den virtuella växeln.





Add-VMNetworkAdapter -SwitchName $VMSw.Name -VMName VM-1 -Name "SRIOV Adapter"


OBS:För att det här kommandot ska fungera måste den virtuella datorn vara avstängd)
Du kan också använda ett redan befintligt virtuellt nätverkskort med hjälp av följande kommandon)

$VMNet = Get-VMNetworkAdapter -VMName VM-1

Connect-VMNetworkAdapter -VMName VM-1 -SwitchName $VMSw.Name -Name $VMNet.Name

Varje VM-nätverkskort har två egenskaper, IovWeight & VmqWeight, som motsvarar SR-IOV respektive VMQ.  Genom att justera dessa vikter aktiveras eller inaktiveras funktionerna.

Resolution

Om du vill aktivera SR-IOV ställer du in IovWeight på 100. Om du vill inaktivera SR-IOV ställer du in IovWeight på 0 (standard)

Set-VMNetworkAdapter -VMName VM-1 -VMNetworkAdapterName $VMNetName -IovWeight 100

där $VMNetName är namnet på den virtuella datorns nätverksadapter som är ansluten till SRIOV-växeln.

 
Mer information finns på följande länkar:

Affected Products

Servers
Article Properties
Article Number: 000129905
Article Type: Solution
Last Modified: 20 Sept 2021
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.