メイン コンテンツに進む
  • すばやく簡単にご注文が可能
  • 注文内容の表示、配送状況をトラック
  • 会員限定の特典や割引のご利用
  • 製品リストの作成とアクセスが可能

Улучшение сетевых операций ввода-вывода SR-IOV в виртуализированной среде Windows Server 2012

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

この記事は次に適用されます: この記事は次には適用されません: この記事は、特定の製品に関連付けられていません。 すべての製品パージョンがこの記事に記載されているわけではありません。

現象

Эта статья была написана Абхиджитом Кханде и Винитом В. Ачарьей из группы проектирования 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 поможет пользователям снизить нагрузку на процессор во время сетевых операций ввода-вывода и тем самым повысить общую производительность системы.

 

原因

Настройка 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 соответственно.  Настройка этих весов включает или отключает функции.

解決方法

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

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

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

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

対象製品

Servers
文書のプロパティ
文書番号: 000129905
文書の種類: Solution
最終更新: 20 9月 2021
バージョン:  4
質問に対する他のDellユーザーからの回答を見つける
サポート サービス
お使いのデバイスがサポート サービスの対象かどうかを確認してください。