14.2. 컴퓨팅 노드에 vGPU 구성

클라우드 사용자가 vGPU(가상 GPU)를 사용하는 인스턴스를 생성할 수 있도록 하려면 물리적 GPU가 있는 컴퓨팅 노드를 구성해야 합니다.

  1. vGPU에 대해 컴퓨팅 노드를 지정하기 위해 GPU 역할, 프로필 및 플레이버를 준비합니다.
  2. vGPU의 컴퓨팅 노드를 구성합니다.
  3. Overcloud를 배포합니다.
작은 정보

GPU 하드웨어가 제한된 경우 vGPU 컴퓨팅 노드에 예약을 최적화하도록 호스트 집계를 구성할 수도 있습니다. vGPU 컴퓨팅 노드에서 vGPU를 요청하는 인스턴스만 예약하려면 vGPU 컴퓨팅 노드의 호스트 집계를 생성하고 호스트 집계에 vGPU 인스턴스만 배치하도록 Compute 스케줄러를 구성합니다. 자세한 내용은 호스트 집계를 격리 하여 호스트 집계 및 필터링 생성 및 관리를 참조하십시오.

참고

NVIDIA GRID vGPU를 사용하려면 NVIDIA GRID 라이센스 요구 사항을 준수해야 하며 자체 호스팅 라이센스 서버의 URL이 있어야 합니다. 자세한 내용은 NVIDIA 라이센스 서버 릴리스 정보 웹 페이지를 참조하십시오.

14.2.1. 사전 요구 사항

  • NVIDIA 웹사이트에서 GPU 장치에 해당하는 NVIDIA GRID 호스트 드라이버 RPM 패키지를 다운로드했습니다. 필요한 드라이버를 확인하려면 NVIDIA 드라이버 다운로드 포털 을 참조하십시오. 포털에서 드라이버를 다운로드하려면 등록된 NVIDIA 고객이어야 합니다.
  • NVIDIA GRID 호스트 드라이버가 설치된 사용자 지정 오버클라우드 이미지를 빌드했습니다. 사용자 지정 오버클라우드 이미지 빌드에 대한 자세한 내용은 오버클라우드 이미지 작업을 참조하십시오.

14.2.2. vGPU용 컴퓨팅 노드 지정

vGPU 워크로드에 대해 컴퓨팅 노드를 지정하려면 새 역할 파일을 생성하여 vGPU 역할을 구성하고 GPU 사용 컴퓨팅 노드의 태그를 지정하는 데 사용할 새 오버클라우드 플레이버 및 리소스 클래스를 구성해야 합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    [stack@director ~]$ source ~/stackrc
  3. Controller,Compute 및 Compute Gpu 역할을 포함하는 roles_data_gpu.yaml 이라는 새 역할 데이터 파일을 생성합니다.

    (undercloud)$ openstack overcloud roles \
      generate -o /home/stack/templates/roles_data_gpu.yaml \
      Compute:ComputeGpu Compute Controller
  4. roles_data_gpu.yaml 을 열고 다음 매개변수 및 섹션을 편집하거나 추가합니다.

    섹션/패랜드현재 값새 값

    역할 설명

    역할: 컴퓨팅

    역할: ComputeGpu

    역할 이름

    name: 컴퓨팅

    name: ComputeGpu

    description

    기본 컴퓨팅 노드 역할

    GPU 컴퓨팅 노드 역할

    ImageDefault

    해당 없음

    overcloud-full-gpu

    HostnameFormatDefault

    -compute-

    -computegpu-

    deprecated_nic_config_name

    compute.yaml

    compute-gpu.yaml

  5. 노드 정의 템플릿 node. json 또는 node. yaml에 추가하여 오버클라우드의 GPU 지원 컴퓨팅 노드를 등록합니다. 자세한 내용은 Director 설치 및 사용 가이드 의 오버클라우드 노드 등록을 참조하십시오.
  6. 노드 하드웨어를 검사합니다.

    (undercloud)$ openstack overcloud node introspect --all-manageable \
     --provide

    자세한 내용은 Director 설치 및 사용 가이드 의 베어 메탈 노드 하드웨어 인벤토리 생성을 참조하십시오.

  7. vGPU 컴퓨팅 노드의 compute-vgpu-nvidia 오버클라우드 플레이버를 생성합니다.

    (undercloud)$ openstack flavor create --id auto \
      --ram <ram_size_mb> --disk <disk_size_gb> \
      --vcpus <no_vcpus> compute-vgpu-nvidia
    • <ram_size_mb> 를 베어 메탈 노드의 RAM(MB)으로 바꿉니다.
    • <disk_size_gb> 를 베어 메탈 노드의 디스크 크기(GB)로 바꿉니다.
    • <no_vcpus> 를 베어 메탈 노드의 CPU 수로 바꿉니다.

      참고

      이러한 속성은 인스턴스를 예약하는 데 사용되지 않습니다. 그러나 계산 스케줄러는 디스크 크기를 사용하여 루트 파티션 크기를 결정합니다.

  8. GPU 워크로드를 위해 사용자 정의 GPU 리소스 클래스를 지정하려는 각 베어 메탈 노드에 태그를 지정합니다.

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.GPU <node>

    <node> 를 baremetal 노드의 ID로 바꿉니다.

  9. compute-vgpu-nvidia 플레이버를 사용자 지정 GPU 리소스 클래스와 연결합니다.

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_GPU=1 \
      compute-vgpu-nvidia

    베어 메탈 서비스 노드의 리소스 클래스에 해당하는 사용자 지정 리소스 클래스의 이름을 확인하려면 리소스 클래스를 대문자로 변환하려면 모든 문장 부호를 밑줄로 바꾸고 접두사는 CUSTOM_ 로 바꿉니다.

    참고

    플레이버는 베어 메탈 리소스 클래스의 인스턴스 하나만 요청할 수 있습니다.

  10. Compute 스케줄러가 베어 메탈 플레이버 속성을 사용하여 인스턴스를 예약하지 못하도록 다음 플레이버 속성을 설정합니다.

    (undercloud)$ openstack flavor set \
     --property resources:VCPU=0 --property resources:MEMORY_MB=0 \
     --property resources:DISK_GB=0 compute-vgpu-nvidia
  11. 역할이 생성되었는지 확인하려면 다음 명령을 입력합니다.

    (undercloud)$ openstack overcloud profiles list

