
大家好,
现在遇到一个问题,采用Linux的KVM虚拟化以后对应CPU资源的控制可以实现。例如有一个用户申请了一个虚拟机,只需要一个奔腾3处理器计算能力, 我在分配虚拟机的时候如何指定虚拟机的计算资源的能力。VMware中直接可以精确到Hz级的控制,KVM中如何去实现。我研究了一下KVM 创建 时候的某些参数,目前好像有一个-cpu的参数:
kevin@kevin:~/ISO$ kvm -cpu ?
x86 Opteron_G3
x86 Opteron_G2
x86 Opteron_G1
x86 Nehalem
x86 Penryn
x86 Conroe
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]
x86 [host]
如果我使用-cpu这个参数可以指定相应型号的CPU,是否这样就可以,我用tinyLinux做了测试,目前看上去可以。想请教一下群里的 大 牛,这样是否就真的能做到CPU频率的控制,具体到CPU调度的时候是如何实现的,谢谢!
下图是我在tinyLinux测试的结果:
kevin@kevin:~/ISO$ kvm -cpu pentium3 -cdrom Core.iso
kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"
The number of virtual CPUs to create, as per the 'vcpu' XML element:
<vcpu cpuset='1'>1</vcpu>
If the 'cpuset' parameter is given, libvirt
will call 'sched_setaffinity' to map the virtual CPU threads
onto the requested physical CPUs.
我觉得你在折腾这个之前,先测试一下性能损失。一般来说使用KVM是因为KVM相对QEMU,性能相当高。我测试下 来可以达到原始系统八成的性能,具体要看应用的形态。凡是频繁涉及内核态切换的应用会比较慢,如果是纯计算几乎是100%的性能。
而KVM会让guest的CPU和host一致。如果你更换CPU,很可能导致(只是可能)性能下降。这个就得不偿失了,把KVM 退化成了QEMU来用。
在 2012年3月12日 上午9:43,kevinzhang <zhangj...@gmail.com>写 道:
On 03/11/2012 10:40 PM, kevinzhang wrote:
大家好,
现在遇到一个问题,采用Linux的KVM虚拟化以后对应CPU资源的控制可以实现。例如有一个用户申请了一个虚拟机,只需要一个奔腾3处理器计算能力, 我在分配虚拟机的时候如何指定虚拟机的计算资源的能力。VMware中直接可以精确到Hz级的控制,KVM中如何去实 现。我研究了一下KVM 创建 时候的某些参数,目前好像有一个-cpu的参数:
kevin@kevin:~/ISO$ kvm -cpu ?
x86 Opteron_G3
x86 Opteron_G2
x86 Opteron_G1
x86 Nehalem
x86 Penryn
x86 Conroe
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]
x86 [host]
如果我使用-cpu这个参数可以指定相应型号的CPU,是否这样就可以,我用tinyLinux做了测试,目前看上去可 以。想请教一下群里的 大 牛,这样是否就真的能做到CPU频率的控制,具体到CPU调度的时候是如何实现的,谢谢!
下图是我在tinyLinux测试的结果:
kevin@kevin:~/ISO$ kvm -cpu pentium3 -cdrom Core.iso
kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"
早上研究了一下,也可以通过-smp参数来绑定vcpu和物理cpu的关系:
http://wiki.libvirt.org/page/QEMUSwitchToLibvirt#-smp
-smp
The number of virtual CPUs to create, as per the 'vcpu' XML element:
<vcpu cpuset='1'>1</vcpu>
If the 'cpuset' parameter is given, libvirt will call 'sched_setaffinity' to map the virtual CPU threads onto the requested physical CPUs.
群里的朋友,有人能再给出一些建议不?谢谢鸟!
大家好,
现在遇到一个问题,采用Linux的KVM虚拟化以后对应CPU资源的控制可以实现。例如有一个用户申请了一个虚拟机,只需要一个奔腾3处理器计算能力, 我在分配虚拟机的时候如何指定虚拟机的计算资源的能力。VMware中直接可以精确到Hz级的控制,KVM中如何去实现。我研究了一下KVM创建 时候的某些参数,目前好像有一个-cpu的参数: