| Contents [hide] |
|---|
寫在前面
物理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解決:https://review.openstack.org/#/c/93168/ 其實主要原理就是將我們的配置文件的值*真實內核,內存,得到我們的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'])*10 hyp_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.