14.2.3. vGPU의 컴퓨팅 노드 구성 및 오버클라우드 배포

사용자 환경의 물리적 GPU 장치에 해당하는 vGPU 유형을 검색 및 할당하고, vGPU의 컴퓨팅 노드를 구성하도록 환경 파일을 준비해야 합니다.

절차

  1. 임시 컴퓨팅 노드에 Red Hat Enterprise Linux 및 NVIDIA GRID 드라이버를 설치하고 노드를 시작합니다.
  2. 컴퓨팅 노드에서 활성화하려는 물리 GPU 장치의 vGPU 유형을 찾습니다. libvirt의 경우 가상 GPU는 조정된 장치 또는 mdev 유형 장치입니다. 지원되는 mdev 장치를 검색하려면 다음 명령을 입력합니다.

    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/
    nvidia-11  nvidia-12  nvidia-13  nvidia-14  nvidia-15  nvidia-16  nvidia-17  nvidia-18  nvidia-19  nvidia-20  nvidia-21  nvidia-210  nvidia-22
    
    [root@overcloud-computegpu-0 ~]# cat /sys/class/mdev_bus/0000\:06\:00.0/mdev_supported_types/nvidia-18/description
    num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=4096x2160, max_instance=4
  3. network-environment.yaml 파일에 ComputeGpu 역할의 Net::SoftwareConfig 를 등록합니다.

    resource_registry:
      OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
      OS::TripleO::ComputeGpu::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute-gpu.yaml
      OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
  4. 다음 매개변수를 node-info.yaml 파일에 추가하여 GPU 컴퓨팅 노드 수와 GPU 지정 컴퓨팅 노드에 사용할 플레이버를 지정합니다.

    parameter_defaults:
      OvercloudControllerFlavor: control
      OvercloudComputeFlavor: compute
      OvercloudComputeGpuFlavor: compute-vgpu-nvidia
      ControllerCount: 1
      ComputeCount: 0
      ComputeGpuCount: 1
  5. gpu.yaml 파일을 생성하여 GPU 장치의 vGPU 유형을 지정합니다.

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-18
    참고

    각 물리 GPU는 하나의 가상 GPU 유형만 지원합니다. 이 속성에 vGPU 유형을 여러 개 지정하는 경우 첫 번째 유형만 사용됩니다.

  6. 업데이트를 Compute 환경 파일에 저장합니다.
  7. 다른 환경 파일을 사용하여 스택에 새 역할 및 환경 파일을 추가하고 오버클라우드를 배포합니다.

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -r /home/stack/templates/roles_data_gpu.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/gpu.yaml \
      -e /home/stack/templates/node-info.yaml