22.10. KVM ネットワークのパフォーマンス

デフォルトでは、KVM 仮想マシンには、Realtek 8139 (rtl8139) NIC (ネットワークインターフェースコントローラー) が割り当てられています。Red Hat Enterprise Linux のゲストには、デフォルトで virtio NIC が割り当ててられますが、Windows ゲストにはゲストタイプは指定されません。
rtl8139 仮想化 NIC はほとんどの環境で正常に機能します。しかし、このデバイスは、たとえば 10 Gigabit Ethernet ネットワークなどの一部のネットワークでは、パフォーマンスが低下する問題の原因となる場合があります。
パフォーマンスを改善するには、準仮想化ネットワークドライバーに切り替えます。

注記

エミュレートするドライバーの選択肢として、仮想化した Intel PRO/1000 (e1000) ドライバーもサポートされています。e1000 ドライバーを使用する場合は、 以下の手順にある virtio の部分を e1000 に置き換えます。最善のパフォーマンスを得るには、virtio ドライバーの使用が推奨されます。

手順22.3 virtio ドライバーに切り替える

  1. ゲストのオペレーティングシステムをシャットダウンします。
  2. virsh コマンドを使用してゲストの設定ファイルを編集します (GUEST はゲスト名)。
    # virsh edit GUEST
    virsh edit コマンドでは、使用するエディターは $EDITOR シェル変数で確定されます。
  3. ネットワークインターフェースの設定セクションを見つけます。以下にネットワークインターフェースの設定セクションを抜粋した部分を示します。
    <interface type='network'>
      [出力は省略されています]
      <model type='rtl8139' />
    </interface>
  4. model 要素のタイプ属性を 'rtl8139' から 'virtio' に変更します。これによりドライバーが rtl8139 から virtio に変更されます。
    <interface type='network'>
      [output truncated]
      <model type='virtio' />
    </interface>
  5. 変更を保存して、エディターを終了します。
  6. ゲストのオペレーティングシステムを再開します。
他のネットワークドライバーを使用して新しいゲストを作成する

別のネットワークドライバーで新規のゲストを作成することもできます。ネットワーク接続によるゲストのインストールが困難な場合に、この手段が必要になるかもしれません。この方法では、 テンプレートとして使用するゲストが少なくとも1つすでに作成されていなければなりません (CD か DVD などからインストール)。

  1. 既存のゲスト (この例では、ゲスト名 Guest1) から XML テンプレートを作成します。
    # virsh dumpxml Guest1 > /tmp/guest-template.xml
  2. XML ファイルをコピーし、仮想マシンの名前、UUID、ディスクイメージ、MAC アドレス、その他固有のパラメーターなどのフィールドを編集して更新を行います。UUID と MAC アドレスの行は削除して構いません。virsh により UUID と MAC アドレスが生成されます。
    # cp /tmp/guest-template.xml /tmp/new-guest.xml
    # vi /tmp/new-guest.xml
    ネットワークインターフェースのセクションにモデルの行を追加します。
     <interface type='network'>
      [output truncated]
      <model type='virtio' />
    </interface>
  3. 新規の仮想マシンを作成します。
    # virsh define /tmp/new-guest.xml
    # virsh start new-guest