31.13. KVM ネットワーキングパフォーマンス

デフォルトで、KVM 仮想マシンは仮想 Realtek 8139 (rtl8139) NIC (network interface controller) に 割り当てられています。
rtl8139 仮想化 NIC は ほとんどの環境で正常に機能します。しかし、このデバイスは 一部のネットワーク上(例えば、10 Gigabit Ethernet ネットワーク)でパフォーマンス 劣化問題を被る可能性があります。
回避策としては、仮想化 NIC の異なるタイプに切り替えることです。例えば、 Intel PRO/1000 (e1000) や、あるいは、virtio(para-virtualized ネットワークドライバー)。
e1000 ドライバーに切り替えるには:
  1. ゲストオペレーティングシステムをシャットダウンします。
  2. ゲストの設定ファイルを virsh コマンドで編集します。 (ここで、GUEST とはゲスト名です):
    # virsh edit GUEST
    virsh edit コマンドは $EDITOR シェル変数を使用して使用するエディタを決定します。
  3. 設定内でネットワークインターフェイスセクションを見つけます。このセクションは、 以下の snippet に似ています:
    <interface type='network'>
      [output truncated]
      <model type='rtl8139' />
    </interface>
    
  4. モデルエレメントのタイプ属性を 'tl8139' から 'e1000' へ変更します。これが rtl8139 ドライバーから e1000 ドライバーへとドライバーを変換します。
    <interface type='network'>
      [output truncated]
      <model type='e1000' />
    </interface>
    
  5. 変更を保存してテキストエディタを終了します。
  6. ゲストオペレーティングシステムを再スタートします。
別の方法では、異なるネットワークドライバーを使用して、新しい仮想化ゲストを インストールする方法があります。ネットワーク接続でゲストのインストールが 難しい場合に、この方法が必要になるかも知れません。この方法では、ユーザーが 既に作成済の仮想化マシンを少なくとも1つ持っていて(多分、CD か DVD でインストール済み) それをテンプレートとして使用することが要求されます。
  1. 既存の仮想マシンから XML テンプレートを作成します:
    # virsh dumpxml GUEST > /tmp/guest.xml
    
  2. XML ファイルをコピーして編集により、特有のフィールドを更新します: 仮想マシン名、 UUID、ディスクイメージ、MAC アドレス、他の特有なパラメータ。UUID と MAC アドレスの 行を削除すると、virsh が UUID と MAC アドレスを生成します。
    # cp /tmp/guest.xml /tmp/new-guest.xml
    # vi /tmp/new-guest.xml
    
    ネットワークインターフェイスセクションにモデルの行を追加します:
    <interface type='network'>
      [output truncated]
      <model type='e1000' />
    </interface>
    
  3. 新しい仮想マシンを作成します:
    # virsh define /tmp/new-guest.xml
    # virsh start new-guest
    
e1000 or virtio ドライバーを使用した方がネットワークパフォーマンスは良くなります。 (BZ#517181)