Limit HW resources for hyperconverged OpenStack compute nodes¶
Note
Consider this section as part of Deploy an OpenStack cluster.
Hyperconverged architecture combines OpenStack compute nodes along with Ceph nodes. To avoid nodes overloading, which can cause Ceph performance degradation and outage, limit the hardware resources consumption by the OpenStack compute services.
You can reserve hardware resources for non-workload related consumption using
the following nova-compute
parameters. For details, see
OpenStack documentation: Overcommitting CPU and RAM
and OpenStack documentation: Configuration Options.
cpu_allocation_ratio
- in case of a hyperconverged architecture, the value depends on the number of vCPU used for non-workload related operations, total number of vCPUs of a hyperconverged node, and on workload vCPU consumption:cpu_allocation_ratio = (${vCPU_count_on_a_hyperconverged_node} - ${vCPU_used_for_non_OpenStack_related_tasks}) / ${vCPU_count_on_a_hyperconverged_node} / ${workload_vCPU_utilization}
To define the vCPU count used for non-OpenStack related tasks, use the following formula, considering the storage data plane performance tests:
vCPU_used_for_non-OpenStack_related_tasks = 2 * SSDs_per_hyperconverged_node + 1 * Ceph_OSDs_per_hyperconverged_node + 0.8 * Ceph_OSDs_per_hyperconverged_node
Consider the following example with 5 SSD disks for Ceph OSDs per hyperconverged node and 2 Ceph OSDs per disk:
vCPU_used_for_non-OpenStack_related_tasks = 2 * 5 + 1 * 10 + 0.8 * 10 = 28
In this case, if there are 40 vCPUs per hyperconverged node, 28 vCPUs are required for non-workload related calculations, and a workload consumes 50% of the allocated CPU time:
cpu_allocation_ratio = (40-28) / 40 / 0.5 = 0.6
.
reserved_host_memory_mb
- a dedicated variable in the OpenStack Nova configuration, to reserve memory for non-OpenStack related VM activities:reserved_host_memory_mb = 13 GB * Ceph_OSDs_per_hyperconverged_node
For example for 10 Ceph OSDs per hyperconverged node:
reserved_host_memory_mb = 13 GB * 10 = 130 GB = 133120
ram_allocation_ratio
- the allocation ratio of virtual RAM to physical RAM. To completely exclude the possibility of memory overcommitting, set to1
.
To limit HW resources for hyperconverged OpenStack compute nodes:
In the OpenStackDeployment
CR, specify the cpu_allocation_ratio
,
ram_allocation_ratio
, and reserved_host_memory_mb
parameters as
required using the calculations described above.
For example:
apiVersion: lcm.mirantis.com/v1alpha1
kind: OpenStackDeployment
spec:
services:
compute:
nova:
values:
conf:
nova:
DEFAULT:
cpu_allocation_ratio: 0.6
ram_allocation_ratio: 1
reserved_host_memory_mb: 133120
Note
For an existing OpenStack deployment:
Obtain the name of your
OpenStackDeployment
CR:kubectl -n openstack get osdpl
Open the
OpenStackDeployment
CR for editing and specify the parameters as required.kubectl -n openstack edit osdpl <osdpl name>