7.4. 컴퓨팅 스케줄러 가중치

각 컴퓨팅 노드에는 스케줄러에서 인스턴스 예약 우선 순위를 지정하는 데 사용할 수 있는 가중치가 있습니다. Compute 스케줄러가 필터를 적용한 후 나머지 후보 컴퓨팅 노드에서 가장 큰 가중치가 있는 Compute 노드를 선택합니다.

Compute 스케줄러는 다음 작업을 수행하여 각 컴퓨팅 노드의 가중치를 결정합니다.

  1. 스케줄러는 각 가중치를 0.0에서 1.0 사이의 값으로 정규화합니다.
  2. 스케줄러는 weighter multiplier로 정규화된 가중치를 곱합니다.

Compute 스케줄러는 후보 컴퓨팅 노드에서 리소스 가용성에 대한 하위 및 상위 값을 사용하여 각 리소스 유형의 가중치 정규화를 계산합니다.

  • 리소스 가용성이 가장 낮은 노드에 '0'이 할당됩니다.
  • 리소스 가용성(maxval)이 가장 높은 노드에는 '1'이 할당됩니다.
  • minval - maxval 범위 내에 리소스 가용성이 있는 노드에는 다음 수식을 사용하여 계산된 정규화된 가중치가 할당됩니다.

    (node_resource_availability - minval) / (maxval - minval)

모든 컴퓨팅 노드에 리소스에 대한 가용성이 동일한 경우 모두 0으로 정규화됩니다.

예를 들어 스케줄러는 다음과 같이 각각 사용 가능한 vCPU 수 10개에서 사용 가능한 vCPU에 대한 정규화된 가중치를 계산합니다.

컴퓨팅 노드

1

2

3

4

5

6

7

8

9

10

vCPU 없음

5

5

10

10

15

20

20

15

10

5

정규화된 가중치

0

0

0.33

0.33

0.67

1

1

0.67

0.33

0

컴퓨팅 스케줄러는 다음 공식을 사용하여 컴퓨팅 노드의 가중치를 계산합니다.

(w1_multiplier * norm(w1)) + (w2_multiplier * norm(w2)) + ...

다음 표에서는 가중치에 사용할 수 있는 구성 옵션을 설명합니다.

참고

다음 표에 설명된 옵션과 동일한 이름의 집계 메타데이터 키를 사용하여 호스트 집계에 가중치를 설정할 수 있습니다. 호스트 집계에 설정된 경우 호스트 집계 값이 우선합니다.

표 7.2. 컴퓨팅 스케줄러 가중치

설정 옵션유형설명

filter_scheduler/weight_classes

문자열

이 매개변수를 사용하여 각 컴퓨팅 노드의 가중치를 계산하는 데 사용할 속성을 구성합니다.

  • nova.scheduler.weights.ram.RAMWeigher - 컴퓨팅 노드에서 사용 가능한 RAM을 조정합니다.
  • nova.scheduler.weights.cpu.CPUWeigher - 컴퓨팅 노드에서 사용 가능한 CPU를 대기열에 넣습니다.
  • nova.scheduler.weights.disk.DiskWeigher - 계산 노드에서 사용 가능한 디스크를 포함합니다.
  • nova.scheduler.weights.metrics.MetricsWeigher - 컴퓨팅 노드의 메트릭을 결합합니다.
  • nova.scheduler.weights.affinity.ServerGroupSoftAffinityWeigher - 계산 노드의 근접성을 지정된 인스턴스 그룹의 다른 노드에 연결합니다.
  • nova.scheduler.weights.affinity.ServerGroupSoftAntiAffinityWeigher - 계산 노드의 근접성을 지정된 인스턴스 그룹의 다른 노드에 배치합니다.
  • nova.scheduler.weights.compute.BuildFailureWeigher - 컴퓨팅 노드를 최근 실패한 부팅 시도 횟수로 조정합니다.
  • nova.scheduler.weights.io_ops.IoOpsWeigher - 계산 노드를 워크로드에 따라 조정합니다.
  • nova.scheduler.weights.pci.PCIWeigher - 계산 노드를 PCI 가용성에 따라 조정합니다.
  • nova.scheduler.weights.cross_cell.CrossCellWeigher - 인스턴스를 이동할 때 소스 셀에서 컴퓨팅 노드를 선호하는 셀을 기반으로 계산 노드를 조정합니다.
  • nova.scheduler.weights.all_weighers - (기본값) 위의 모든 가중치를 사용합니다.

filter_scheduler/ram_weight_multiplier

부동 소수점

이 매개 변수를 사용하여 사용 가능한 RAM에 따라 호스트를 가중치를 지정하는 데 사용할 승수를 지정합니다.

여러 호스트에 인스턴스를 분산하는 사용 가능한 RAM이 많은 호스트를 선호하도록 양수로 설정합니다.

