メイン コンテンツに進む
  • すばやく簡単にご注文が可能
  • 注文内容の表示、配送状況をトラック
  • 会員限定の特典や割引のご利用
  • 製品リストの作成とアクセスが可能
  • 「Company Administration(会社情報の管理)」では、お使いのDell EMCのサイトや製品、製品レベルでのコンタクト先に関する情報を管理できます。

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

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

この記事は自動翻訳されたものである可能性があります。品質に関するフィードバックがある場合は、このページの下部にあるフォームを使用してお知らせください。

文書の内容


現象

この記事は、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 オーバーヘッドが削減され、システム全体のパフォーマンスが向上します。

 

原因

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に対応しています。 これらの重みを調整すると、機能が有効または無効になります。

解決方法

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

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

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

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

文書のプロパティ


影響を受ける製品

Servers

最後に公開された日付

20 9月 2021

バージョン

4

文書の種類

Solution