我们使用的Ubuntu 12.04具有以下参数:
我们在这台机器上运行了多个Windows客户机,其中一台是Windows 2003 32位,另一台是Windows 2008(64位)。 我们目前正在努力解决性能问题,并与CPU模型一起玩。
我们通常为我们的Windows 32位来宾使用“qemu-system-x86_64”,例如:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
这个客人的performance竟然有点低。 我们还没有运行任何基准testing,但假设当我们将CPU模型从“-cpu qemu32”切换到“-cpu Nehalem”时,将VM内部的大量数据(文件)从一个目录复制到另一个目录”。 花费约2小时40分钟的文件现在在40分钟内复制。 当然,这不是一个高质量的testing,有更多的职业尝试的空间。 但是这是一个明确的指标,select正确的CPU模型会严重影响客户的性能。
现在我好奇,跑了:
qemu-x86_64 -cpu ? x86 [n270] x86 [athlon] x86 [pentium3] x86 [pentium2] x86 [pentium] x86 [486] x86 [coreduo] x86 [kvm32] x86 [qemu32] x86 [kvm64] x86 [core2duo] x86 [phenom] x86 [qemu64]
和:
kvm -cpu ?model x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron) x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron) x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron) x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7) x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2) x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2) x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz x86 [athlon] QEMU Virtual CPU version 1.0 x86 [pentium3] x86 [pentium2] x86 [pentium] x86 [486] x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz x86 [kvm32] Common 32-bit KVM processor x86 [qemu32] QEMU Virtual CPU version 1.0 x86 [kvm64] Common KVM processor x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor x86 [qemu64] QEMU Virtual CPU version 1.0
所有这些不同的版本,有点难以揣测。 “Nehalem”似乎是该名单上性能最高的一个。 现在我想知道,如何判断哪个CPU模型对我的客人是最好的? 浏览互联网,我发现以下资源:
当我正确地阅读这些网站时,他们声称“-cpu主机”可能会带来最好的性能。 我对迁移没有任何担心,因为两个KVM主机都是平等configuration的(完全相同的硬件)。
那么,有经验的KVMpipe理员推荐什么? 有没有一个黄金法则,甚至matrix,就像“这个模型是最好的客户操作系统”?
我很抱歉,如果我能自己find这个信息 – 我跑了各种谷歌search,浏览了很多网站。 我无法find回答我的问题的东西。
这真的很简单。 对于同类群集和单主机设置,请使用host
选项。 对于混合群集,使用最低的可用CPU版本,所以如果一个主机是Penryn,另一个是Nehalem,则两者都使用Penryn。
如果您使用的是RHEV或oVirt,则已经内置了这个function。VMWare具有这个名为“EVC”的function,并将其定位为一个巨大的function。
回到性能上,你绝对需要virtio,你可以放在任何地方。 如果你仍然遇到性能瓶颈,通常可以根据每个案例的情况来处理这些瓶颈,具体取决于它们发生的位置。
[offtop]在你的发行select我已经在另一个线程[/ offtop]
Windows客人目前没有VirtIO
不要在调整任何东西的时候浪费更多的时间。
安装virtio驱动程序并返回。 差异是如此之大,以至于现在可以find的任何增强都不会与virtIO有任何意义。
只是我们的一个服务器的例子:
– 没有virtio一个W2k3可以处理大约10个terminal服务器用户
– 与virtIO,相同的操作系统相同的操作系统目前可以处理120到125个用户,几乎没有减速。 而且我们又增加了一台运行SQL Server的虚拟机作为同一台物理机
Qemu不像其他pipe理程序那样工作。 对于初学者来说,它可以提供完整的模拟。 这意味着您可以在ARM处理器上运行x86代码。 当处于KVM模式时,正如您使用的那样,实际上并没有这样做……处理器无论如何都被暴露,但是向OS报告的内容将被-cpu
标志改变。
如果你想要更快的速度,那么尽可能的把虚拟处理器的function与真实的处理器进行匹配是一个起点。 这将减less调用次优操作码来运行任务的情况,并且还会减less硬件上不可能被首先转换为其他东西的操作码。 由于您的Xeon处理器型号于2011年初发布,因此可能支持Core i7系列。 为此,我会说,Nehalem架构是你最好的模拟。
引用您的其中一个链接( Tuning KVM ):
要将所有可用的主机处理器function传递给来宾,请使用命令行开关
qemu -cpu host
如果您希望保持兼容性,则可以将选定的function展示给您的客人。 如果所有主机都具有这些function,则保留兼容性:
qemu -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic
因此,如果您觉得最终可能导致问题发生,那么您可以find所有支持的指令集,您认为现在或将来可能有的处理器支持并列出这些指令集。
但大多数时候,你想坚持-cpu host
。 指定具有较less可用标志的CPU意味着应用程序将避免使用可能使其更快的function。
你得到'-cpu主机'选项困惑。 此选项不会只启用所有主机系统特有的CPUfunction,它将启用CPU支持的所有function,即使您的CPU不支持,也可以模拟所有function。
-CPU主机
是一个不错的select,但不是最有效的,因为它可能启用可被模拟的选项,以至于你的cpu不支持,客户端系统可以在任何时候尝试使用其中一个需要被模拟的function。
来源: http : //wiki.qemu.org/Features/CPUModels
CentOS 6.7在Dell R910上给了我适当的KVM + Spice性能。 我认为,一旦你给它一个镜头,你不会回到其他任何事情(认真)!