검색

16.2. NVIDIA vGPU 장치 관리

download PDF

vGPU 기능을 사용하면 물리적 NVIDIA GPU 장치를 중재된 장치라고 하는 여러 가상 장치로 나눌 수 있습니다. 그런 다음 이러한 중재된 장치를 가상 GPU로 여러 VM(가상 머신)에 할당할 수 있습니다. 결과적으로 이러한 VM은 단일 물리적 GPU의 성능을 공유할 수 있습니다.

중요

중재된 장치를 사용하거나 사용하지 않고 VM에 물리적 GPU를 할당하면 호스트에서 GPU를 사용할 수 없습니다.

16.2.1. NVIDIA vGPU 장치 설정

NVIDIA vGPU 기능을 설정하려면 GPU 장치용 NVIDIA vGPU 드라이버를 다운로드하고, 중재된 장치를 생성하고 이를 의도한 가상 머신에 할당해야 합니다. 자세한 지침은 아래를 참조하십시오.

사전 요구 사항

  • GPU는 vGPU 중재 장치를 지원합니다. vGPU 생성을 지원하는 NVIDIA GPU의 최신 목록은 NVIDIA vGPU 소프트웨어 설명서를 참조하십시오.

    • 호스트가 사용 중인 GPU를 모르는 경우 lshw 패키지를 설치하고 lshw -C display 명령을 사용합니다. 다음 예제에서는 vGPU와 호환되는 NVIDIA Cryostat P4 GPU를 사용하는 시스템을 보여줍니다.

      # lshw -C display
      
      *-display
             description: 3D controller
             product: GP104GL [Tesla P4]
             vendor: NVIDIA Corporation
             physical id: 0
             bus info: pci@0000:01:00.0
             version: a1
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi pciexpress cap_list
             configuration: driver=vfio-pci latency=0
             resources: irq:16 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff

프로세스

  1. NVIDIA vGPU 드라이버를 다운로드하여 시스템에 설치합니다. 자세한 내용은 NVIDIA 설명서를 참조하십시오.
  2. NVIDIA 소프트웨어 설치 프로그램이 /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 파일을 생성하지 않은 경우 /etc/modprobe.d/ 에 모든 이름의 conf 파일을 생성하고 파일에 다음 행을 추가합니다.

    blacklist nouveau
    options nouveau modeset=0
  3. 현재 커널의 초기 램디스크를 다시 생성한 다음 재부팅합니다.

    # dracut --force
    # reboot
  4. 커널이 nvidia_vgpu_vfio 모듈을 로드했으며 nvidia-vgpu-mgr.service 서비스가 실행 중인지 확인합니다.

    # lsmod | grep nvidia_vgpu_vfio
    nvidia_vgpu_vfio 45011 0
    nvidia 14333621 10 nvidia_vgpu_vfio
    mdev 20414 2 vfio_mdev,nvidia_vgpu_vfio
    vfio 32695 3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1
    
    # systemctl status nvidia-vgpu-mgr.service
    nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon
       Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2018-03-16 10:17:36 CET; 5h 8min ago
     Main PID: 1553 (nvidia-vgpu-mgr)
     [...]

    또한 NVIDIA Ampere GPU 장치를 기반으로 vGPU를 생성하는 경우 가상 기능이 물리적 GPU에 대해 활성화되어 있는지 확인합니다. 자세한 내용은 NVIDIA 설명서 를 참조하십시오.

  5. 장치 UUID를 생성합니다.

    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba58692a
  6. 감지된 GPU 하드웨어를 기반으로 중재된 장치의 구성으로 XML 파일을 준비합니다. 예를 들어 다음은 0000:01:00.0 PCI 버스에서 실행되는 NVIDIA Cryostat P4 카드에서 nvidia-63 vGPU 유형의 중재 장치를 구성하고 이전 단계에서 생성된 UUID를 사용합니다.

    <device>
        <parent>pci_0000_01_00_0</parent>
        <capability type="mdev">
            <type id="nvidia-63"/>
            <uuid>30820a6f-b1a5-4503-91ca-0c10ba58692a</uuid>
        </capability>
    </device>
  7. 준비한 XML 파일을 기반으로 vGPU 중재 장치를 정의합니다. 예를 들면 다음과 같습니다.

    # virsh nodedev-define vgpu-test.xml
    Node device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 created from vgpu-test.xml
  8. 선택 사항: 중재된 장치가 비활성으로 나열되어 있는지 확인합니다.

    # virsh nodedev-list --cap mdev --inactive
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  9. 생성한 vGPU 중재 장치를 시작합니다.

    # virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Device mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0 started
  10. 선택 사항: 중재된 장치가 활성 상태로 나열되어 있는지 확인합니다.

    # virsh nodedev-list --cap mdev
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  11. 호스트가 재부팅 후 자동으로 시작하도록 vGPU 장치 설정

    # virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Device mdev_d196754e_d8ed_4f43_bf22_684ed698b08b_0000_9b_00_0 marked as autostarted
  12. vGPU 리소스를 공유하려는 VM에 중재된 장치를 연결합니다. 이렇게 하려면 이전에 기술된 UUID와 함께 VM의 XML 구성의 < devices/ > 섹션에 다음 행을 추가합니다.

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='on'>
      <source>
        <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
      </source>
    </hostdev>

    각 UUID는 한 번에 하나의 VM에만 할당할 수 있습니다. 또한 VM에 virtio-vga 와 같은 QEMU 비디오 장치가 없는 경우 < hostdev > 줄에 ramfb='on' 매개변수도 추가합니다.

  13. 할당된 VM에서 vGPU 미디어된 장치의 모든 기능을 사용하려면 VM에 NVIDIA vGPU 게스트 소프트웨어 라이센스를 설정합니다. 자세한 내용 및 지침은 NVIDIA Virtual GPU Software License Server User Guide 를 참조하십시오.

