Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Aprimoramento de E/S de rede SR-IOV em um ambiente virtualizado no Windows Server 2012

Summary: Soluções de aplicativos e SO da Dell no Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu e muito mais

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

Este post foi originalmente escrito por Abhijit Khande & Vineeth V Acharya da equipe de engenharia do Windows da DELL.

Comentários são bem-vindos! Para sugerir um tópico ou fazer outros comentários, entre em contato com
WinServerBlogs@dell.com.


Com o sistema operacional Microsoft® Windows Server® 2012 Beta, a Microsoft introduziu suporte para vários recursos no espaço de rede. Uma dessas características significativas e interessantes é Virtualização de E/S de raiz única (SR-IOV), que permite que máquinas virtuais compartilhem um único dispositivo PCI-e. Este post fornece uma visão geral básica do SR-IOV no Windows Server 2012 Beta e como ele reduz drasticamente a utilização da CPU em um ambiente virtualizado durante a E/S de rede.

A interface SR-IOV é uma extensão da especificação PCI Express (PCIe). O SR-IOV permite que um único dispositivo PCIe, como um adaptador de rede, forneça várias superfícies de hardware leves no barramento PCI e acesso separado a seus recursos entre as várias instâncias. Ela é alcançada pelo uso de múltiplas funções virtuais (FV), além da função física (usual) (FP). Como ele depende de hardware, o dispositivo PCIe e a plataforma devem dar suporte a esse recurso. 

Tradicionalmente, um pacote destinado à máquina virtual é recebido pelo adaptador de rede física (usando a função física) presente no sistema operacional host. Esse pacote é tratado pelo módulo de driver NDIS (Network Driver Interface Specification for NICs). Em seguida, o pacote é fornecido ao comutador Hyper-V, que processa o pacote (como roteamento, filtragem de VLAN) e o encaminha para a VM de destino via VMBus, conforme mostrado na Figura 1. O caminho inverso será seguido quando a VM tiver que enviar um pacote.

 Com o SR-IOV, a VM pode usar uma função virtual (VF) para enviar e receber pacotes diretamente para o adaptador de rede física, ignorando completamente o caminho tradicional, conforme mostrado na Figura 1. Isso não apenas impulsiona a E/S de rede, mas também reduz a sobrecarga na CPU da máquina host.
SLN312240_en_US__1i_OSandApplications_Virtualized_Environment1_2012_N_V1
Figura 1: Caminho de dados com e sem SR-IOV

Migração em tempo real & SR-IOV

No Windows Server 2012 Beta, o Live Migration pode ser realizado com SR-IOV sendo usado por uma VM. Se os sistemas de origem e destino forem compatíveis com SR-IOV e o destino tiver uma VF disponível, a VM usará a função virtual. Caso contrário, a VM será revertida para o caminho tradicional (VM-Bus).

Cada adaptador de rede compatível com SR-IOV expõe um número fixo de funções virtuais, que podem ser obtidas executando o comando do PowerShell "Get-NetAdapterSriov".


Análise de desempenho

Realizamos alguns testes em nosso laboratório para comparar o desempenho com e sem SR-IOV. O ambiente de teste consiste em um servidor de teste (no qual os testes são executados) e um servidor de arquivos. O servidor de teste é um Dell PowerEdge™ R710 II com um adaptador Ethernet Intel® X520 de 10 GB e o sistema operacional Windows Server 2012 Beta. O servidor de arquivos hospeda vários compartilhamentos SMB e está conectado ao servidor de teste usando uma rede de 10 GB por meio de um switch Dell PowerConnect™ 8024.

Capturamos os dados de desempenho em termos da CPU usada pelos DPCs (Deferred Procedure Call, chamada de procedimento adiado) agendados pelos diferentes módulos de driver que participam da transferência de dados de rede. Esses dados foram capturados no SO guest e host, conforme descrito nos cenários a seguir. O servidor de teste tem 4 máquinas virtuais idênticas com o Windows Server 2012 Beta como o sistema operacional convidado. As 4 VMs estão conectadas à rede de 10 GB por meio de um switch virtual. Essa configuração de teste é mostrada na Figura 2.
SLN312240_en_US__2i_OSandApplications_Virtualized_Environment2_2012_N_V1
Figura 2:
Configuração de teste Antes de mostrarmos os dados de desempenho, é importante introduzir um parâmetro muito crítico usado para esse teste. No Microsoft Windows No SO, existe um mecanismo do sistema chamado DPC (Deferred Procedure Call, chamada de procedimento adiado), que permite tarefas de alta prioridade (por exemplo, um Manipulador de interrupções) para adiar tarefas necessárias, mas de prioridade mais baixa, para execução posterior. Isso permite que drivers de dispositivo e outros consumidores de eventos de baixo nível executem a parte de alta prioridade de seu processamento rapidamente e agendem processamento adicional não crítico para execução em uma prioridade mais baixa.


