OpenStack中的CPU绑核、NUMA亲和、大页内存

2017-11-14  本文已影响3099人  2f486f1742f0

azeqjz OpenStack: OpenStack中的CPU绑核、NUMA亲和、大页内存

Flavor中定义的CPU绑核、NUMA亲和、大页内存

CPU绑核策略

对Libvirt驱动而言,虚拟机的vCPU可以绑定到主机的物理CPU上(pCPU)。这些配置可以改善虚拟机实例的精确度与性能。

注意:
应该摔死主机组来隔离绑核虚拟机与非绑核虚拟机,因为非绑核虚拟机不会顾及绑核虚拟机的资源需求。

$ openstack flavor set FLAVOR-NAME \
    --property hw:cpu_policy=CPU-POLICY \
    --property hw:cpu_thread_policy=CPU-THREAD-POLICY

有效的CPU-POLICY值为:

有效的CPU-THREAD-POLICY值为:

注意:
hw:cpu_thread_policy只在hw:cpu_policy设置为dedicated时有效。

NUMA拓扑

Libvirt驱动程序可以为虚拟机vCPU定义放置的NUMA节点,或者定义虚拟机从哪个NUMA节点分配vCPU与内存。对于内存与vCPU超过计算节点NUMA容量的flavor,NUMA拓扑定义允许主机更好地利用NUMA并提高GuestOS的性能。

$ openstack flavor set FLAVOR-NAME \
    --property hw:numa_nodes=FLAVOR-NODES \
    --property hw:numa_cpus.N=FLAVOR-CORES \
    --property hw:numa_mem.N=FLAVOR-MEMORY

例子:Flavor定义虚拟机有4个vCPU,4096MB内存,以下表示虚拟机的vCPU与内存可以分布在2个NUMA节点。虚拟机的0号与1号vCPU在NUMA 0上,2号与3号vCPU在NUMA 1上。虚拟机的2048MB内存在NUMA 0上,另外的2048MB内存分配到在NUMA 1上。

$ openstack flavor set aze-FLAVOR \
    --property hw:numa_nodes=2 \
    --property hw:numa_cpus.0=0,1 \ 
    --property hw:numa_cpus.1=2,3 \
    --property hw:numa_mem.0=2048 \
    --property hw:numa_mem.1=2048 \

注意:
hw:numa_cpus.N与hw:numa_mem.N只在设置hw:numa_nodes时有效。另外,只有当实例的NUMA节点具有非对称的CPU和RAM分配(对于某些NFV工作负载很重要)时才需要。

注意:
N是虚拟机NUMA节点的索引,并不一定对应主机NUMA节点。例如,在两个NUMA节点的平台,根据hw:numa_mem.0,调度会选择虚拟机NUMA节点0,但是却是在主机NUMA节点1上,反之亦然。类似的,FLAVOR-CORES也是虚拟机vCPU的编号,并不对应与主机CPU。因此,这个特性不能用来约束虚拟机所处的主机CPU与NUMA节点。

警告:
如果hw:numa_cpus.N或hw:numa_mem.N的值比可用CPU或内存大,则会引发错误。

大页内存分配

$ openstack flavor set FLAVOR-NAME \
    --property hw:mem_page_size=PAGE_SIZE

有效的PAGE_SIZE值为:

注意:
大页内存可以分配给虚拟机内存,而不考虑Guest OS是否使用。如果Guest OS不使用大页内存,则它值会识别小页。反过来,如果Guest OS计划使用大页内存,则一定要给虚拟机分配大页内存。否则虚拟机的性能将不及预期。

上一篇下一篇

猜你喜欢

热点阅读