1.6. OpenStack Workflow Compute CPU 和内存计算器
OpenStack Workflow 计算 CPU 和内存的最佳设置,并使用结果填充 NovaReservedHostMemory
和 NovaCPUAllocationRatio
参数。
NovaReservedHostMemory
NovaReservedHostMemory
参数设置主机节点要保留的内存量(以 MB 为单位)。要为超融合节点确定适当的值,假设每个 OSD 使用 3 GB 内存。给定具有 256 GB 内存和 10 个 OSD 的节点,您可以为 Ceph 分配 30 GB 内存,使 Compute 离开 226 GB。如果节点可以托管太多内存,例如,113 个实例各自使用 2 GB 内存。
但是,您仍然需要考虑每个实例对于 管理程序 的额外开销。假设这个开销为 0.5 GB,同一节点只能托管 90 个实例,它的帐户将 226 GB 划分到 2.5 GB。为主机节点保留的内存量(即 Compute 服务不应使用的内存)是:
(在 * Ov)+(Os * RA)
其中:
-
在
中:实例数 -
OV
:每个实例所需的开销内存量 -
OS
: 节点上的 OSD 数量 -
RA
:每个 OSD 应该拥有的 RAM 量
对于 90 个实例,这是我们(90*0.5)+(10*3)= 75 GB。Compute 服务预期这个值以 MB 为单位,即 75000。
以下 Python 代码提供了这个计算:
NovaCPUAllocationRatio
当选择在其上部署实例的 Compute 节点时,计算调度程序使用 NovaCPUAllocationRatio
。默认情况下,此为 16.0
(如在 16:1 中相同)。这意味着,如果节点上有 56 个内核,计算调度程序将调度充足的实例在节点上消耗 896 个 vCPU,然后再考虑节点无法托管。
要确定适合超融合节点的 NovaCPUAllocationRatio
,假设每个 Ceph OSD 至少使用一个核心(除非工作负载是 I/O 密集型,并且没有 SSD)。在有 56 个内核和 10 个 OSD 的节点上,这会为 Compute 保留 46 个内核。如果每个实例使用 100 个接收的 CPU,则比率仅为实例 vCPU 的数量,按内核数除,即 46 / 56 = 0.8。但是,因为实例通常不会每个分配的 CPU 消耗 100 个,因此当确定所需客户机 vCPU 数量时,您可以提高 NovaCPUAllocationRatio
。
因此,如果预测实例将在其 vCPU 的每 cent (或 0.1)使用 10 个,那么实例的 vCPU 数量可以表示为 46 / 0.1 = 460。当这个值被内核数除(56)时,比率增加到大约 8。
以下 Python 代码提供了这个计算:
cores_per_OSD = 1.0 average_guest_util = 0.1 # 10% nonceph_cores = cores - (cores_per_OSD * osds) guest_vCPUs = nonceph_cores / average_guest_util cpu_allocation_ratio = guest_vCPUs / cores
cores_per_OSD = 1.0
average_guest_util = 0.1 # 10%
nonceph_cores = cores - (cores_per_OSD * osds)
guest_vCPUs = nonceph_cores / average_guest_util
cpu_allocation_ratio = guest_vCPUs / cores