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 в виртуализированной среде Windows Server 2012

Summary: Решения Dell для ОС и приложений на портале Dell TechCenter - Project Sputnik, Microsoft Windows, Red Hat Linux, SUSE, Ubuntu и многое другое

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

Эта статья была написана Абхиджитом Кханде и Винитом В. Ачарьей из группы проектирования DELL Windows.

Комментарии приветствуются! Чтобы предложить тему или оставить другие комментарии, свяжитесь с
WinServerBlogs@dell.com.


В бета-версии операционной системы Microsoft® Windows Server® 2012 корпорация Майкрософт представила поддержку ряда функций в сетевом пространстве. Одной из таких важных и интересных особенностей является Виртуализация ввода-вывода с одним корнем (SR-IOV), которая позволяет виртуальным машинам совместно использовать одно устройство PCI-e. В этом посте представлен базовый обзор SR-IOV в бета-версии Windows Server 2012 и то, как он значительно снижает загрузку ЦП в виртуализированной среде во время сетевого ввода-вывода.

Интерфейс SR-IOV представляет собой расширение спецификации PCI Express (PCIe). SR-IOV позволяет одному устройству PCIe, например сетевому адаптеру, предоставлять несколько облегченных аппаратных поверхностей на шине PCI и разделять доступ к ее ресурсам между различными экземплярами. Это достигается за счет использования нескольких виртуальных функций (VF) в дополнение к (обычной) физической функции (PF). Поскольку она зависит от оборудования, устройство PCIe и платформа должны поддерживать эту функцию. 

Традиционно пакет, предназначенный для виртуальной машины, принимает физический сетевой адаптер (с помощью физической функции), присутствующей в ОС хоста. Этот пакет обрабатывается модулем драйверов NDIS (спецификация интерфейса сетевых драйверов для сетевых плат). Затем пакет передается коммутатору Hyper-V, который обрабатывает пакет (например, маршрутизация, фильтрация VLAN) и пересылает пакет на целевую виртуальную машину через VMBus, как показано на рис. 1. Обратный путь будет использован, когда виртуальная машина должна отправить пакет.

 ПРИ ИСПОЛЬЗОВАНИИ SR-IOV ВИРТУАЛЬНАЯ МАШИНА МОЖЕТ ИСПОЛЬЗОВАТЬ ВИРТУАЛЬНУЮ ФУНКЦИЮ (VF) ДЛЯ ОТПРАВКИ И ПОЛУЧЕНИЯ ПАКЕТОВ НЕПОСРЕДСТВЕННО НА ФИЗИЧЕСКИЙ СЕТЕВОЙ АДАПТЕР, ПОЛНОСТЬЮ МИНУЯ ТРАДИЦИОННЫЙ ПУТЬ, КАК ПОКАЗАНО НА РИС. 1. Это не только повышает производительность сетевых операций ввода-вывода, но и снижает нагрузку на процессор хост-компьютера.
SLN312240_en_US__1i_OSandApplications_Virtualized_Environment1_2012_N_V1
Рисунок 1: Путь прохождения данных с SR-IOV и без него

Live Migration и SR-IOV

В бета-версии Windows Server 2012 динамическую миграцию можно выполнить с использованием SR-IOV виртуальной машиной. Если исходная и целевая системы поддерживают SR-IOV и в целевой системе есть доступный виртуальный модуль, виртуальная машина будет использовать виртуальную функцию. В противном случае виртуальная машина вернется к традиционному пути (VM-Bus).

Каждый сетевой адаптер с поддержкой SR-IOV предоставляет фиксированное количество виртуальных функций, которые можно получить, выполнив команду PowerShell «Get-NetAdapterSriov».


Анализ производительности

Мы провели несколько тестов в нашей лаборатории, чтобы сравнить производительность с SR-IOV и без него. Тестовая среда состоит из одного тестового сервера (на котором выполняются тесты) и одного файлового сервера. В качестве тестового сервера используется сервер Dell PowerEdge™ R710 II с адаптером Intel X520 Ethernet 10 Гбит/с® и бета-версией ОС Windows Server 2012. На файловом сервере размещается несколько общих ресурсов SMB, и он подключен к тестовому серверу через сеть 10 Гбит/с через коммутатор Dell PowerConnect™ 8024.

Мы собрали данные о производительности с точки зрения использования ЦП отложенными вызовами процедур DPC (Deferred Procedure Call), запланированными различными модулями драйверов, участвующими в передаче сетевых данных. Эти данные были собраны в гостевой ОС и ОС хоста, как описано в следующих сценариях. Тестовый сервер имеет 4 идентичные виртуальные машины с бета-версией Windows Server 2012 в качестве гостевой ОС. 4 ВМ подключены к сети 10 Гбит/с через виртуальный коммутатор. Эта тестовая конфигурация показана на рис. 2.
SLN312240_en_US__2i_OSandApplications_Virtualized_Environment2_2012_N_V1
Рисунок 2. Тестовая конфигурация
Прежде чем мы продемонстрируем данные о производительности, важно ввести очень важный параметр, используемый для этого тестирования. В Microsoft Windows В ОС существует системный механизм, называемый Deferred Procedure Call (DPC), который позволяет выполнять высокоприоритетные задачи (например, Обработчик прерываний), чтобы отложить обязательные, но менее приоритетные задачи для последующего выполнения. Это позволяет драйверам устройств и другим низкоуровневым потребителям событий быстро выполнять высокоприоритетную часть обработки и планировать некритическую дополнительную обработку для выполнения с более низким приоритетом.


Сценарий 1. Результаты производительности в виртуальной машине (гостевая ОС):

Для этого сценария мы использовали четыре виртуальные машины (ВМ 1–ВМ 4). Мы включили SR-IOV на виртуальных машинах 1 и 2 (установив флажок «Enable SR-IOV» в настройках виртуальной машины) и отключили SR-IOV на виртуальных машинах 3 и 4 (сняв этот флажок). Таким образом, виртуальные машины 1 и 2 будут использовать виртуальную функцию (предоставляемую адаптером Intel), а виртуальные машины 3 и 4 будут использовать синтетический путь (VMBus) для любого сетевого взаимодействия, как показано на рисунке 2.

Мы начали копирование данных (размером 20 Гбайт) из одной сетевой папки SMB на виртуальные машины и собрали журналы использования ЦП системы в гостевой ОС.
SLN312240_en_US__3i_OSandApplications_Virtualized_Environment3_2012_N_V1
Рисунок 3: Использование ЦП DPC в виртуальной машине

На рис. 3 SR-IOV относится к среднему использованию ЦП DPC в VM-1 и VM-2, а без SR-IOV — к среднему использованию ЦП DPC в VM-3 и VM-4. Если мы посмотрим на график, то увидим, что большой разницы в использовании ЦП между двумя случаями нет, но мы еще не учли использование ЦП на хост-компьютере.


Сценарий 2. Результат производительности на хост-компьютере (ОС хоста):

Для этого сценария мы использовали одну виртуальную машину. Мы начали копирование данных (размером 20 Гбайт) из общего ресурса SMB в виртуальную машину и зафиксировали загрузку ЦП DPC 2 модулей, NDIS и VMBUS, которые используются в сетевом вводе-выводе.
SLN312240_en_US__4i_OSandApplications_Virtualized_Environment4_2012_N_V1
Рисунок 4. Использование ЦП DPC на хост-компьютере
Результаты показаны на рисунке 4. Как и ожидалось, существует большая разница в использовании ЦП между двумя случаями (SR-IOV и Non-SR-IOV). Использование ЦП составляет порядка 102 в случае SR-IOV и порядка 103-104 в случае Non-SR-IOV. В основном это связано с тем, что в случае SR-IOV виртуальная машина напрямую взаимодействует с физической сетевой платой через виртуальную функцию. Таким образом, циклы ЦП хоста не используются для обработки сетевых пакетов. В случае Non-SR-IOV (как показано на рис. 1) гостевая ОС взаимодействует с ОС хоста через шину виртуальной машины, которая, в свою очередь, обрабатывает пакеты и отправляет их через физическую сетевую плату. Поэтому широко используются такие модули, как VM Bus и NDIS.

При расчете общего использования ЦП мы заметили, что при использовании SR-IOV использование ЦП во время сетевого ввода-вывода намного меньше. Таким образом, бета-версия Windows Server 2012 с включенным SR-IOV поможет пользователям снизить нагрузку на процессор во время сетевых операций ввода-вывода и тем самым повысить общую производительность системы.

 

Cause

Настройка SR-IOV с помощью PowerShell

Можно использовать следующие команды PowerShell для создания нового виртуального коммутатора с включенным SR-IOV и подключения этого виртуального коммутатора к виртуальному сетевому адаптеру существующей виртуальной машины.

ПРИМЕЧАНИЕ: Перед выполнением следующих команд необходимо включить в BIOS следующие параметры
  • Технология виртуализации
  • Глобальное включение SR-IOV
(При условии, что подключен один сетевой адаптер (Intel X520))

$NetAdap = Get-NetAdapter | Где-объект { $_. Status -eq "Up"}(Параметр -EnableIov используется для включения SR-IOV в виртуальном коммутаторе)

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

= Get-VMSwitch
Добавление нового сетевого адаптера в виртуальную машину-1 и подключение его к виртуальному коммутатору.





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


ПРИМЕЧАНИЕ:Чтобы эта команда работала, виртуальная машина должна быть выключена)
Вы также можете использовать уже существующий сетевой адаптер виртуальной машины, выполнив следующие команды)

$VMNet = Get-VMNetworkAdapter -VMName VM-1

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

Каждый сетевой адаптер виртуальной машины имеет два свойства, IovWeight и VmqWeight, которые соответствуют SR-IOV и VMQ соответственно.  Настройка этих весов включает или отключает функции.

Resolution

Чтобы включить SR-IOV, установите для параметра IovWeight значение 100. Чтобы отключить SR-IOV, задайте для параметра IovWeight значение 0 (по умолчанию)

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

, где $VMNetName — имя сетевого адаптера виртуальной машины, подключенного к коммутатору SRIOV.

 
Для получения дополнительной информации перейдите по следующим ссылкам:

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.