CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回のコラムでは、Windows Server 2012 R2のストレージ機能についてご紹介しました。今回は、Windows Server 2012 R2のHyper-Vに搭載されるネットワークの新機能を2つご紹介します。
従来のNICではネットワークIOに関するCPU処理を特定の1つのCPUコア(CPU 0)でしか処理できない制限がありました。この制限により、短時間に大量のデータ通信を行う場合や複数のNICで同時に通信をする場合などは、特定のCPUコアだけに処理が集中してCPUがボトルネックとなり、ネットワークのパフォーマンスを発揮できない状況に陥ることがあります。
この事象に対応するため、RSS(Receive Side Scaling)という機能が搭載されたNICが存在します。このRSSは従来CPU 0のみで処理されていたネットワークIO処理を他のCPUでも処理可能にして、上述の問題を解消しています。
※RSSについてはこちら参照してください
(http://technet.microsoft.com/library/hh997036.aspx)
しかし、サーバー仮想化環境においては、RSSに対応したNICを利用していても仮想マシンに接続される仮想NICがRSSに対応していないため、仮想マシンが大量のネットワークIOを行う際にCPU 0に負荷が集中する問題が発生していました。そこで、Windows Server 2012 R2のHyper-Vでは仮想NICにRSSの機能を実装しました。これをVirtual RSSと呼びます。
Virtual RSSはデフォルトでは無効化されているので、有効化するには仮想マシン上でデバイスマネージャーを開き、仮想NICのプロパティから詳細設定の変更を行います。
Virtual RSSの設定項目
大量のネットワークIOを行う場合に、CPU 0の負荷が高すぎるようであれば、Virtual RSSを有効化することでCPU負荷を分散できることでしょう。ぜひWindows Server 2012 R2のHyper-VとVirtual RSS機能を試してみてください。
Virtual RSSが無効化されている状態ではCPU 0に負荷が集中している
Virtual RSSを有効化するとCPU負荷が分散する
仮想マシンが通信を行う場合、仮想スイッチを経由して物理NICとやり取りを行います。これで十分なパフォーマンスが得られている場合は良いのですが、さらにネットワークIOの高速化と効率化が必要な場合にはWindows Server 2012から搭載されているSR-IOVを利用することができます。この機能は、SR-IOVに対応したサーバーと物理NICを利用する必要がありますが、仮想スイッチを経由せずに仮想マシンから直接物理NICを利用することで仮想化によるオーバーヘッドを解消することができます。
※SR-IOVについてはこちら参照してください
(http://technet.microsoft.com/ja-jp/magazine/dn235778.aspx)
なお、VMware社のハイパーバイザーではVMDirectPath I/Oという物理デバイスに直接アクセスする機能がありますが、これは原則1つの仮想マシンが1つの物理デバイスを占有するのに対し、SR-IOVは1つの物理NICを複数の仮想マシンで共有することが可能です。さらに、Hyper-Vの場合はSR-IOV環境でのライブマイグレーションにも対応しています。
最近のサーバー用ハードウェアには、1GbpsのNICが複数搭載されるのが当たり前で、より大きな帯域が必要な場合は10GbpsのNICや40Gbpsを超えるInfinibandなどが搭載されています。また、Windows Server 2012からはチーミング機能がOS標準で搭載されており、複数のNICを束ねることで大きな帯域を利用することができるようになりました。
これらのハード・ソフトの進化もあり、サーバー仮想化を取り扱う現場では、ネットワーク要件もより高くなってきています。そのような状況に対応するため、Windows Server 2012 R2では、仮想環境上で大量かつ効率的なネットワーク通信を行うための機能強化が施されているのです。特にVirtual RSSは特別なハードウェアを必要としない機能ですので、ぜひ皆さんの検証環境でもその効果を体感してみてください!
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes