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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack中的CPU绑核、NUMA亲和、大页内存相关的知识,希望对你有一定的参考价值。

参考技术A

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

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

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

有效的CPU-POLICY值为:

有效的CPU-THREAD-POLICY值为:

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

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

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

注意:
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或内存大,则会引发错误。

有效的PAGE_SIZE值为:

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

以上是关于OpenStack中的CPU绑核、NUMA亲和、大页内存的主要内容,如果未能解决你的问题,请参考以下文章

Linux 操作系统原理 — NUMA 架构中的多线程调度开销与性能优化

cpu亲和性绑定

ceph 14 后 ceph adm支持自动配置numa

怎样才能找出哪个 CPU 内核正在运行该进程?

Linux 操作系统原理 — 进程管理 — NUMA 架构中的多线程调度开销与性能优化

NGINX原理 之 CPU绑定(CPU亲和性)