Contents [] |
---|
|
写在前面
物理CPU核数为12,能虚拟多少虚拟核的机器?openstack的默认使用nova hypersisor-stats获取到的vcpus值就是24(超线程),而虚拟内核和机器的内核数不是一一对应的。
openstack的自有设置
openstack的配置文件/etc/nova/nova.conf中有配置
#cpu_allocation_ratio=16.0#disk_allocation_ratio=1.0#ram_allocation_ratio=1.5
分别的都是真实内核和虚拟内核(16:1),真实内存和虚拟内存(1.5:1),真实磁盘盒虚拟磁盘(1:1)的比例,说明openstack是清楚的表示我们的vcpus应该是一个虚拟内核数,而不是计算节点的真实内核数。
解决办法
按照openstack提供的patch解决: 其实主要原理就是将我们的配置文件的值*真实内核,内存,得到我们的vcpu,vmemory,vdisk.
最终解决办法
没有按照官方的解决办法,因为官方的解决版本测试版本不正确。使用我们自己的解决办法。 实际解决办法: 在/usr/lib/python2.6/site-package/nova/api/openstack/compute/contrib/hypervisors.py的 245行加上:
stats['vcpus'] = int(stats['vcpus']*10)stats['memory_mb'] = int(stats['memory_mb']*1.2
143行加上:
hyp_dict['vcpus'] = int(hyp_dict['vcpus'])*10hyp_dict['memory_mb'] = int(hyp_dict['memory_mb'])*1.2
重启所有控制节点的nova-api服务,然后再查看结果,执行结果:
[root@node-5 nova]# nova hypervisor-show 1+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Property | Value |+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| hypervisor_hostname | node-12.domain.tld || cpu_info | {"vendor": "Intel", "model": "SandyBridge", "arch": "x86_64", "features": ["pdpe1gb", "osxsave", "dca", "pcid", "pdcm", "xtpr", "tm2", "est", "smx", "vmx", "ds_cpl", "monitor", "dtes64", "pbe", "tm", "ht", "ss", "acpi", "ds", "vme"], "topology": {"cores": 6, "threads": 2, "sockets": 1}} || free_disk_gb | 1167 || hypervisor_version | 1002001 || disk_available_least | 1105 || local_gb | 3667 || free_ram_mb | -62869 || id | 1 || vcpus_used | 125 || hypervisor_type | QEMU || local_gb_used | 2500 || memory_mb_used | 256512 || memory_mb | 193643 || current_workload | 0 || vcpus | 240 || running_vms | 21 || service_id | 25 || service_host | node-12.domain.tld |+----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
可以看到,1这个计算节点的vcpus数目成了240.