KVM内で実行するときにWindowsのパフォーマンスを向上させる方法


14

Ubuntu 12.04 64ビットとKVMを使用しています。CPUはCore i5 3.3 GHzで、8 GBのDDR3 RAMがあります。KVMでWindows 7を実行していますが、非常に遅いです。私の同僚は同じPC構成でDebianを使用しており、Windows 7を非常に高速に実行できます。私の問題はどこにありますか?

[guyfawkes@guyfawkes-pc ~/work]$ sudo cat /etc/libvirt/qemu/windows.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE 
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit windows
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>windows</name>
  <uuid>5c685175-baea-0ca6-591f-8269d923ffb8</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/windows.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:94:63:91'/>
      <source network='default'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='vga' vram='262144' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

UPD:KVMをインストールする前にIntel-VTを有効にしました。VirtIOドライバーを正常にインストールし、いくつかのパフォーマンスが得られましたが、たとえば、WindowsでFirefoxを開くと、マウスでさえ非常に遅くなり、GUIも非常に遅くなります。

KVM仮想マシンマネージャー


CPUはVTテクノロジーをサポートしていますか?
デイジー

はい、それは:)
ガイフォークス

1
Thx-the-ストレージ形式:raw-キャッシュモード:なし(デフォルトではありません!)-I / Oモード:ネイティブ-+ディスクバス:SATAが行いました。Win7のインストール中の「Windowsファイルの展開」は、変更後すぐにカウントアップを開始しましたが、何時間も@ 0%ぶらぶらしていました。キャッシュを無効にするとなぜうまくいくのか疑問に思います。最初にSATA NATIVEとキャッシング(ライトバック)を試してみましたが、キャッシュはNONEに設定されているため、SATA NATIVEは明らかにそれを解決しました...ライトバックキャッシュ?

このアプリケーションの名前は何ですか?
thiagowfx

@ThiagoPerrottaそれはvirt-manager(仮想マシンマネージャー)
doug65536

回答:


11

はじめに、IDEバスをエミュレートするようにVMを構成しましたが、これはかなり遅いです。SATAバスに変更してみてください。

さらに良いことに、Windows 7にvirtioドライバーをインストールし、virtioバスに変更します。

注:Windowsは、その下のハードウェアが変更されていることを訴え、IDEからSATAまたはVirtioに変更した後、ブートディスクを見つけるのが困難になる場合があります。

同様に、NICタイプをvirtioに変更すると、ネットワークパフォーマンスが向上します。

どのバージョンのKVMとカーネルをubuntuで実行していますか?そして、Debianの同じバージョンは何ですか?

確認する価値があるもう1つのことは、同僚がVMのディスクイメージを使用しているのと同じか、それともrawディスクパーティションまたはLVMボリュームなどを使用しているのかということです。ディスクイメージは、パーティションまたはLVMと比較して非常に遅いです。


VirtIOドライバーのインストール方法を説明できますか?
ガイフォークス

実際には、Windowsドライバーではありません。私の専門分野ではありません。Windowsドライバーがインストールされる通常の方法でそれらをインストールすると思います。1、2年前にいくつかのWindows VMに数回インストールしました。IIRCは、CDイメージをマウントし、サブディレクトリの1つでインストーラプログラムを探してクリックするような不器用なものでした。
cas

移行された既存のWindowsイメージにVirtIOドライバーを追加することはできませんでした。ディスクバスをVirtIOとWindowsに再定義しても開始されません。そして、正しいDiskbusなしでVirtIOドライバーをインストールしてみてください。
トッドパートリッジ 'Gen2ly'

実際に、あなたはそれを行うことができますserverfault.com/questions/452854/...
Darokthar

1
はい、要するに、VMに2番目のディスクを追加し、そのためのvirtioドライバーをインストールする必要があります。その後、元のディスクを切り替えてvirtioを使用し、オプションで2番目のディスクをデタッチ/削除できます。
cas

13

また、仮想HDDのパフォーマンスが著しく低下しました。
新しいHDDの次の設定はすべてを修正しました。

  • ストレージ形式:生
  • キャッシュモード:なし(デフォルトではありません!)
  • I / Oモード:ネイティブ

ストレージ形式に関する優れた点。ファイルコンテナの代わりにrawパーティションを使用すると、もう少し改善される場合があります。
0xC0000022L

1
これは受け入れられた答えでなければなりません。ただし、qcow2はフォーマットとしては正常に機能しますが、キャッシュとネイティブがまったくないため、大幅に向上します。
ジョン

9

IDEにインストールしていて、現在virtIOに切り替えたい場合:便利な方法は、セカンダリ(非ブート)virtIOディスクを作成し、VMをブートすることです。この時点で、WindowsはvirtIOドライバーを要求します。それ以外の場合は何らかの方法でインストールを拒否し、その後ブートパーティションをvirtIOに切り替えます。


3

あなたのすべての答えを使用して、私はこの順序で私の方法を見つけました:

インストール:

セルゲイのようなHDDの構成は言った。virt-managerを使用してVMを作成するときは、すぐにディスクを作成せず(「ストレージを有効にする...」をクリックします)、次の画面で「インストール前に構成をカスタマイズする」をクリックし、このオプションでHDDを手動で作成します:

- Storage format: raw
- Cache mode: none (not default!)
- I/O mode: native
- + Disk bus : SATA

私にとっては、インストールは15分未満で完了します(デフォルトパラメータで2時間以上経過した後、進行の27%ではなく)。

最初の再起動:

- Disk bus : IDE (or windows will not boot)
- Installation of the [latest drivers][1] 
  (For that, devices management/install old components/type: storage)

システムを停止し、ディスクバスをvirtioに変更し、再起動します。

「喜び!


1

WindowsでVirtIOドライバーをインストールする必要があります。Fedoraでビルドされたドライバーダウンロードするか、ソースから独自のドライバーをビルドできます。詳細については、KVMのドキュメントを参照してください。


2
リンクを投稿するだけでなく、回答の主要なポイントを直接要約し、さらに参照するためにリンクを提供してください。回答で予想される最小の種類については、私の編集を参照してください。または、このリンクに説明などを提供するクレイグの回答を参照してください。詳細については、回答方法をご覧ください。
ジル「SO-悪であるのをやめる」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.