在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技术?
雏菊2012年

是的,它确实有:)
盖伊·福克斯

1
Thx---存储格式:原始-缓存模式:无(不是默认值!)-I / O模式:本机-+磁盘总线:SATA做到了。Win7安装期间的“扩展Windows文件”确实在更改后立即开始计数,而不是在0%左右徘徊数小时。我不知道为什么禁用缓存能解决问题,因为我第一次尝试将SATA NATIVE和Caching(Writeback)完全吸尽,而将SATA NATIVE的缓存设置为NONE显然解决了它……通常我希望性能会有所提高写回缓存?

该应用程序的名称是什么?
thiagowfx 2015年

@ThiagoPerrotta那是virt-manager(虚拟机管理器)
doug65536

Answers:


11

首先,您已经将VM配置为模拟IDE总线,这非常慢。尝试将其更改为SATA总线。

更好的是,在Windows 7中安装virtio驱动程序,然后将其更改为virtio总线。

注意:Windows可能会抱怨其下面的硬件已更改,并且在从IDE更改为SATA或Virtio后,可能很难找到启动盘。

同样,如果将NIC类型更改为virtio,则可以提高网络性能。

您在ubuntu上运行什么版本的KVM和内核?以及debian上的哪个版本?

值得检查的另一件事是:您的同事是否正在使用VM的磁盘映像,或者您是否正在使用原始磁盘分区或LVM卷或类似磁盘?与分区或LVM相比,磁盘映像非常慢。


您能描述一下如何安装VirtIO驱动程序吗?
盖伊·福克斯

并非如此,它们是Windows驱动程序。不是我的专业领域。我猜你以安装Windows驱动程序的通常方式安装它们。一两年前,我确实在一些Windows VM上安装了几次。IIRC有点笨拙,例如挂载CD映像并在其中一个子目录中寻找安装程序,然后单击它。
cas 2012年

我无法在已迁移的Windows映像上添加VirtIO驱动程序。将磁盘总线重新定义到VirtIO和Windows不会启动;并尝试在没有允许的正确Diskbus的情况下安装VirtIO驱动程序。
Todd Partridge'Gen2ly'2014/

其实你可以做到这一点serverfault.com/questions/452854/...
Darokthar

1
是的,简而言之,您必须向虚拟机添加第二个磁盘,并为此安装virtio驱动程序。之后,您可以将原始磁盘切换为使用virtio,还可以选择分离/删除第二个磁盘。
cas 2015年

13

虚拟硬盘的性能也令人难以置信。
新硬盘上的以下设置纠正了所有问题:

  • 存储格式:原始
  • 缓存模式:无(不是默认值!)
  • I / O模式:本机

关于存储格式的要点。使用原始分区而不是文件容器也可能会有所改善。
0xC0000022L 2015年

1
这应该是公认的答案。尽管qcow2可以很好地作为一种格式使用,但是没有缓存和本地格式绝对可以带来巨大的提升。
约翰·约翰(John John)

9

对于安装在IDE上并且现在希望切换到virtIO的任何人:一种简便的方法是创建辅助(非引导)virtIO磁盘,启动VM-此时Windows会要求virtIO驱动程序,它以某种方式拒绝安装-并随后将引导分区切换到virtIO。


3

使用所有答案,我按以下顺序找到了自己的出路:

安装方式

像Sergey所说的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
请不要仅仅发布链接,直接在答案中总结要点,并提供链接以供进一步参考。请参阅我的编辑,以了解我们期望的最低答案。或参见Craig的答案,该答案为该链接提供了解释以及更多其他信息。阅读如何回答以获取更多信息。
吉尔(Gilles)“所以,别再邪恶了”
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.