사용 가능한 RAM이 적은 호스트를 선호하는 음수 값으로 설정합니다. 이 값은 덜 사용되는 호스트로 예약하기 전에 가능한 한 많은 호스트를 채웁니다(스택).

절대 값은 양수이든 음수든 관계없이 RAM 가중치가 다른 계량기와 비교하여 얼마나 강력한지 제어합니다.

기본값: 1.0 - 스케줄러는 모든 호스트에 인스턴스를 균등하게 분배합니다.

filter_scheduler/disk_weight_multiplier

 부동 소수점

이 매개 변수를 사용하여 사용 가능한 디스크 공간을 기준으로 호스트를 가중치를 지정하는 데 사용할 승수를 지정합니다.

여러 호스트에 인스턴스를 분산하는 사용 가능한 디스크 공간이 많은 호스트를 선호하는 양수 값으로 설정합니다.

사용 가능한 디스크 공간이 적은 호스트를 선호하는 음수 값으로 설정합니다. 이 값은 덜 사용되는 호스트로 예약하기 전에 가능한 한 많은 호스트를 채웁니다(스택).

절대 값은, 양수이든 음수이든, 디스크 가중의 강점이 다른 계량기와 상대적인지를 제어합니다.

기본값: 1.0 - 스케줄러는 모든 호스트에 인스턴스를 균등하게 분배합니다.

filter_scheduler/cpu_weight_multiplier

 부동 소수점

이 매개 변수를 사용하여 사용 가능한 vCPU를 기반으로 호스트를 가중치를 지정하는 데 사용할 승수를 지정합니다.

여러 호스트에 인스턴스를 분산하는 사용 가능한 vCPU가 더 많은 호스트를 선호하도록 양수로 설정합니다.

사용 가능한 vCPU가 적은 호스트를 선호하는 음수 값으로 설정합니다. 이 값은 덜 사용되는 호스트로 예약하기 전에 가능한 한 많은 호스트를 채웁니다(스택).

절대 값은 vCPU 가벼움이 다른 가중과 비교되는 정도를 제어합니다.

기본값: 1.0 - 스케줄러는 모든 호스트에 인스턴스를 균등하게 분배합니다.

filter_scheduler/io_ops_weight_multiplier

 부동 소수점

이 매개 변수를 사용하여 호스트 워크로드를 기준으로 호스트를 가중치를 조정하는 데 사용할 승수를 지정합니다.

더 적은 워크로드가 있는 호스트를 선호하려면 음수로 설정하여 더 많은 호스트에 워크로드를 분산합니다.

대규모 워크로드가 있는 호스트를 선호하도록 양수로 설정합니다. 이 값은 이미 사용 중인 호스트에 인스턴스를 예약합니다.

절대 값은 I/O 작업 가중치가 다른 가중치와 관련하여 얼마나 강력한지 제어합니다.

기본값: -1.0 - 스케줄러는 더 많은 호스트에 워크로드를 분산합니다.

filter_scheduler/build_failure_weight_multiplier

부동 소수점

이 매개변수를 사용하여 최근 빌드 실패에 따라 호스트를 가중치를 조정하는 데 사용할 승수를 지정합니다.

최근에 호스트에서 보고한 빌드 실패의 중요도를 높이기 위해 양수 값으로 설정합니다. 그러면 최근 빌드 오류가 있는 호스트를 선택할 가능성이 줄어듭니다.

최근 실패 횟수에 따라 계산 호스트의 가중치를 비활성화하려면 0 으로 설정합니다.

기본값: 1000000.0

filter_scheduler/cross_cell_move_weight_multiplier

부동 소수점

이 매개 변수를 사용하여 교차 셀 이동 중에 호스트를 가중치를 지정하는 데 사용할 승수를 지정합니다. 이 옵션은 인스턴스를 이동할 때 동일한 소스 셀 내에 있는 호스트에 배치되는 가중치 양을 결정합니다. 기본적으로 스케줄러는 인스턴스를 마이그레이션할 때 동일한 소스 셀 내의 호스트를 선호합니다.

인스턴스가 현재 실행 중인 동일한 셀 내의 호스트를 선호하도록 양수 값으로 설정합니다. 인스턴스가 현재 실행 중인 다른 셀에 있는 호스트를 선호하도록 음수 값으로 설정합니다.

기본값: 1000000.0

filter_scheduler/pci_weight_multiplier

양수 부동점

이 매개 변수를 사용하여 호스트의 PCI 장치 수 및 인스턴스에서 요청한 PCI 장치 수에 따라 호스트를 가중치하는 데 사용할 승수를 지정합니다. 인스턴스가 PCI 장치를 요청하면 Compute 노드가 계산 노드에 할당된 가중치가 더 높은 PCI 장치가 증가합니다.