검증

  1. 생성한 vGPU의 기능을 쿼리하고 활성 및 영구으로 나열되는지 확인합니다.

    # virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Name:           virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Parent:         pci_0000_01_00_0
    Active:         yes
    Persistent:     yes
    Autostart:      yes
  2. VM을 시작하고 게스트 운영 체제가 mediated 장치를 NVIDIA GPU로 감지하는지 확인합니다. 예를 들어 VM에서 Linux를 사용하는 경우:

    # lspci -d 10de: -k
    07:00.0 VGA compatible controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 32GB] (rev a1)
            Subsystem: NVIDIA Corporation Device 12ce
            Kernel driver in use: nvidia
            Kernel modules: nouveau, nvidia_drm, nvidia

확인된 문제

  • RHEL 9 게스트 운영 체제를 사용하는 VM에 NVIDIA vGPU 미디어를 할당하면 현재 해당 VM의 Wayland 세션이 비활성화되고 대신 Xorg 세션을 로드합니다. 이는 NVIDIA 드라이버와 Wayland 간의 비호환성 때문입니다.

추가 리소스

16.2.2. NVIDIA vGPU 장치 제거

할당된 vGPU 미디어 장치 의 구성을 변경하려면 할당된 VM에서 기존 장치를 제거해야 합니다. 자세한 내용은 아래를 참조하십시오.

사전 요구 사항

  • 장치를 제거하려는 VM이 종료됩니다.

프로세스

  1. 제거하려는 중재된 장치의 ID를 가져옵니다.

    # virsh nodedev-list --cap mdev
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  2. vGPU 미디어 장치의 실행 중인 인스턴스를 중지합니다.

    # virsh nodedev-destroy mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Destroyed node device 'mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0'
  3. 선택 사항: 중재된 장치가 비활성화되었는지 확인합니다.

    # virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Name:           virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Parent:         pci_0000_01_00_0
    Active:         no
    Persistent:     yes
    Autostart:      yes
  4. VM의 XML 구성에서 장치를 제거합니다. 이렇게 하려면 virsh edit 유틸리티를 사용하여 VM의 XML 구성을 편집하고 mdev의 구성 세그먼트를 제거합니다. 세그먼트는 다음과 유사합니다.

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
      <source>
        <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
      </source>
    </hostdev>

    중재된 장치를 중지하고 분리하면 삭제되지 않지만 정의된 대로 유지됩니다. 따라서 장치를 다시 시작하고 다른 VM에 연결할 수 있습니다.

  5. 선택 사항: 중지된 중재 장치를 삭제하려면 해당 정의를 제거합니다.

    # virsh nodedev-undefine mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
    Undefined node device 'mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0'

