Red Hat Training

A Red Hat training course is available for RHEL 8

10.8. SR-IOV デバイスの管理

エミュレートされた仮想デバイスは、多くの場合、ハードウェアネットワークデバイスよりも多くの CPU およびメモリーを使用します。これにより、仮想マシンのパフォーマンスを制限できます。ただし、仮想化ホストのデバイスが SR-IOV (Single Root I/O Virtualization) に対応する場合は、この機能を使用してデバイスのパフォーマンスを向上し、仮想マシンの全体的なパフォーマンスを向上させることができます。

10.8.1. SR-IOV とは

SR-IOV (Single-root I/O virtualization) は、1 つの PCIe (PCI Express) デバイスが、ホストに、複数の個別の PCI デバイス (仮想機能 (VF) と呼ばれます) をホストシステムに表示できるようにする仕様です。このデバイスはそれぞれ以下のようになります。

  • 元の PCIe デバイスと同一または同様のサービスを提供できます。
  • ホストの PCI バス上にある別のアドレスに表示されます。
  • VFIO の割り当てを使用して、別の仮想マシンに割り当てることができます。

たとえば、1 つの SR-IOV 対応ネットワークデバイスが、VF を複数の仮想マシンに提示できます。すべての VF は同じ物理カード、同じネットワーク接続、同じネットワークケーブルを使用しますが、各仮想マシンは直接そのハードウェアネットワークデバイスを制御し、ホストのリソースは使用しません。

SR-IOV の仕組み

SR-IOV 機能は、以下の PCIe 機能の導入により可能になりました。

  • Physical Function (PF) - デバイス (ネットワークなど) の機能をホストに提供しますが、一連の VF を作成して管理することもできる PCIe 機能。SR-IOV 対応の各デバイスには、1 つ以上の PF があります。
  • Virtual Function (VF) - 独立したデバイスとして動作する軽量の PCIe 機能。各 VF は PF から派生します。デバイスが持つことができる VF の最大数は、デバイスのハードウェアによって異なります。各 VF は、一度に 1 台の仮想マシンにのみ割り当てることができますが、1 台の仮想マシンには複数の VF を割り当てることができます。

仮想マシンは、VF を仮想デバイスとして認識します。たとえば、SR-IOV ネットワークデバイスによって作成された VF は、物理ネットワークカードがホストシステムに表示されるのと同じように、割り当てられた仮想マシンへのネットワークカードとして表示されます。

図10.1 SR-IOV アーキテクチャー

virt SR IOV

利点

エミュレートされたデバイスではなく SR-IOV VF を使用する主な利点は以下のとおりです。

  • パフォーマンスが向上する
  • ホストの CPU およびメモリーリソースの使用が減少する

たとえば、vNIC として仮想マシンに接続する VF は、物理 NIC とほぼ同じレベルで実行され、準仮想化またはエミュレートされた NIC よりもはるかに適しています。特に、複数の VF を 1 台のホスト上で同時に使用する場合に、パフォーマンス上のメリットは重要です。

デメリット

  • PF の設定を変更する場合は、最初に PF により公開される VF の数をゼロに変更する必要があります。したがって、このような VF が提供するデバイスを、デバイスが割り当てられている仮想マシンから削除する必要もあります。
  • SR-IOV VF など、VFIO が割り当てられたデバイスが接続された仮想マシンは、別のホストに移行することができません。場合によっては、割り当てられたデバイスをエミュレートされたデバイスとペアにすることにより、この制限を回避できます。たとえば、割り当てられたネットワーク VF をエミュレートされた vNIC に ボンディング を行い、移行前に VF を削除できます。
  • さらに、VFIO が割り当てたデバイスには仮想マシンのメモリーの固定 (ピニング) が必要になるため、仮想マシンのメモリー消費が増加し、仮想マシンのメモリーバルーンが使用できなくなります。

関連情報