예를 들어, 여러 PCI 장치가 있고 PCI 장치가 없고 PCI 장치가 없는 단일 PCI 장치가 있는 호스트 3개가 사용 가능한 경우 Compute 스케줄러는 인스턴스의 요구에 따라 이러한 호스트에 우선 순위를 지정합니다. 인스턴스에서 PCI 장치를 하나씩 요청하는 경우 스케줄러에서 첫 번째 호스트를 선호해야 하며, 인스턴스에 여러 PCI 장치가 필요한 경우 두 번째 호스트와 인스턴스에서 PCI 장치를 요청하지 않는 경우 세 번째 호스트를 선호해야 합니다.

PCI가 아닌 인스턴스가 PCI 장치가 있는 호스트의 리소스를 차지하지 못하도록 이 옵션을 구성합니다.

기본값: 1.0

filter_scheduler/host_subset_size

정수

이 매개 변수를 사용하여 호스트를 선택할 필터링된 호스트의 하위 집합 크기를 지정합니다. 이 옵션을 1 이상으로 설정해야 합니다. 값 1은 가중치 함수에서 반환한 첫 번째 호스트를 선택합니다. 스케줄러는 1보다 작은 값을 무시하고 대신 1을 사용합니다.

여러 스케줄러 프로세스가 동일한 호스트를 선택한 유사한 요청을 처리하여 잠재적인 경합 조건을 생성하지 않도록 하려면 1보다 큰 값으로 설정합니다. 요청에 가장 적합한 N 호스트에서 임의로 호스트를 선택하면 충돌 가능성이 줄어듭니다. 그러나 이 값을 설정하면 선택한 호스트가 해당 요청에 덜 적합할 수 있습니다.

기본값: 1

filter_scheduler/soft_affinity_weight_multiplier

양수 부동점

이 매개 변수를 사용하여 소프트 선호도 그룹에 대한 호스트의 가중치를 지정하는 데 사용할 승수를 지정합니다.

참고

이 정책으로 그룹을 생성할 때 마이크로버전을 지정해야 합니다.

$ openstack --os-compute-api-version 2.15 server group create --policy soft-affinity <group_name>

기본값: 1.0

filter_scheduler/soft_anti_affinity_weight_multiplier

양수 부동점

이 매개 변수를 사용하여 soft-anti-affinity 그룹에 대한 호스트를 조정하는 데 사용할 승수를 지정합니다.

참고

이 정책으로 그룹을 생성할 때 마이크로버전을 지정해야 합니다.

$ openstack --os-compute-api-version 2.15 server group create --policy soft-affinity <group_name>

기본값: 1.0

metrics/weight_multiplier

부동 소수점

가중치 메트릭에 사용할 승수를 지정하려면 이 매개변수를 사용합니다. 기본적으로 가능한 호스트에 인스턴스를 분배하는 weight_multiplier=1.0 입니다.

전체 가중치에 대한 지표의 효과를 높이기 위해 1.0보다 큰 숫자로 설정합니다.

전체 가중치에 대한 지표의 영향을 줄이기 위해 0.0에서 1.0 사이의 숫자로 설정합니다.

지표 값을 무시하고 weight_of_unavailable 옵션의 값을 반환하려면 0.0으로 설정합니다.

더 낮은 지표로 호스트의 우선 순위를 지정하고 호스트의 스택 인스턴스를 사용하려면 음수로 설정합니다.

기본값: 1.0

metrics/weight_setting

콤마로 구분된 metric=ratio 쌍 목록

이 매개변수를 사용하여 가중치에 사용할 메트릭과 각 메트릭의 가중치를 계산하는 데 사용할 비율을 지정합니다. 유효한 메트릭 이름:

  • cpu.frequency - CPU 빈도
  • cpu.user.time - CPU 사용자 모드 시간
  • cpu.kernel.time - CPU 커널 시간
  • cpu.idle.time - CPU 유휴 시간
  • cpu.iowait.time - CPU I/O 대기 시간
  • cpu.user.percent - CPU 사용자 모드 백분율
  • cpu.kernel.percent - CPU 커널 백분율
  • cpu.idle.percent - CPU 유휴 백분율
  • cpu.iowait.percent - CPU I/O 대기 백분율
  • cpu.percent - 일반 CPU 사용

예: weight_setting=cpu.user.time=1.0

메트릭/필수

부울

이 매개변수를 사용하여 사용할 수 없는 구성된 메트릭/값 설정 메트릭을 처리하는 방법을 지정합니다.

  • True - 메트릭이 필요합니다. 지표를 사용할 수 없는 경우 예외가 발생합니다. 예외를 방지하려면 NovaSchedulerDefault Filters에서 Metrics Filter 필터를 사용합니다.
  • False - 사용할 수 없는 메트릭이 가중치 프로세스에서 부정 요인으로 처리됩니다. weight_of_unavailable 구성 옵션을 사용하여 반환된 값을 설정합니다.

metrics/weight_of_unavailable

부동 소수점

이 매개변수를 사용하여 metrics/weight_setting 메트릭 을 사용할 수 없는 경우 사용할 가중치와 metrics/required=False 를 지정합니다.

기본값: -10000.0