GPU 가상화
GPU virtualizationGPU 가상화는 GPU를 사용하여 가상 머신에서 실행 중인 그래픽이나 GPGPU 애플리케이션을 가속화할 수 있는 기술을 말한다. GPU 가상화는 데스크톱 가상화,[1] 클라우드 게임[2] 및 컴퓨팅 과학(예: 수력역학 시뮬레이션).[3]
GPU 가상화 구현은 일반적으로 장치 에뮬레이션, API 원격화, 고정 패스스루 및 매개 패스스루 중 하나 이상의 기술을 포함한다. 각 기법은 가상 머신 대 GPU 통합 비율, 그래픽 가속, 렌더링 충실도와 기능 지원, 서로 다른 하드웨어에 대한 이식성, 가상 머신 간의 분리, 일시 중단/재개 및 실시간 마이그레이션에 대한 지원 등과 관련하여 서로 다른 절충점을 제시한다.[1][4][5][6]
API 원격 설정
API 원격 또는 API 포워딩에서 게스트 애플리케이션의 그래픽 API 호출은 원격 프로시저 호출에 의해 호스트로 전달되며, 그 후 호스트는 호스트의 GPU를 단일 사용자로 사용하여 여러 게스트로부터 그래픽 명령을 실행한다.[1] 장치 에뮬레이션과 결합하면 반가상화의 한 형태로 간주될 수 있다.[7] GPU가 하드웨어 지원 가상화를 지원하지 않는 경우 여러 게스트와 호스트 간에 GPU 리소스를 공유할 수 있는 기술이다. 개념적으로는 구현이 간단하지만 다음과 같은 몇 가지 단점이 있다.[1]
- 순수 API 원격 설정에서 그래픽 API에 액세스할 때 가상 시스템 간의 분리가 거의 없으며, 반가상화를 사용하여 분리를 개선할 수 있음
- 프레임당 많은 수의 드래그 콜을 발생시키는 애플리케이션에서 기본 성능의 86% ~ 12%에 이르는 성능 범위
- 다수의 API 진입점을 전달해야 하며, 진입점을 부분적으로 구현하면 충실도가 저하될 수 있다.
- 게스트 시스템의 애플리케이션은 사용 가능한 API 몇 개로 제한될 수 있음
하이퍼바이저는 일반적으로 게스트와 호스트 간의 공유 메모리를 사용하여 성능을 극대화하고 지연 시간을 최소화한다. 대신 네트워크 인터페이스(분산 렌더링의 공통 접근방식)를 사용하여 타사 소프트웨어는 특정 API에 대한 지원(예: CUDA용[8] rCUDA)을 추가하거나 일반적인 API에 대한 지원을 추가할 수 있다(예: 네트워크 지연 및 직렬화 오버헤드가 이점을 능가할 수 있지만 하이퍼바이저의 소프트웨어 패키지에서 VMGL[9] for OpenGL)을 지원하지 않는 경우
기술 | 다이렉트3D | 오픈GL | 불칸 | 오픈CL |
---|---|---|---|---|
vSGA([10][11]Virtual Shared Graphics Acceleration) | 11 | 4.1 | 네 | 아니요. |
Mac용 Parallels 데스크톱 3D 가속[12] | 11[A] | 3.3 | 아니요. | 아니요. |
Hyper-V RemoteFX vGPU | 11 | 4.4 | 아니요. | 1.1 |
VirtualBox 게스트 추가 기능 3D 드라이버[16][17][18] | 8/9 | 2.1 | 아니요. | 아니요. |
씬캐스트 워크스테이션 - 가상 3D[20] | 12.1 | 아니요. | 네 | 아니요. |
QEMU/KVM(버질 3D[21][22][23][24] 포함) | 아니요. | 4.3 | 계획된 | 아니요. |
고정 패스스루
고정 패스스루(pass-through) 또는 GPU 패스스루(pass-through)(PCI 패스스루(pass-through)의 특별한 경우)에서는 GPU가 단일 가상 머신에 의해 독점적으로 영구적으로 직접 액세스된다. 이 기술은 기본 성능과[3] 높은 충실도의 96~100%를 달성하지만 GPU가 제공하는 가속은 여러 가상 머신 간에 공유할 수 없다.[1] 이와 같이 각각의 그래픽 가속 가상 머신은 물리적 GPU를 추가로 필요로 하기 때문에 통합 비율이 가장 낮고 비용이 가장 높다.[1]
다음 소프트웨어 기술은 고정 패스스루를 구현한다.
- VMware vDGA([10][a]가상 전용 그래픽 가속화)
- Parallels 워크스테이션 익스트림[25]
- Hyper-V 이산 장치 할당(DDA)[26]
- Citrix XenServer GPU 패스스루[27][28]
- Intel GVT-d를[31][32][30] 사용하는 Xen[29] 및 QEMU/KVM[29][30]
VirtualBox 버전 6.1.0에서 PCI 패스스루 지원을 제거했다.[33]
QEMU/KVM
특정 GPU 모델의 경우 Nvidia 및 AMD 비디오 카드 드라이버가 가상 시스템에서 GPU에 액세스하고 있음을 감지하여 일부 또는 모든 GPU 기능을 사용하지 않도록 설정하려고 시도한다.[34] 엔비디아는 최근 GeForce Game Ready 드라이버 465.xx 이상에서 점검을 비활성화함으로써 소비자 GPU에 대한 가상화 규칙을 변경했다.[35]
엔비디아의 경우 데스크톱 및 노트북 소비자 GPU의 다양한 아키텍처가 다양한 방식으로 통과될 수 있다. 데스크톱 그래픽 카드의 경우 KVM을 통해 기존 또는 SeaB를 통한 UEFI BIOS 구성을 사용하여 패스스루를 수행할 수 있다.각각 IOS와 OVMF.
엔비디아
데스크톱
데스크톱의 경우 대부분의 그래픽 카드를 통과할 수 있지만, Pascal 아키텍처 또는 이전 버전의 그래픽 카드의 경우 GPU를 사용하여 호스트를 부팅하는 경우 그래픽 카드의 VBIOS를 가상 시스템에서 통과시켜야 한다.[36]
노트북
노트북의 경우, NVIDIA 드라이버가 ACPI를 통해 배터리 유무를 확인하고, 배터리가 없으면 오류가 반환된다. 이를 방지하려면 Base64로 변환된 텍스트로 만든 비피티블이 배터리를 스푸핑하고 검사를 우회해야 한다.[36]
파스칼 및 이전
Pascal 및 구형 노트북 그래픽 카드의 경우 패스스루는 그래픽 카드의 구성에 따라 크게 달라진다. MXM 변종 등 NVIDIA 옵티머스가 없는 노트북의 경우 기존 방식을 통해 패스스루를 달성할 수 있다. NVIDIA Optimus가 켜져 있고 CPU의 통합 그래픽 프레임 버퍼를 통해 렌더링되는 노트북의 경우 패스스루가 더 복잡하여 원격 렌더링 디스플레이 또는 서비스, Intel GVT-g 사용, 노트북에 VBIOS가 존재하기 때문에 부팅 구성에 VBIOS를 통합해야 한다.의 시스템 BIOS는 GPU 자체와 대조적이다. NVIDIA Optimus가 탑재된 GPU와 전용 프레임 버퍼를 탑재한 노트북의 경우 구성이 다를 수 있다. NVIDIA 옵티머스 스위치를 끌 수 있다면 전통적인 방법을 통해 패스스루가 가능하다. 그러나 Optimus가 유일한 구성이라면 노트북의 시스템 BIOS에 VBIOS가 있을 가능성이 높기 때문에 통합 그래픽 프레임 버퍼에서만 노트북 렌더링과 동일한 단계가 필요하지만 외부 모니터도 가능하다.[37]
매개 패스스루
매개 디바이스 패스스루 또는 전체 GPU 가상화에서 GPU 하드웨어는 IOMMU를 통해 각 게스트에 대한 가상 메모리 범위의 컨텍스트를 제공하고 하이퍼바이저는 게스트에서 GPU로 그래픽 명령을 직접 전송한다. 이 기술은 하드웨어 지원 가상화의 한 형태로서 거의 동일한[b] 성능과 높은 충실도를 달성한다. 하드웨어가 컨텍스트를 완전한 논리 디바이스로 노출하는 경우 게스트는 API를 사용할 수 있다. 그렇지 않으면, API와 드라이버는 GPU 컨텍스트의 추가적인 복잡성을 관리해야 한다. 단점으로 GPU 리소스에 액세스할 때 가상 시스템 간의 분리가 거의 없을 수 있다.[1]
다음과 같은 소프트웨어 및 하드웨어 기술이 매개된 패스스루를 구현한다.
- Nvidia vGPU[41] 또는 AMD MxGPU를[42] 통한 VMware 가상 공유 패스스루 그래픽 가속화[a]
- Citrix XenServer가 Nvidia vGPU, AMD MxGPU 또는 Intel GVT-g와[27][28] GPU 공유
- Intel GVT-g를[31][32] 사용하는 Xen[43][44][30] 및 KVM[45][44]
- Thincast Workstation - 가상 3D 기능(Direct X 12 & Vulkan 3D API)
현재 및 구형 GPU에 대해서는 일반적으로 API 원격화가 가능하지만, 매개 패스스루에는 특정 기기에서만 사용할 수 있는 하드웨어 지원이 필요하다.
노점상 | 기술 | 전용 그래픽 카드 제품군 | 통합 GPU 제품군 | ||
---|---|---|---|---|---|
서버 | 프로페셔널 | 소비자 | |||
엔비디아 | vGPU[46] | 그리드, 테슬라 | 쿼드로 | 아니요. | — |
AMD | MxGPU[42][47] | 파이어프로 서버, 라데온 본능 | 라데온 프로 | 아니요. | 아니요. |
인텔 | GVT-g | — | — | — | 브로드웰 및 신형 |
장치 에뮬레이션
GPU 아키텍처는 매우 복잡하고 빠르게 변화하며, 그 내부 세부사항은 종종 비밀로 유지된다. 일반적으로 GPU의 새로운 세대를 완전히 가상화하는 것은 불가능하며, 더 오래되고 단순한 세대에 불과하다. 예를 들어 IBM PC 아키텍처의 전문 에뮬레이터인 PCem은 Direct3D 3을 지원하는 S3 ViRGE/DX 그래픽 디바이스와 Glide를 지원하는 3dfx Voodoo2를 에뮬레이션할 수 있다.[48]
VGA 또는 SVGA 가상 디스플레이 어댑터를 사용하는 경우 게스트는 그래픽 터미널을 통해 시스템에 액세스할 수 있는 최소한의 기능만 제공하여 3D 그래픽 가속화를 제공하지 않을 수 있다.[49][50][51] 에뮬레이트된 장치는 기본 2D 그래픽 모드만 게스트에 노출시킬 수 있다. 가상 시스템 관리자는 하드웨어 가속 네이티브 성능의 3%에 불과한 속도에서도 게스트에서 3D 그래픽 애플리케이션을 사용할 수 있도록 소프트웨어 렌더링을 사용한 공통 API 구현을 제공할 수 있다.[1] 다음 소프트웨어 기술은 소프트웨어 렌더링을 사용하여 그래픽 API를 구현한다.
- VMware SVGA 3D 소프트웨어 렌더러[52]
- VirtualBox VMSVGA 그래픽 컨트롤러[50]
- Citrix XenServer OpenGL 소프트웨어 Accelerator[53]
- Windows 고급 래스터화 플랫폼
- 코어 OpenGL 소프트웨어 렌더러
- 메사 소프트웨어 렌더러
참고 항목
메모들
참조
- ^ a b c d e f g h Dowty, Micah; Sugerman, Jeremy (July 2009). Written at San Diego. "GPU Virtualization on VMware's Hosted I/O Architecture" (PDF). ACM SIGOPS Operating Systems Review. New York City: Association for Computing Machinery. 43 (3): 73–82. doi:10.1145/1618525.1618534. ISSN 0163-5980. S2CID 228328. Retrieved 10 September 2020.
- ^ Hong, Hua-Jun; Fan-Chiang, Tao-Ya; Lee, Che-Rung; Chen, Kuan-Ta; Huang, Chun-Ying; Hsu, Cheng-Hsin (2014). GPU Consolidation for Cloud Games: Are We There Yet?. 13th Annual Workshop on Network and Systems Support for Games. Nagoya: Institute of Electrical and Electronics Engineers. pp. 1–6. doi:10.1109/NetGames.2014.7008969. ISBN 978-1-4799-6882-4. ISSN 2156-8138. S2CID 664129. Retrieved 14 September 2020.
- ^ a b Walters, John; Younge, Andrew; Kang, Dong-In; Yao, Ke-Thia; Kang, Mikyung; Crago, Stephen; Fox, Geoffrey (2014). "GPU Passthrough Performance: A Comparison of KVM, Xen, VMware ESXi, and LXC for CUDA and OpenCL Applications" (PDF). IEEE 7th International Conference on Cloud Computing. IEEE 7th International Conference on Cloud Computing. Anchorage: IEEE Computer Society. pp. 636–643. doi:10.1109/CLOUD.2014.90. ISBN 978-1-4799-5063-8. ISSN 2159-6190. Retrieved 13 September 2020.
- ^ Yu, Hangchen; Rossbach, Christopher (25 June 2017). Full Virtualization for GPUs Reconsidered (PDF). ISCA-44 14th Annual Workshop on Duplicating, Deconstructing and Debunking. Toronto. Retrieved 12 September 2020.
- ^ Tian, Kun; Dong, Yaozu; Cowperthwaite, David (June 2014). "A Full GPU Virtualization Solution with Mediated Pass-Through" (PDF). Proceedings of the 2014 USENIX Conference on USENIX Annual Technical Conference (USENIX ATC'14). USENIX Annual Technical Conference. Philadelphia: USENIX. pp. 121–132. ISBN 978-1-931971-10-2.
- ^ Gottschlag, Mathias; Hillenbrand, Marius; Kehne, Jens; Stoess, Jan; Bellosa, Frank (November 2013). LoGV: Low-Overhead GPGPU Virtualization (PDF). 10th International Conference on High Performance Computing. Zhangjiajie: IEEE Computer Society. pp. 1721–1726. doi:10.1109/HPCC.and.EUC.2013.245. ISBN 978-0-7695-5088-6. Retrieved 16 September 2020.
- ^ Suzuki, Yusuke; Kato, Shinpei; Yamada, Hiroshi; Kono, Kenji (June 2014). "GPUvm: Why Not Virtualizing GPUs at the Hypervisor?" (PDF). Proceedings of the 2014 USENIX Conference on USENIX Annual Technical Conference (USENIX ATC'14). USENIX Annual Technical Conference. Philadelphia: USENIX. pp. 109–120. ISBN 978-1-931971-10-2. Retrieved 14 September 2020.
- ^ Duato, José; Peña, Antonio; Silla, Federico; Fernández, Juan; Mayo, Rafael; Quintana-Ortí, Enrique (December 2011). Enabling CUDA acceleration within virtual machines using rCUDA (PDF). 18th International Conference on High Performance Computing. International Conference on High Performance Computing. Bangalore: IEEE Computer Society. pp. 1–10. doi:10.1109/HiPC.2011.6152718. hdl:2117/168226. ISBN 978-1-4577-1951-6. ISSN 1094-7256. Retrieved 13 September 2020.
- ^ Lagar-Cavilla, Horacio; Tolia, Niraj; Satyanarayanan, Mahadev; Lara, Eyal (June 2007). "VMM-Independent Graphics Acceleration" (PDF). Written at San Antonio. Proceedings of the 3rd International Conference on Virtual Execution Environments. VEE '07. New York City: Association for Computing Machinery. pp. 33–43. doi:10.1145/1254810.1254816. ISBN 978-1-59593-630-1. Retrieved 12 September 2020.
- ^ a b Lantinga, Hilko. Deploying Hardware-Accelerated Graphics with VMware Horizon (Guide). VMware. Retrieved 12 September 2020.
- ^ visaac. "VMware Workstation 16 Pro Release Notes". docs.vmware.com. Retrieved 2021-03-24.
- ^ "Graphics Settings". Parallels Desktop - User's Guide (Guide). Parallels.
- ^ Bright, Peter (11 March 2014). "Valve releases open source Direct3D to OpenGL translator". Ars Technica. Retrieved 15 September 2020.
- ^ "Deploy graphics devices using RemoteFX vGPU". Hyper-V on Windows Server (Manual). Microsoft. Retrieved 13 September 2020.
- ^ "Plan for GPU acceleration in Windows Server". Hyper-V on Windows Server (Manual). Microsoft. Retrieved 15 September 2020.
- ^ "Hardware-Accelerated Graphics". Oracle VM VirtualBox User Manual (Manual). Oracle Corporation. Retrieved 12 September 2012.
- ^ "Guest Additions". Oracle VM VirtualBox User Manual (Manual). Oracle Corporation. Retrieved 12 September 2020.
- ^ Larabel, Michael (19 December 2018). "VirtualBox 6.0 3D/OpenGL Performance With VMSVGA Adapter". Phoronix. Retrieved 15 September 2020.
- ^ Larabel, Michael (29 January 2009). "VirtualBox Gets Accelerated Direct3D Support". Phoronix. Retrieved 15 September 2020.
- ^ 안녕! - Thincast Workstation FreeRDP 블로그
- ^ "Virgil 3D GPU project". GitHub (Project). freedesktop.org. Retrieved 13 September 2020.
- ^ Edge, Jake (10 September 2014). Virgil 3D: A virtual GPU (Article). LWN.net. Retrieved 13 September 2020.
- ^ Wollny, Gert (28 August 2019). "Virglrenderer and the state of virtualized virtual worlds". Collabora News & Blog. Retrieved 15 September 2020.
- ^ Hoffmann, Gerd (28 November 2019). "virtio gpu status and plans". Retrieved 15 September 2020.
- ^ GPU Development with Parallels Workstation Extreme (PDF) (White paper). Parallels. 2010. Retrieved 13 September 2020.
- ^ "Deploy graphics devices using Discrete Device Assignment". Hyper-V on Windows Server (Manual). Microsoft. Retrieved 13 September 2020.
- ^ a b "HDX 3D Pro". XenApp and XenDesktop 7.15 LTSR (Manual). Citrix Systems. Retrieved 15 September 2020.
- ^ a b "Graphics overview". Citrix Hypervisor 8.2 (Manual). Citrix Systems. Retrieved 15 September 2020.
- ^ a b GVT-d Setup Guide. GitHub (Guide). Retrieved 13 September 2020.
- ^ a b c Larabel, Michael (4 May 2014). "Intel Pushes Their Graphics Virtualization Capabilities". Phoronix. Retrieved 13 September 2020.
- ^ a b "Bringing New Use Cases and Workloads to the Cloud with Intel Graphics Virtualization Technology (Intel GVT-g)" (PDF). Intel Open Source Technology Center (Flyer). Intel. 2016. Retrieved 14 August 2020.
- ^ a b Jain, Sunil (4 May 2014). "Intel Graphics Virtualization Update" (Article). Intel. Retrieved 13 September 2020.
- ^ "Changelog for VirtualBox 6.1". VirtualBox. Oracle Corporation. 10 December 2019. Retrieved 12 September 2020.
- ^ "PCI passthrough via OVMF - Video card driver virtualization detection". Arch Linux Wiki (Wiki). Retrieved 13 September 2020.
- ^ "GeForce GPU Passthrough for Windows Virtual Machine (Beta)". NVIDIA Support. 2021-03-30.
{{cite web}}
: CS1 maint : url-status (링크) - ^ a b "PCI passthrough via OVMF - ArchWiki". wiki.archlinux.org. Retrieved 2021-05-20.
- ^ Tian, Lan (2020-06-25). "Intel and NVIDIA GPU Passthrough on a Optimus MUXless Laptop".
{{cite web}}
: CS1 maint : url-status (링크) - ^ Zheng, Xiao (August 2015). Media Cloud Based on Intel Graphics Virtualization Technology (Intel GVT-g) and OpenStack (PDF). Intel Developer Forum (Presentation slide). San Francisco: Intel. Retrieved 14 September 2020.
- ^ Wang, Zhenyu (September 2017). Full GPU virtualization in mediated pass-through way (PDF). XDC2017 (Presentation slide). Mountain View, California: X.Org Foundation. Retrieved 14 September 2020.
- ^ Kurkure, Uday (12 October 2017). Performance Comparison of Native GPU to Virtualized GPU and Scalability of Virtualized GPUs for Machine Learning. VMware VROOM! Performance Blog (Article). VMware. Episode 3. Retrieved 14 September 2020.
- ^ Virtual GPU Software User Guide (Guide). Nvidia. Retrieved 13 September 2020.
- ^ a b Wong, Tonny (28 January 2016). AMD multiuser GPU: hardware-enabled GPU virtualization for a true workstation experience (PDF) (White paper). AMD. Retrieved 12 September 2020.
- ^ Wang, Hongbo (18 October 2018). "2018-Q3 release of XenGT (Intel GVT-g for Xen)" (Press release). Intel Open Source Technology Center. Retrieved 14 August 2020.
- ^ a b GVT-g Setup Guide. GitHub (Guide). Retrieved 13 September 2020.
- ^ Wang, Hongbo (18 October 2018). "2018-Q3 release of KVMGT (Intel GVT-g for KVM)" (Press release). Intel Open Source Technology Center. Retrieved 14 August 2020.
- ^ "NVIDIA Virtual GPU Software Supported GPUs". Nvidia. Retrieved 9 September 2020.
- ^ AMD FirePro S-Series for Virtualization (PDF) (Datasheet). AMD. 2016. Retrieved 13 September 2020.
- ^ "Systems/motherboards emulated". PCem (Project). PCem. Retrieved 26 October 2020.
- ^ "VMware Tools Device Drivers". VMware Tools Documentation (Manual). VMware. Retrieved 12 September 2020.
- ^ a b "Configuring Virtual Machines". Oracle VM VirtualBox User Manual (Manual). Oracle Corporation. Retrieved 12 September 2020.
- ^ "Display options". QEMU User Documentation. QEMU (Manual). Retrieved 12 September 2020.
- ^ Long, Simon (2013). Virtual Machine Graphics Acceleration Deployment Guide (PDF) (White paper). VMware. Retrieved 14 September 2020.
- ^ "OpenGL Software Accelerator". XenApp and XenDesktop 7.15 LTSR (Manual). Citrix Systems. Retrieved 15 September 2020.