解决Openstack 创建Windows虚拟机只有2个CPU问题

251 阅读2分钟

问题描述****

OpenStack部署出来的Windows虚拟机,CPU内存很足(如16C48G),但是使用起来依然卡顿。

问题分析****

登录虚拟机系统检查cpu信息发现,在设备管理器里能查看到16个cpu,但是实际使用时,只有2个cpu。所以系统实际只有2个cpu在工作,导致资源耗尽,影响正常使用。

image.png

解决方案概述****

经调查确定,该问题是由libvirt引起。配置2核以上时,运行windows桌面版的虚拟机,只能识别2核。

 

方案1:通过修改该虚拟机的xml文件解决。

方案2:通过修改改虚拟机关联的flavor元数据解决。

具体实施步骤****

实施方案1:****

步骤1/4:定位实例****

通过nova list和nova show查看实例名称,定位实例所在计算节点:

image.png

如上图,实例名称:instance-00000037;所在计算节点:control01

步骤2/4:修改实例****

登录计算节点control01(如果是容器化部署,进入nova_libvirt容器下)。

在/etc/libvirt/qemu/路径下,用virsh edit instance-00000037修改实例xml文件。

image.png

需修改如下字段:

image.png

注:该字段表示2路cpu,每一路8个核,单线程。

步骤3/4:定义实例****

使用virsh define保存修改:virsh define /etc/libvirt/qemu/instance-00000037.xml

步骤4/4:重启实例****

1)使用virsh destroy instance-00000037关机

2)使用virsh destroy instance-00000037开机

 

实施方案2:****

步骤1/2:flavor添加元数据****

openstack flavor set {flavorName} \

     --property hw:cpu_sockets=2 \

     --property hw:cpu_cores=8 \

     --property hw:cpu_threads=1

image.png

image.png

注:该字段表示2路cpu,每一路8个核,单线程。

步骤2/2:重建虚拟机****

 

优化效果****

查看CPU核数****

实例启动完成后,再次登录系统,检查CPU核数:

image.png

如上图,系统中实际使用16个cpu。

绑定CPU****

为了防止应用进程将16核都占满。先分配0~7这个8个核给该进程使用。这样即使这个8个核都占满,总体CPU使用率也只有50%,不会影响系统正常使用。

image.png

如上图,指定CPU 0~7运行xampp。