Cenário 1 – Resultados de desempenho em máquina virtual (SO convidado):

Neste cenário, usamos quatro máquinas virtuais (VM) (VM 1 a VM 4). Ativamos o SR-IOV na VM 1 e na VM 2 (marcando a opção "Enable SR-IOV" nas configurações da VM) e desabilitamos o SR-IOV nas VMs 3 e 4 (desmarcando a mesma opção). Portanto, as VMs 1 e 2 usarão a função virtual (exposta pelo adaptador Intel), enquanto a VM 3 e a VM 4 usarão o caminho sintético (VMBus) para qualquer comunicação de rede, conforme mostrado na Figura 2.

Começamos a copiar dados (de tamanho 20 GB) de um único compartilhamento SMB para as VMs e capturamos os registros de uso da CPU do sistema no SO convidado.
SLN312240_en_US__3i_OSandApplications_Virtualized_Environment3_2012_N_V1
Figura 3: Uso da CPU DPC na máquina

virtual Na Figura 3, SR-IOV refere-se ao uso médio da CPU DPC em VM-1 e VM-2 e não SR-IOV refere-se ao uso médio da CPU DPC em VM-3 e VM-4. Se observarmos o gráfico, veremos que não há muita diferença no uso da CPU entre os dois casos, mas ainda não contabilizamos o uso da CPU na máquina host.


Cenário 2 – Resultado de desempenho na máquina host (sistema operacional do host):

Usamos uma máquina virtual para esse cenário. Começamos a copiar dados (de tamanho 20 GB) do compartilhamento SMB para a VM e capturamos o uso da CPU DPC de dois módulos, NDIS e VMBUS, que são usados na E/S de rede.
SLN312240_en_US__4i_OSandApplications_Virtualized_Environment4_2012_N_V1
Figura 4: Uso da CPU DPC na máquina
host Os resultados são mostrados na Figura 4. Como esperado, há uma grande diferença no uso da CPU entre os dois casos (SR-IOV e não-SR-IOV). O uso da CPU é da ordem de 102 no caso de SR-IOV, e da ordem 103 - 104 no caso de Non-SR-IOV. Isso ocorre principalmente porque, no caso do SR-IOV, a máquina virtual se comunica diretamente com a NIC física por meio da função virtual. Portanto, os ciclos de CPU do host não são utilizados para processar nenhum pacote de rede. No caso de Non-SR-IOV (conforme mostrado na Figura 1), o sistema operacional convidado se comunica com o sistema operacional host por meio do barramento de VM, que, por sua vez, processa os pacotes e os envia por meio da NIC física. Portanto, módulos como VM Bus e NDIS são amplamente utilizados.

Ao calcular o uso total da CPU, observamos que a utilização da CPU durante a E/S de rede é muito menor ao usar SR-IOV. Portanto, o Windows Server 2012 Beta com SR-IOV ativado ajudará os clientes a reduzir a sobrecarga da CPU durante a E/S de rede e, assim, melhorar o desempenho geral do sistema.

 

Cause

Configurando o SR-IOV usando o PowerShell

Você pode usar os seguintes comandos do PowerShell para criar um novo comutador virtual com SR-IOV habilitado e conectar o comutador virtual ao adaptador de rede virtual de uma máquina virtual existente.

NOTA: Antes de executar os comandos a seguir, as seguintes opções devem ser ativadas no BIOS
  • Tecnologia de virtualização
  • Ativação global do SR-IOV
(Supondo que um único adaptador de rede (Intel X520) esteja conectado)

$NetAdap = Get-NetAdapter | Where-Object { $_. Status -eq "Up"}(O switch -EnableIov é usado para habilitar o SR-IOV no switch virtual)

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

$VMSw = Get-VMSwitch
Adicionar um novo adaptador de rede à VM-1 e conectá-lo ao switch virtual.





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


NOTA:Para que esse comando funcione, a VM deve estar desativada)
Você também pode usar um adaptador de rede VM já existente usando os seguintes comandos)

$VMNet = Get-VMNetworkAdapter -VMName VM-1

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

Cada adaptador de rede VM tem duas propriedades, IovWeight & VmqWeight, que correspondem a SR-IOV e VMQ, respectivamente.  O ajuste desses pesos ativa ou desativa os recursos.

Resolution

Para habilitar o SR-IOV, defina o IovWeight como 100. Para desativar o SR-IOV, defina o IovWeight como 0 (padrão)

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

, em que $VMNetName é o nome do adaptador de rede da VM conectado ao switch SRIOV.

 
Acesse os links a seguir para obter mais informações:

Article Properties


Affected Product

Servers

Last Published Date

20 Sept 2021

Version

4

Article Type

Solution