如何设置Openstack 虚拟机的Numa架构和Cpu亲和性

本文介绍了OpenStack中如何设置虚拟机的NUMA架构和CPU固定,包括CPU拓扑、NUMA策略和CPU绑定策略。内容涵盖了启用CPU pinning功能的步骤,以及在配置实例CPU拓扑时的注意事项。还讨论了热迁移问题,特别是针对已绑定CPU的虚拟机,需要启用`enable_numa_live_migration`来允许热迁移,但可能存在资源冲突的问题。
摘要由CSDN通过智能技术生成

CPU拓扑

OpenStack中的NUMA拓扑和CPU固定功能可提供对实例在虚拟机管理程序CPU上的运行方式以及实例可用的虚拟CPU拓扑的高级控制。这些功能有助于最大程度地减少延迟并提高性能。

SMP,NUMA和SMT

对称多处理器(SMP)

SMP是在许多现代多核系统中发现的设计。在SMP系统中,有两个或多个CPU,并且这些CPU通过某种互连连接。这为CPU提供了对系统资源(如内存和输入/输出端口)的同等访问权限。

非统一内存访问(NUMA)

NUMA是SMP设计的派生产品,可在许多多路插座系统中找到。在NUMA系统中,系统内存分为与特定CPU关联的单元或节点。通过互连总线可以请求其他节点上的内存。但是,此共享总线上的带宽是有限的。结果,对此资源的竞争可能会导致性能下降。

同时多线程(SMT)

SMT是SMP的补充设计。SMP系统中的CPU共享总线和一些内存,而SMT系统中的CPU共享更多组件。共享组件的CPU被称为线程同级。所有CPU在系统上均显示为可用CPU,并且可以并行执行工作负载。但是,与NUMA一样,线程争夺共享资源。

非统一I / O访问(NUMA I / O)

在NUMA系统中,映射到本地内存区域的设备的I / O比远程设备的I / O效率更高。连接到同一插槽(提供CPU和内存)的设备由于其物理上的接近性而为I / O操作提供了较低的延迟。通常,这会在连接到PCIe总线的设备(例如NIC或vGPU)中体现出来,但适用于任何支持内存映射的I / O的设备。

在OpenStack中,SMP CPU被称为核心,NUMA单元或节点被称为 套接字,SMT CPU被称为线程。例如,具有超线程功能的四路,八核系统将具有四个插槽,每个插槽八个核心,每个核心两个线程,总共64个CPU。

如何启用cpu pinning功能

  1. 需要配置vcpu_pin_set

Defines which physical CPUs (pCPUs) can be used by instance virtual CPUs (vCPUs).

Possible values:

  • A comma-separated list of physical CPU numbers that virtual CPUs can be allocated to by default. Each element should be either a single CPU number, a range of CPU numbers, or a caret followed by a CPU number to be excluded from a previous range. For example:

vcpu_pin_set = "4-12,^8,15"

划分出虚拟机专用的 pCPUs 来保证性能,另一方面,也是为了防止 Guest 过分争抢 Host 进程的 CPU 资源,为 Host 适当的留下一些 CPU 以保证正常运作。

2. 启用NUMATopologyFilter

nova-scheduler服务的nova.conf里

[filter_scheduler]

enabled_filters里添加上NUMATopologyFilter

Numa拓扑策略

To restrict an instance's vCPUs to a single host NUMA node, run:

--property hw:numa_nodes=1

某些工作负载对内存访问延迟或带宽的要求非常苛刻,超过了单个NUMA节点可用的内存带宽。对于此类工作负载,将实例分布在多个主机NUMA节点上是有益的,即使实例的RAM / vCPU理论上可以在单个NUMA节点上安装也是如此。要强制实例的vCPU分布在两个主机NUMA节点上

To force an instance's vCPUs to spread across two host NUMA nodes, run:

--property hw:numa_nodes=2

如果想配置非对称的cpu/内存,可以显式地在flavor里指定

To spread the 6 vCPUs and 6 GB of memory of an instance across two NUMA nodes and create an asymmetric 1:2 vCPU and memory mapping between the two nodes, run:

--property hw:numa_nodes=2

--property hw:numa_cpus.0=0,1 --property hw:numa_mem.0=2048

--property hw:numa_cpus.1=2,3,4,5 --property hw:numa_mem.1=4096

CPU绑定策略

To configure a flavor to use pinned vCPUs, a use a dedicated CPU policy.

--property hw:cpu_policy=dedicated \

--property hw:cpu_thread_policy=require,isolate,prefer

By default, when instance NUMA placement is not specified, a topology of N sockets, each with one core and one thread, is used for an instance, where N corresponds to the number of instance vCPUs requested.

如果没有指定numa配置, 默认为1个numa, N个socket, 1个核,1个线程, N个vCPU对应N个socket

When instance NUMA placement is specified, the number of sockets is fixed to the number of host NUMA nodes to use and the total number of instance CPUs is split over these sockets.

如果设置numa策略,sockets会和主机numa个数相关,但实测中看到,一般会设置为core=1,threads=2,sockets=Nvcpu/2。可以结合cpu_sockets,cpu_cores࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值