3.2. 에뮬레이터 스레드 구성

계산 노드에는 에뮬레이터 스레드라고 하는 각 인스턴스의 하이퍼바이저와 연결된 오버헤드 작업이 있습니다. 기본적으로 에뮬레이터 스레드는 인스턴스와 동일한 CPU에서 실행되므로 인스턴스의 성능에 영향을 미칩니다.

인스턴스가 사용하는 사용자에 대해 별도의 CPU에서 에뮬레이터 스레드를 실행하도록 에뮬레이터 스레드 정책을 구성할 수 있습니다.

참고

패킷 손실을 피하려면 NFV 배포에서 vCPU를 선점해서는 안 됩니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. 컴퓨팅 환경 파일을 엽니다.
  3. CPU 고정이 필요한 인스턴스에 대해 물리적 CPU 코어를 예약하려면 Compute 환경 파일에서 NovaComputeCpuDedicatedSet 매개변수를 구성합니다. 예를 들어 다음 구성은 32코어 CPU가 있는 컴퓨팅 노드에서 전용 CPU를 설정합니다.

    parameter_defaults:
      ...
      NovaComputeCpuDedicatedSet: 2-15,18-31
      ...

    자세한 내용은 Compute 노드에서 CPU 고정 구성을 참조하십시오.

  4. 에뮬레이터 스레드에 대한 물리적 CPU 코어를 예약하려면 Compute 환경 파일에서 NovaComputeCpuSharedSet 매개 변수를 구성합니다. 예를 들어 다음 구성은 32코어 CPU가 있는 컴퓨팅 노드에서 공유 CPU를 설정합니다.

    parameter_defaults:
      ...
      NovaComputeCpuSharedSet: 0,1,16,17
      ...
    참고

    계산 스케줄러는 공유 또는 유동 CPU에서 실행되는 인스턴스의 공유 세트의 CPU도 사용합니다. 자세한 내용은 Compute 노드에서 CPU 고정 구성을참조하십시오.

  5. Compute 스케줄러 필터 NUMATopologyFilterNovaSchedulerDefaultFilters 매개변수에 추가합니다(아직 없는 경우).
  6. 다른 환경 파일을 사용하여 스택에 Compute 환경 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml
  7. NovaComputeCpuSharedSet 를 사용하여 구성된 공유 CPU에서 선택되는 전용 CPU에서 인스턴스에 대해 에뮬레이터 스레드를 실행하는 플레이버를 구성합니다.

    (overcloud)$ openstack flavor set --property hw:cpu_policy=dedicated \
     --property hw:emulator_threads_policy=share \
     dedicated_emulator_threads

    hw:emulator_threads_policy 에 대한 구성 옵션에 대한 자세한 내용은 Flavor 메타데이터RuntimeClass 스레드 정책을 참조하십시오.