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

「Windows Server 2012の仮想化環境でのSR-IOVネットワークI/O拡張(英語)」

Summary: Dell TechCenterのDell OSおよびアプリケーション ソリューション - Project Sputnik、Microsoft Windows、Red Hat Linux、SUSE、Ubuntu、その他

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

この記事は、Dell Windowsエンジニアリング チームのAbhijit KhandeとVineeth V Acharyaによって作成されたものです。

コメントは大歓迎です! トピックを提案したり、その他のコメントを投稿したりするには、
WinServerBlogs@dell.com にお問い合わせください


Microsoft® Windows Server® 2012 Beta オペレーティング システムでは、Microsoft はネットワーク分野の多くの機能のサポートを導入しました。そのような重要で興味深い機能の1つが シングル ルートI/O仮想化 (SR-IOV)。仮想マシンが単一のPCI-eデバイスを共有できるようにします。この投稿では、Windows Server 2012 Beta の SR-IOV の基本的な概要と、ネットワーク I/O 中の仮想化環境での CPU 使用率を大幅に削減する方法について説明します。

SR-IOVインターフェイスは、PCI Express(PCIe)仕様の拡張です。SR-IOV を使用すると、ネットワーク アダプターなどの 1 つの PCIe デバイスで、PCI バス上に複数の軽量ハードウェア サーフェスを提供し、さまざまなインスタンス間でそのリソースに個別にアクセスできます。これは、(通常の)物理機能(PF)に加えて、複数の仮想機能(VF)を使用することによって実現されます。これはハードウェアに依存するため、PCIeデバイスとプラットフォームの両方がこの機能をサポートしている必要があります。

従来、仮想マシン宛てのパケットは、ホストOSに存在する物理ネットワーク アダプター(物理機能を使用)によって受信されていました。このパケットは、NDIS (Network Driver Interface Specification for NIC) ドライバー モジュールによって処理されます。その後、パケットはHyper-Vスイッチに提供され、図1に示すように、パケットが処理され(ルーティング、VLANフィルタリングなど)、VMBusを介して宛先VMにパケットが転送されます。逆パスは、VMがパケットを送信する必要があるときにたどります。

SR-IOVを使用すると、VMは仮想機能(VF)を使用して、図1に示すように、従来のパスを完全にバイパスして、物理ネットワークアダプタと直接パケットを送受信できます。これにより、ネットワークI/Oが増加するだけでなく、ホストマシンのCPUのオーバーヘッドも削減されます。
SLN312240_en_US__1i_OSandApplications_Virtualized_Environment1_2012_N_V1
図1: SR-IOVあり/なしのデータ パス

ライブ移行とSR-IOV

Windows Server 2012 Beta では、VM が SR-IOV を使用している状態でライブ マイグレーションを実行できます。ソース システムとターゲット システムがSR-IOVをサポートしており、ターゲットに使用可能なVFがある場合、VMは仮想機能を使用します。そうでない場合、VMは従来のパス(VM-Bus)に戻ります。

各SR-IOV対応ネットワーク アダプターは固定数の仮想機能を公開します。仮想機能は、PowerShellコマンド「Get-NetAdapterSriov」を実行することで取得できます。


パフォーマンス分析

SR-IOVがある場合とない場合のパフォーマンスを比較するために、ラボでいくつかのテストを実施しました。テスト環境は、1 つのテスト サーバー (テストが実行されるサーバー) と 1 つのファイル サーバーで構成されます。テスト サーバーは、Intel® X520 10GB EthernetアダプターとWindows Server 2012 Beta OSを搭載したDell PowerEdge™ R710 IIです。ファイル サーバーは複数のSMB共有をホストし、Dell PowerConnect™ 8024スイッチ経由で10GBネットワークを使用してテスト サーバーに接続されます。

ネットワーク データ転送に関与するさまざまなドライバー モジュールによってスケジュール設定されたDPC(Deferred Procedure Call)によって使用されるCPUに関してパフォーマンス データを収集しました。このデータは、次のシナリオで説明するように、ゲストOSとホストOSの両方でキャプチャされました。テスト サーバーには、ゲスト OS として Windows Server 2012 Beta を搭載した 4 台の同一の仮想マシンがあります。4台のVMは、仮想スイッチを介して10GBネットワークに接続されています。このテスト構成を図2に示します。
SLN312240_en_US__2i_OSandApplications_Virtualized_Environment2_2012_N_V1
図2: テスト構成
パフォーマンス データを紹介する前に、このテストで使用される非常に重要なパラメーターを紹介することが重要です。の Microsoft Windows OSには、遅延プロシージャコール(DPC)と呼ばれるシステム メカニズムが存在し、優先度の高いタスク( 割り込みハンドラ)を使用して、後で実行するために、必須だが優先度の低いタスクを延期します。これにより、デバイス ドライバーやその他の低レベルのイベント コンシューマーは、処理の優先度の高い部分をすばやく実行し、優先度の低い重要でない追加処理を実行するようにスケジュールできます。


シナリオ 1 – 仮想マシンのパフォーマンス結果 (ゲスト OS):

このシナリオでは、4 つの仮想マシン (VM) (VM 1 から VM 4) を使用しました。VM 1 と VM 2 で SR-IOV を有効にし (VM 設定の [SR-IOV を有効にする] オプションをオンにして)、VM 3 と VM 4 で SR-IOV を無効にしました (同じオプションをオフにします)。したがって、図 2 に示すように、VM 1 と VM 2 は仮想機能 (Intel アダプタによって公開される) を使用し、VM 3 と VM 4 はネットワーク通信に合成パス(VMBus)を使用します。

1つのSMB共有からVMへのデータ(サイズ20GB)のコピーを開始し、ゲストOSでシステムのCPU使用率ログを取得しました。
SLN312240_en_US__3i_OSandApplications_Virtualized_Environment3_2012_N_V1
図3: 仮想マシン

の DPC CPU 使用率 図 3 では、SR-IOV は VM-1 と VM-2 の平均 DPC CPU 使用率を指し、非 SR-IOV は VM-3 と VM-4 の平均 DPC CPU 使用率を指します。グラフを見ると、2つのケースのCPU使用率に大きな違いはありませんが、ホストマシンのCPU使用率はまだ考慮されていません。


シナリオ 2 – ホスト マシン (ホスト OS) のパフォーマンス結果:

このシナリオでは、1台の仮想マシンを使用しました。SMB共有からVMへのデータ(サイズ20GB)のコピーを開始し、ネットワークI/Oで使用される2つのモジュール(NDISとVMBUS)のDPC CPU使用率をキャプチャしました。
SLN312240_en_US__4i_OSandApplications_Virtualized_Environment4_2012_N_V1
図4: ホスト マシン
のDPC CPU使用率 結果を図4に示します。予想どおり、2つのケース(SR-IOVと非SR-IOV)のCPU使用率には大きな違いがあります。CPU 使用率は、SR-IOV の場合は 102 程度、非 SR-IOV の場合は 103 から 104 程度です。これは主に、SR-IOV の場合、仮想マシンが仮想機能を介して物理 NIC と直接通信するためです。したがって、ホストのCPUサイクルは、ネットワーク パケットの処理には使用されません。非 SR-IOV の場合 (図 1 を参照)、ゲスト OS は VM バスを介してホスト OS と通信し、ホスト OS はパケットを処理して物理 NIC 経由で送信します。そのため、VM バスや NDIS などのモジュールが広く使用されています。

合計CPU使用率を計算すると、SR-IOVを使用すると、ネットワークI/O中のCPU使用率がはるかに低いことがわかります。したがって、Windows Server 2012 Beta で SR-IOV を有効にすると、ネットワーク I/O 中の CPU オーバーヘッドが削減され、システム全体のパフォーマンスが向上します。

 

Cause

PowerShell を使用した SR-IOV の設定

次の PowerShell コマンドを使用して、SR-IOV が有効になっている新しい仮想スイッチを作成し、その仮想スイッチを既存の仮想マシンの仮想ネットワーク アダプターに接続できます。

メモ:次のコマンドを実行する前に、BIOSで次のオプションを有効にする必要があります。
  • 仮想化テクノロジー
  • SR-IOVグローバル有効
(単一のネットワーク アダプター(Intel X520)が接続されていることを前提としています)

$NetAdap = Get-NetAdapter |Where-Object { $_.Status -eq "Up"}

(-EnableIovスイッチは、仮想スイッチでSR-IOVを有効にするために使用されます)

New-VMSwitch -Name "SRIOV Switch" -NetAdapterName $NetAdap.Name -AllowManagementOS $True -Notes "X520のSRIOVスイッチ" -EnableIov $True$VMSw

= Get-VMSwitch


VM-1に新しいネットワーク アダプターを追加し、仮想スイッチに接続します。

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


メモ:このコマンドを機能させるには、VMの電源をオフにする必要があります)
次のコマンドを使用して、既存のVMネットワーク アダプターを使用することもできます。

$VMNet = Get-VMNetworkAdapter -VMName VM-1

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

各VMネットワークアダプタには、IovWeightとVmqWeightの2つのプロパティがあり、それぞれSR-IOVとVMQに対応しています。 これらの重みを調整すると、機能が有効または無効になります。

Resolution

SR-IOV を有効にするには、IovWeight を 100 に設定します。SR-IOV を無効にするには、IovWeight を 0 に設定します (デフォルト)

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

。ここで$VMNetNameはSRIOVスイッチに接続されているVMネットワーク アダプターの名前です。

詳細については、次のリンクを参照してください。

Article Properties


Affected Product

Servers

Last Published Date

20 Sept 2021

Version

4

Article Type

Solution