1.6. OpenStack Workflow Compute CPU 및 메모리 계산기

OpenStack 워크플로는 CPU 및 메모리에 대한 최적의 설정을 계산하고 결과를 사용하여 NovaReservedHostMemory 및 Nova CPUAllocationRatio 매개 변수를 채웁니다.

NovaReservedHostMemory

NovaReservedHostMemory 매개 변수는 호스트 노드에 예약할 메모리 양(MB)을 설정합니다. 하이퍼 컨버지드 노드에 적절한 값을 결정하려면 각 OSD에서 3GB 메모리를 사용한다고 가정합니다. 256GB 메모리와 10개의 OSD가 있는 노드가 있는 경우 Ceph에 30GB 메모리를 할당할 수 있으며, Compute용으로 226GB를 남겨둘 수 있습니다. 이 크기의 메모리를 사용하면 노드에서 호스팅할 수 있습니다(예: 각각 2GB 메모리를 사용하는 인스턴스 113개).

그러나 여전히 하이퍼바이저 의 인스턴스당 추가 오버헤드를 고려해야 합니다. 이 오버헤드가 0.5GB라고 가정하면 동일한 노드에서 90개 인스턴스만 호스팅할 수 있으며, 이 인스턴스는 226GB를 2.5GB로 나눈 값입니다. 호스트 노드(즉, Compute 서비스에서 사용하지 않아야 하는 메모리)를 예약할 메모리 양은 다음과 같습니다.

(* Ov) + (Os * RA)

다음과 같습니다.

  • 에서: 인스턴스 수
  • ov: 인스턴스당 필요한 오버헤드 메모리 양
  • OS: 노드의 OSD 수
  • RA: 각 OSD마다 보유해야 하는 RAM의 양

90개의 인스턴스를 사용할 경우 이 값은 (90*0.5) + (10*3) = 75GB입니다. 계산 서비스에서는 이 값이 MB, 즉 75000으로 예상합니다.

다음 Python 코드는 다음과 같은 계산을 제공합니다.

left_over_mem = mem - (GB_per_OSD * osds)
number_of_guests = int(left_over_mem /
    (average_guest_size + GB_overhead_per_guest))
nova_reserved_mem_MB = MB_per_GB * (
    (GB_per_OSD * osds) +
    (number_of_guests * GB_overhead_per_guest))

NovaCPUAllocationRatio

인스턴스를 배포할 컴퓨팅 노드를 선택할 때 계산 스케줄러는 NovaCPUAllocationRatio 를 사용합니다. 기본적으로 16.0 (에서와 같이 16:1)입니다. 즉, 노드에 56개의 코어가 있으면 Compute 스케줄러는 노드에서 더 이상 호스팅할 수 없는 것으로 간주하기 전에 노드에서 896개의 vCPU를 사용할 수 있는 충분한 인스턴스를 예약합니다.

하이퍼 컨버지드 노드에 적합한 NovaCPU AllocationRatio 를 확인하려면 각 Ceph OSD에서 하나 이상의 코어를 사용한다고 가정합니다(워크로드가 I/O 사용량이 아닌 경우 SSD가 없는 노드에서). 56개의 코어와 10개의 OSD가 있는 노드에서는 Compute에 대해 46개의 코어가 남아 있습니다. 각 인스턴스에서 수신하는 CPU의 100%를 사용하는 경우, 이 비율은 인스턴스 vCPU 수를 코어 수로 나눈 값, 즉 46 / 56 = 이며. 그러나 인스턴스가 할당된 CPU의 100%를 사용하지 않으므로 필요한 게스트 vCPU 수를 결정할 때 예상되는 백분율을 고려하여 NovaCPUAllocationRatio 를 늘릴 수 있습니다.

따라서 인스턴스가 vCPU의 10%(또는 0.1)만 사용하도록 예측하면 인스턴스의 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