검증

  • 장치를 중지하고 분리한 경우에만 중재된 장치가 비활성으로 나열되어 있는지 확인합니다.

    # virsh nodedev-list --cap mdev --inactive
    mdev_30820a6f_b1a5_4503_91ca_0c10ba58692a_0000_01_00_0
  • 장치를 삭제한 경우에도 다음 명령이 해당 장치를 표시하지 않는지 확인합니다.

    # virsh nodedev-list --cap mdev

추가 리소스

  • man virsh 명령

16.2.3. 시스템에 대한 NVIDIA vGPU 정보 얻기

사용 가능한 vGPU 기능의 기능을 평가하기 위해 다음과 같이 시스템에서 중재된 장치에 대한 추가 정보를 얻을 수 있습니다.

  • 지정된 유형의 중재된 장치 수를 생성할 수 있음
  • 시스템에 이미 구성된 중재된 장치는 무엇입니까.

프로세스

  • vGPU 미디어 장치를 지원할 수 있는 호스트에서 사용 가능한 GPU 장치를 보려면 virsh nodedev-list --cap mdev_types 명령을 사용합니다. 예를 들어 다음은 NVIDIA Quadro RTX6000 장치가 두 개 있는 시스템을 보여줍니다.

    # virsh nodedev-list --cap mdev_types
    pci_0000_5b_00_0
    pci_0000_9b_00_0
  • 특정 GPU 장치에서 지원하는 vGPU 유형과 추가 메타데이터를 표시하려면 virsh nodedev-dumpxml 명령을 사용합니다.

    # virsh nodedev-dumpxml pci_0000_9b_00_0
    <device>
      <name>pci_0000_9b_00_0</name>
      <path>/sys/devices/pci0000:9a/0000:9a:00.0/0000:9b:00.0</path>
      <parent>pci_0000_9a_00_0</parent>
      <driver>
        <name>nvidia</name>
      </driver>
      <capability type='pci'>
        <class>0x030000</class>
        <domain>0</domain>
        <bus>155</bus>
        <slot>0</slot>
        <function>0</function>
        <product id='0x1e30'>TU102GL [Quadro RTX 6000/8000]</product>
        <vendor id='0x10de'>NVIDIA Corporation</vendor>
        <capability type='mdev_types'>
          <type id='nvidia-346'>
            <name>GRID RTX6000-12C</name>
            <deviceAPI>vfio-pci</deviceAPI>
            <availableInstances>2</availableInstances>
          </type>
          <type id='nvidia-439'>
            <name>GRID RTX6000-3A</name>
            <deviceAPI>vfio-pci</deviceAPI>
            <availableInstances>8</availableInstances>
          </type>
          [...]
          <type id='nvidia-440'>
            <name>GRID RTX6000-4A</name>
            <deviceAPI>vfio-pci</deviceAPI>
            <availableInstances>6</availableInstances>
          </type>
          <type id='nvidia-261'>
            <name>GRID RTX6000-8Q</name>
            <deviceAPI>vfio-pci</deviceAPI>
            <availableInstances>3</availableInstances>
          </type>
        </capability>
        <iommuGroup number='216'>
          <address domain='0x0000' bus='0x9b' slot='0x00' function='0x3'/>
          <address domain='0x0000' bus='0x9b' slot='0x00' function='0x1'/>
          <address domain='0x0000' bus='0x9b' slot='0x00' function='0x2'/>
          <address domain='0x0000' bus='0x9b' slot='0x00' function='0x0'/>
        </iommuGroup>
        <numa node='2'/>
        <pci-express>
          <link validity='cap' port='0' speed='8' width='16'/>
          <link validity='sta' speed='2.5' width='8'/>
        </pci-express>
      </capability>
    </device>

추가 리소스

  • man virsh 명령

16.2.4. NVIDIA vGPU용 원격 데스크탑 스트리밍 서비스

다음 원격 데스크탑 스트리밍 서비스는 NVIDIA vGPU 또는 NVIDIA GPU 패스스루가 활성화된 RHEL 9 하이퍼바이저에서 지원됩니다.

  • HP ZCentral Remote Boost/Teradici
  • NICE DCV
  • Mechdyne TGX

지원 세부 정보는 적절한 벤더 지원 매트릭스를 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.