Compartilhar via


Possíveis gargalos de desempenho em um ambiente de rede virtualizada do NDIS

Em um ambiente de rede que dá suporte ao compartilhamento de dispositivos, uma interface virtual com seu próprio endereço MAC (controle de acesso à mídia) é exposta em cada partição filho do Hyper-V. Essas interfaces virtuais usam o VMBus (barramento de máquina virtual) subjacente para se conectar a uma porta no módulo de comutador extensível do Hyper-V que é executado no sistema operacional de gerenciamento da partição pai do Hyper-V. O comutador extensível transmite todos os quadros de saída das diferentes partições emitindo solicitações de envio para o adaptador de rede compartilhado subjacente.

O adaptador de rede física indica todos os quadros de entrada que recebe até o comutador extensível no sistema operacional de gerenciamento. O comutador extensível usa o endereço MAC de destino para atribuir os quadros de entrada indicados aos adaptadores de rede virtual. Para cada partição filho, os quadros de entrada devem ser copiados de buffers de adaptador de rede no sistema operacional de gerenciamento para buffers secundários que foram pré-alocados da partição filho associada. Uma notificação é enviada para cada interface virtual que tem quadros pendentes. A interface virtual em cada partição filho indica os quadros de entrada para drivers de transporte excessivamente. Depois de identificar o aplicativo, os drivers de transporte copiam a carga de dados do buffer secundário para um buffer de aplicativo.

Portanto, no ambiente de virtualização, os quadros recebidos de entrada são copiados duas vezes, primeiro do buffer do adaptador de rede para um buffer temporário alocado do espaço de endereço de memória de destino de uma partição filho e, em seguida, novamente desse buffer temporário para um buffer de aplicativo. A opção extensível no sistema operacional de gerenciamento deve usar ciclos de CPU para analisar quadros de entrada e colocá-los em filas separadas com base em seu endereço MAC de destino.

A figura a seguir mostra os gargalos de desempenho para processamento de recebimento em um ambiente virtualizado.

Diagrama ilustrando gargalos de desempenho para processamento de recebimento em um ambiente de rede virtualizado.

Os problemas de desempenho na figura anterior incluem o seguinte:

  • Cada pacote de entrada deve ser examinado para identificar o adaptador de rede virtual de destino.

  • Os dados recebidos devem ser copiados do espaço de endereço de memória da partição pai para o espaço de endereço de memória da partição filho.

  • Falta de simultaneidade para interrupções e DPCs.

Superando gargalos de desempenho com VMQ

Para resolver problemas de desempenho, a interface VMQ (fila de máquina virtual) permite:

  • Um adaptador de rede para determinar a partição filho de destino implementando a filtragem de endereço MAC no hardware.

  • Um adaptador de rede para usar o AMD para transferir pacotes recebidos diretamente para o espaço de endereço de memória de uma partição filho.

  • Um driver de miniporta para fornecer interrupção e simultaneidade de DPC indicando pacotes recebidos para diferentes partições filho em CPUs diferentes.

Nota Os pacotes recebidos da rede externa ainda precisam ser encaminhados pelo sistema operacional de gerenciamento para o sistema operacional convidado por meio do VMBus.

Para obter mais informações sobre a interface VMQ, consulte VMQ (Virtual Machine Queue).

Superando gargalos de desempenho com SR-IOV

A interface SR-IOV (virtualização de E/S raiz única) fornece uma base baseada em padrões para compartilhar com eficiência um dispositivo PCI Express (PCIe) entre várias partições filho. Os recursos de E/S física são virtualizados no dispositivo PCIe, portanto, cada dispositivo apresenta várias interfaces de E/S virtuais chamadas VFs (funções virtuais ). O sistema operacional de gerenciamento pode configurar cada VF no dispositivo e atribuí-los a partições filho específicas.

Uma VF é exposta como um dispositivo de hardware para a partição filho. Todos os pacotes de dados fluem diretamente entre o sistema operacional convidado e o VF. Isso elimina o caminho do software entre o sistema operacional de gerenciamento e a partição filho para o tráfego de dados. Ele ignora o envolvimento do sistema operacional de gerenciamento na movimentação de dados fornecendo espaço de memória independente, interrupções e fluxos de DMA para cada partição filho. Os quadros são enviados para a rede externa usando a porta física do dispositivo ou para outra partição filho usando a porta interna conectada ao VF.

Em todos os casos, a interface SR-IOV elimina a necessidade de qualquer envolvimento do sistema operacional de gerenciamento no caminho de dados. Como resultado, a interface SR-IOV fornece o seguinte:

  • Taxa de transferência de E/S aprimorada e utilização reduzida da CPU.

  • Latência mais baixa.

  • Melhor escalabilidade.

Para obter mais informações sobre a interface SR-IOV, consulte Virtualização de E/S de Raiz Única (SR-IOV).