9장. Red Hat OpenStack Platform 환경 튜닝

9.1. 에뮬레이터 스레드 고정

에뮬레이터 스레드는 가상 시스템 하드웨어 에뮬레이션에 대한 인터럽트 요청 및 차단되지 않은 프로세스를 처리합니다. 이러한 스레드는 게스트가 처리에 사용하는 CPU 전체에서 유동적으로 사용합니다. 이 게스트 CPU에서 폴링 모드 드라이버(PMD) 또는 실시간 처리에 사용되는 스레드가 실행되는 경우 패킷 손실 또는 누락된 데드라인이 발생할 수 있습니다.

에뮬레이터 스레드를 VM 처리 작업과 분리하여 스레드를 자체 게스트 CPU에 고정하여 성능을 향상시킬 수 있습니다.

9.1.1. 호스트 에뮬레이터 스레드로 CPU 구성

성능을 개선하려면 에뮬레이터 스레드 호스팅을 위해 호스트 CPU의 하위 집합을 예약합니다.

절차
  1. 지정된 역할에 대해 NovaComputeCpuSharedSet 을 사용하여 오버클라우드를 배포합니다. NovaComputeCpuSharedSet 값은 해당 역할 내의 호스트의 nova.conf 파일의 cpu_shared_set 매개 변수에 적용됩니다.

    parameter_defaults:
        ComputeOvsDpdkParameters:
            NovaComputeCpuSharedSet: "0-1,16-17"
            NovaComputeCpuDedicatedSet: "2-15,18-31"
  2. 에뮬레이터 스레드가 공유 풀로 구분된 인스턴스를 빌드하는 플레이버를 생성합니다.

    openstack flavor create --ram <size_mb> --disk <size_gb> --vcpus <vcpus> <flavor>
  3. hw:emulator_threads_policy 추가 사양을 추가하고 값을 공유 하도록 설정합니다. 이 플레이버로 생성된 인스턴스는 nova.conf 파일의 cpu_share_set 매개 변수에 정의된 인스턴스 CPU를 사용합니다.

    openstack flavor set <flavor> --property hw:emulator_threads_policy=share
참고

이 추가 사양에 대한 공유 정책을 활성화하려면 nova.conf 파일에서 cpu_share_set 매개변수를 설정해야 합니다. 이를 위해 nova.conf 를 수동으로 편집해도 재배포 시 유지되지 않을 수 있으므로 heat를 사용해야 합니다.

9.1.2. 에뮬레이터 스레드 고정 확인

절차
  1. 지정된 인스턴스의 호스트 및 이름을 식별합니다.

    openstack server show <instance_id>
  2. SSH를 사용하여 식별된 호스트에 heat-admin으로 로그인합니다.

    ssh heat-admin@compute-1
    [compute-1]$ sudo virsh dumpxml instance-00001 | grep `'emulatorpin cpuset'`