OpenStack中的CPU与内存超分详解

目录

什么是超分

CPU超分

查看虚拟机虚拟CPU运行在哪些物理CPU上

内存超分

内存预留

内存共享

如何设置内存预留和内存共享

全局设置

临时设置

什么是超分

超分通常指的是CPU或者GPU的分区或者分割,以在一个物理CPU或GPU内模拟多个逻辑CPU或GPU的功能。这种技术通常被称为虚拟化,允许多个操作系统或者应用程序在同一物理硬件上同时运行,从而提高了资源利用率和系统性能。

在CPU超分方面,一种常见的技术是使用硬件虚拟化,例如Intel的虚拟化技术(VT-x)或AMD的虚拟化技术(AMD-V)。这些技术可以允许多个虚拟机在同一物理CPU上运行,并为每个虚拟机提供虚拟化的CPU、内存和I/O设备。

在GPU超分方面,也有类似的技术,例如Nvidia的虚拟GPU(vGPU)和AMD的虚拟化GPU(vGPU),允许多个虚拟机共享一块物理GPU,并为每个虚拟机提供虚拟化的GPU资源。

CPU超分

在OpenStack中,CPU超分比例(CPU overcommit ratio)是指将虚拟机虚拟CPU核心的数量设置为物理主机实际CPU核心数量的倍数。这允许多个虚拟机共享物理CPU资源。您可以在OpenStack中的nova.conf配置文件中设置CPU超分比例。默认情况下,该值设置为1.0,这意味着每个虚拟CPU内核将映射到物理主机的一个CPU内核。您可以通过修改以下行来更改CPU超分比例的值:

cpu_allocation_ratio = <ratio>

其中<ratio>是您要设置的CPU超分比例值。例如,如果您希望将CPU超分比例设置为2.0,则应将此值设置为2.0。请注意,将此值设置得太高可能会导致虚拟机之间的CPU竞争,从而导致性能下降。因此,建议在设置CPU超分比例时谨慎行事。 

查看虚拟机虚拟CPU运行在哪些物理CPU上

virsh vcpuinfo <VM ID>

[root@bj05-compute-s6-10e33e18e78 ~]# virsh vcpuinfo 2ce42431-aba8-47d9-bc78-1be47f2b93a4
VCPU:           0
CPU:            80
State:          running
CPU time:       11029.1s
CPU Affinity:   ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------

VCPU:           1
CPU:            84
State:          running
CPU time:       11776.3s
CPU Affinity:   ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------

VCPU:           2
CPU:            37
State:          running
CPU time:       12852.5s
CPU Affinity:   ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------

VCPU:           3
CPU:            84
State:          running
CPU time:       13374.2s
CPU Affinity:   ------------------------yyyyyyyyyyyyyyyyyy------------------------------yyyyyyyyyyyyyyyyyy------

内存超分

在OpenStack中也存在内存超分的概念,它允许您在虚拟机中分配超过物理主机可用内存的虚拟内存。内存超分的实现方式类似于CPU超分,它基于内存预留和内存共享两种技术。

内存预留

在内存预留模式下,每个虚拟机被分配一定数量的内存,该内存在虚拟机创建时就被分配并保留,即使虚拟机并未使用该内存。

内存共享

在内存共享模式下,多个虚拟机共享相同的物理内存,这可以使您在不损害性能的情况下更好地利用物理主机的内存资源。

如何设置内存预留和内存共享

全局设置

在OpenStack中,您可以通过编辑nova.conf配置文件来进行全局设置,以配置内存预留和内存共享选项。以下是相关配置项的说明:

  • 内存预留:

要设置全局内存预留选项,请在nova.conf配置文件中添加以下行:

ram_allocation_ratio = <ratio>

其中<ratio>是您要设置的内存超分比例值。默认值为1.5,这意味着虚拟机可以分配的内存量可以超过物理主机可用内存的一半。

  • 内存共享:

要设置全局内存共享选项,请在nova.conf配置文件中添加以下行:

ram_allocation_policy = <policy>

其中<policy>可以是"dedicated"(表示禁用内存共享)或"shared"(表示启用内存共享)。默认值为"dedicated",这意味着内存共享是禁用的。

请注意,全局设置将适用于所有虚拟机,但在创建或编辑虚拟机时,您可以覆盖这些设置并设置特定的内存预留和内存共享选项。

临时设置

  • 内存预留:

在创建或编辑虚拟机时选择“预留”内存的选项,并指定要为虚拟机预留的内存数量。您还可以使用OpenStack的API或命令行工具设置虚拟机的内存预留。例如,在nova命令行工具中,您可以使用以下命令将虚拟机的内存预留设置为2 GB:

nova flavor-key <flavor-name> set "hw:mem_reservation"=2048

其中<flavor-name>是您要设置的虚拟机规格的名称。

  • 内存共享:

在创建或编辑虚拟机时选择“共享”内存的选项。您还可以使用OpenStack的API或命令行工具设置虚拟机的内存共享。例如,在nova命令行工具中,您可以使用以下命令将虚拟机的内存共享设置为True:

nova flavor-key <flavor-name> set "hw:mem_shared"=True

注意,内存共享模式可能会影响虚拟机的性能,因此建议在设置内存共享时谨慎行事。 

猜你喜欢

转载自blog.csdn.net/zyqash/article/details/130389837