guest os 为centos7
1)配置虚拟机的xml文件:
<!-- 配置CPU数目 -->
<
vcpu
placement
=
'auto'
current
=
"1"
>
4
</
vcpu
>
设置虚拟机默认使用的cpu个数是1个 , 但是最大可以添加到4个
2)启动虚拟机,在guest中查看虚拟机个数:
ls /sys/devices/system/cpu
会看到cpuX 的目录,x是(1,2,3.......),有几个这样的目录代表有几个cpu.因为在xml里面current=1,所以之可以看到cpu0目录
3)在host上使用virsh命令添加cpu:
virsh setvcpus test 2 --live
执行后,在guest再执行
ls /sys/devices/system/cpu ,此时会看到有两个目录cpu0, cpu1 说明已经添加成功了,但是执行
cat /proc/interrupys 会看到还是只有以cpu0在工作,这是因为通过virsh热添加的cpu默认的状态是关闭的,需要执行以下命令打开
cpu: echo '1' > /sys/devices/system/cpu/cpuX/online (x 代表 1,2,3.....)
4)此时再去查看 cat /proc/interrupts 会看到两个cpu都已经开始工作
5)virsh setvcpus --config test 2
这条命令设置的是下一次引导时虚拟机的cpu个数,并且会自动启动
6)virsh setvcpus --maximum test 8
这条命令设置的下一次引导时虚拟机可以使用的最大cpu个数
7) virsh setvcpus --guest test 6
在虚拟机中修改 cpu 状态 (个人理解:好像需要qga的支持)
--config 写到配置文件里面,下次重启虚拟机有效
--live 影响正在运行的虚拟机,虚拟机进程消失后效果消失,默认是这种模式
--current 影响停止和正在运行的虚拟机,如果虚拟机运行,虚拟机进程停止后,效果消失
只支持cpu的热添加,不支持cpu的热删除,并且个数不能超过之前在xml文件里面设置的最大个数
guest os 为win7
同样修改虚拟机的xml文件,测试的结果是virsh setvcpus test 2 --live 执行结果成功,在设备管理其里里面也可以看到增加的cpu,但是计算机->属性看到的处理器个数还是原来的,并且在任务管理器里面看到的也是只有原来个数的cpu在运行
结论: 在win7上cpu热添加行不通,原因是win7没有对热添加的cpu直接运行的方法,有人测试过过win8 server he 2012 好像是可以