我们使用的Ubuntu12.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 [...] 这位客人的表演结果有点低。我们还没有运行任何基准测试,但假设将VM中的大量数据(文件)从一个目录复制到另一个目录,当我们将CPU模型从"-cpu qemu32“切换到"-cpu Nehalem”时,速度要快得多。文件,需要2:40h左右复制,现在40分钟内复制。当然,这不是一个高质量的测试,也有很大的空间进行更专业的尝试。但这是一个明确的指标,表明选择正确的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主机设备都是相同的(完全相同的硬件)。
那么,有经验的KVM管理员推荐什么呢?有没有一条金科玉律,甚至是一个矩阵,比如“这个模型对那个客户操作系统来说是最好的”?
我很抱歉,如果我能发现我自己的信息-我运行各种谷歌搜索和浏览许多网站。我找不到能回答我问题的东西。
发布于 2012-07-03 12:38:32
这真的很简单。对于同构集群和单个主机设置,请使用host选项。对于混合集群,使用最低可用的CPU版本,因此如果一个主机是Penryn,另一个是Nehalem,则在这两个主机上都使用Penryn。
如果您正在使用RHEV或oVirt,这是内置的。VMWare将其称为"EVC“,并将其定位为一个巨大的功能。
回到性能方面,您肯定需要任何地方都可以使用virtio。如果您仍然遇到性能瓶颈,则通常可以根据具体情况处理这些瓶颈,具体情况取决于这些瓶颈发生在何处。
关于您选择的发行版,我已经在另一个线程超顶中评论了/offtop
发布于 2012-07-02 23:08:27
Windows客户端当前没有VirtIO
不要浪费更多的时间来调整任何东西。
安装virtIO驱动程序并返回。这种差异是如此之大,以至于您现在可以找到的任何增强对于virtIO都没有任何意义。
仅举一个我们的服务器的例子:
发布于 2012-07-02 22:28:05
Qemu的工作方式与许多其他管理程序不同。首先,它可以提供完整的仿真。例如,这意味着您可以在ARM处理器上运行x86代码。在KVM模式下,当你使用它的时候,它实际上不会那么做.无论如何,处理器都是公开的,但是向操作系统报告的内容将被-cpu标志更改。
如果您想要更快的速度,这是一个起点,尝试将虚拟处理器的功能与您的实际处理器尽可能地匹配。这将减少次优操作码被调用来运行任务的情况,还将减少在硬件上不可能首先将操作码转换为其他东西的操作码。由于您的Xeon处理器模型是在2011年初发布的,它可能主要支持核心i7系列。因此,我想说Nehalem架构是您最好的模仿。
引用您的链接之一(调谐KVM):
若要将所有可用的主机处理器功能传递给来宾,请使用命令行开关。
qemu -cpu host如果您希望保持兼容性,可以向您的客户公开所选的功能。如果您的所有主机都具有这些特性,则保留兼容性:
qemu -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic因此,如果您觉得您最终可能会移动到足以造成问题的地方,您可以找到所有您认为您现在或将来可能拥有的处理器支持的所有受支持的指令集,并列出这些支持。
不过,大多数情况下,您都希望坚持使用-cpu host。使用较少可用标志指定CPU意味着应用程序将避免使用可能使其更快的特性。
https://serverfault.com/questions/404195
复制相似问题