Dette innlegget ble opprinnelig skrevet av Abhijit Khande &; Vineeth V Acharya fra DELL Windows Engineering Team.
Kommentarer er velkomne! Hvis du vil foreslå et emne eller komme med andre kommentarer, kan du kontakte WinServerBlogs@dell.com.
Med Microsoft® Windows Server® 2012 Beta operativsystem, har Microsoft innført støtte for en rekke funksjoner i nettverk plass. En så viktig og interessant funksjon er
I/O-virtualisering med én rot (SR-IOV), som gjør det mulig for virtuelle maskiner å dele én enkelt PCI-e-enhet. Dette innlegget gir en grunnleggende oversikt over SR-IOV i Windows Server 2012 Beta og hvordan det drastisk reduserer CPU-utnyttelsen i et virtualisert miljø under nettverks-I/O.
SR-IOV-grensesnittet er en utvidelse av PCI Express (PCIe)-spesifikasjonen. SR-IOV gjør det mulig for en enkelt PCIe-enhet, for eksempel et nettverkskort, å gi flere lette maskinvareoverflater på PCI-bussen og skille tilgang til ressursene mellom de forskjellige forekomstene. Det oppnås ved bruk av flere virtuelle funksjoner (VF) i tillegg til den (vanlige) fysiske funksjonen (PF). Siden det er maskinvareavhengig, må både PCIe-enheten og plattformen støtte denne funksjonen.
Tradisjonelt mottas en pakke bestemt for den virtuelle maskinen av det fysiske nettverkskortet (ved hjelp av fysisk funksjon) som finnes i vertsoperativsystemet. Denne pakken håndteres av drivermodulen for NDIS (Network Driver Interface Specification for NIC-er). Pakken leveres deretter til Hyper-V-bryteren, som behandler pakken (for eksempel ruting, VLAN-filtrering) og videresender pakken til den bestemte VM via VMBus, som vist i figur 1. Den motsatte banen vil bli fulgt når VM må sende en pakke.
Med SR-IOV kan VM bruke en virtuell funksjon (VF) til å sende og motta pakker direkte til det fysiske nettverkskortet og omgå den tradisjonelle banen fullstendig som vist i figur 1. Dette øker ikke bare nettverks-I/O, men reduserer også overhead på vertsmaskinens CPU.
Figur 1: Databane med og uten SR-IOV
Live Migration &; SR-IOV
I Windows Server 2012 Beta kan Live Migration utføres med SR-IOV som brukes av en virtuell maskin. Hvis kilde- og målsystemene støtter SR-IOV og målet har en tilgjengelig VF, vil VM-en bruke den virtuelle funksjonen. Hvis ikke, vil VM gå tilbake til den tradisjonelle banen (VM-buss).
Hvert SR-IOV-kompatible nettverkskort eksponerer et fast antall virtuelle funksjoner, som kan hentes ved å kjøre PowerShell-kommandoen "Get-NetAdapterSriov".
Ytelsesanalyse
Vi utførte noen tester i laboratoriet vårt for å sammenligne ytelsen med og uten SR-IOV. Testmiljøet består av én testserver (som testene utføres på) og én filserver. Testserveren er en Dell PowerEdge™ R710 II med en Intel® X520 10 GB Ethernet-adapter og Windows Server 2012 Beta OS. Filserveren er vert for flere delte SMB-ressurser, og er koblet til testserveren ved hjelp av et 10 GB-nettverk via en Dell PowerConnect™ 8024-svitsj.
Vi fanget ytelsesdataene i form av CPU-en som brukes av DPC-ene (Deferred Procedure Call) planlagt av de forskjellige drivermodulene som deltar i nettverksdataoverføringen. Disse dataene ble registrert både i gjeste- og vertsoperativsystemet, som beskrevet i følgende scenarier. Testserveren har 4 identiske virtuelle maskiner med Windows Server 2012 Beta som gjest OS. De fire virtuelle maskinene er koblet til 10 GB-nettverket via en virtuell svitsj. Denne testkonfigurasjonen er vist i figur 2.
Figur 2: Testkonfigurasjon
Før vi viser frem ytelsesdataene, er det viktig å introdusere en svært kritisk parameter som brukes til denne testingen. I den
Microsoft Windows Det finnes en systemmekanisme kalt Deferred Procedure Call (DPC), som tillater oppgaver med høy prioritet (f.eks.
Avbruddsbehandling) for å utsette obligatoriske, men lavere prioriterte oppgaver for senere utførelse. Dette gjør det mulig for enhetsdrivere og andre forbrukere med lav prioritet å utføre den høyt prioriterte delen av behandlingen raskt, og planlegge ikke-kritisk tilleggsbehandling for kjøring med lavere prioritet.
Scenario 1 – Ytelsesresultater i virtuell maskin (gjesteoperativsystem):
Vi brukte fire virtuelle maskiner (VM) i dette scenariet (VM 1 til VM 4). Vi aktiverte SR-IOV på VM 1 og VM 2 (ved å merke av for "Enable SR-IOV" i VM-innstillinger) og deaktiverte SR-IOV på VM 3 og VM 4 (ved å fjerne merket for det samme alternativet). Derfor vil VM 1 og VM 2 bruke den virtuelle funksjonen (eksponert av Intel-adapteren), mens VM 3 og VM 4 vil bruke den syntetiske banen (VMBus) for all nettverkskommunikasjon, som vist i figur 2.
Vi begynte å kopiere data (av størrelse 20 GB) fra én enkelt SMB-ressurs til de virtuelle maskinene og registrerte operativsystemets CPU-brukslogger i gjesteoperativsystemet.
Figur 3: DPC CPU-bruk i virtuell maskin
I figur 3 refererer SR-IOV til gjennomsnittlig DPC CPU-bruk i VM-1 og VM-2, og ikke-SR-IOV refererer til gjennomsnittlig DPC CPU-bruk i VM-3 og VM-4. Hvis vi ser på grafen, ser vi at det ikke er stor forskjell i CPU-bruken mellom de to tilfellene, men vi har ikke tatt hensyn til CPU-bruken i vertsmaskinen ennå.
Scenario 2 – Ytelsesresultat i vertsmaskinen (verts-OS):
Vi brukte én virtuell maskin i dette scenariet. Vi begynte å kopiere data (av størrelse 20GB) fra SMB dele til VM og fanget DPC CPU bruk av 2 moduler, NDIS og VMBUS, som brukes i nettverk I / O.
Figur 4: DPC CPU-bruk i vertsmaskin
Resultatene er vist i figur 4. Som forventet er det stor forskjell i CPU-bruken mellom de to tilfellene (SR-IOV og ikke-SR-IOV). CPU-bruken er i størrelsesorden 102 når det gjelder SR-IOV, og i størrelsesorden 103 - 104 når det gjelder ikke-SR-IOV. Dette skyldes hovedsakelig at når det gjelder SR-IOV, kommuniserer den virtuelle maskinen direkte med det fysiske nettverkskortet via den virtuelle funksjonen. Derfor brukes ikke CPU-syklusene til verten til å behandle nettverkspakker. Når det gjelder ikke-SR-IOV (som vist i figur 1), kommuniserer gjesteoperativsystemet med vertsoperativsystemet via VM-bussen, som igjen behandler pakkene og sender dem via det fysiske nettverkskortet. Derfor er moduler som VM Bus og NDIS mye brukt.
Ved beregning av total CPU-bruk observerer vi at CPU-utnyttelsen under nettverks-I/O er langt mindre ved bruk av SR-IOV. Derfor vil Windows Server 2012 Beta med SR-IOV aktivert hjelpe kunder med å redusere CPU-belastningen under nettverks-I/O og dermed forbedre den generelle systemytelsen.
Konfigurere SR-IOV ved hjelp av PowerShell
Du kan bruke følgende PowerShell-kommandoer til å opprette en ny virtuell svitsj med SR-IOV aktivert, og koble den virtuelle svitsjen til det virtuelle nettverkskortet på en eksisterende virtuell maskin.
MERK: Før du kjører følgende kommandoer, må følgende alternativer være aktivert i BIOS
- Virtualiserings-teknologi
- SR-IOV Global Enable
(Forutsatt at et enkelt nettverkskort (Intel X520) er koblet til)
$NetAdap = Get-NetAdapter | Hvor-objekt { $_. Status -eq "Up"}(-EnableIov-bryteren brukes til å aktivere SR-IOV i den virtuelle bryteren)
New-VMSwitch -Name "SRIOV Switch" -NetAdapterName $NetAdap.Name -AllowManagementOS $True -Notes: "SRIOV Switch on X520" -EnableIov $True
$VMSw = Get-VMSwitch
Legge til et nytt nettverkskort til VM-1 og koble det til den virtuelle svitsjen.
Legg til-VMNetworkAdapter -SwitchName $VMSw.Name -VMName VM-1 -Navn "SRIOV Adapter"
MERK:For at denne kommandoen skal fungere, må VM være slått av)
Du kan også bruke et allerede eksisterende VM-nettverkskort ved å bruke følgende kommandoer)
$VMNet = Get-VMNetworkAdapter -VMName VM-1
Connect-VMNetworkAdapter -VMName VM-1 -SwitchName $VMSw.Name -Name $VMNet.Name
Hvert VM-nettverkskort har to egenskaper, IovWeight &; VmqWeight, som tilsvarer henholdsvis SR-IOV og VMQ. Hvis du justerer disse tykkelsene, aktiveres eller deaktiveres funksjonene.