[2]. VMware 그래픽 가상화 - 그래픽 가상화 방식 분류
1. 그래픽 카드별 가상화 분류
2. vSGA : 가상 공유 그래픽 가속(Virtual Shared Graphics Acceleration)
[ 여러개의 가상 시스템에서 ESXI 호스트의 물리적 GPU를 공유할 수 있는 방식 ]
그래픽 카드에 대한 액세스는 ESXI(하이퍼바이저)가 담당하고 VM 내부의 VMware SVGA 전용 드라이버와 통신하여 그래픽 명령을 처리합니다
물리적인 GPU가 아니고 소프트웨어적으로 DirectX 9 및 OpenGL 2.1 애플리케이션을 실행 하기때문에 그래픽 성능(가벼운 3D어플리케이션만 가능)에 대한 제약이 발생합니다.
테스트 결과 GRID K2에서는 포토샵 구동은 OpenGL지원 문제로 지원이 안됬습니다. 그외 웹서핑이나 다른 일반적은 경우는 확실히 vSGA적용에 따른 반은 속도는 달랐습니다.
- 가용 가능한 최대 VM갯수는 가상화 그래픽 카드에 vRAM크기에 따라 달라지며 VMware 설정(GPU Profiles) 에서 조절이 가능합니다.
- 지원 대상 OS : Windows(Window 7이상)만 지원가은하며, Linux/Mac OS X는 지원하지 않습니다.
- 지원 대상 그래픽 카드: GRID K1, GRID K2, Tesla M10, Tesla M6
3. vDGA : 가상 다이랙트 그래픽 가속(Virtual Dedicated Graphics Acceleration)
[ ESXI 호스트의 단일 물리적 GPU를 단일 가상 시스템 전용 사용하는 방식(PCI Pass-through) ]
그래픽 카드에 대한 액세스를 VM이 직접 통신을 하면서 명령어를 처리합니다. 그래픽카드 제조사(밴더)의 드라이버를 그대로 사용할수 있게 되면서 vSGA와 같은 제약사항 없다
단점은 GPU 하나당 VM 한개만 사용가능합, 여러개의 VM을 운영하려면 여러개의 그래픽 카드가 필요하므로 확장성에 제약이 발생
ESXi(하이퍼바이저) 호스트에서 GPU를 패스스루를 활성화 하게되면 더이상 ESXI가 액세스를 하지않고 VM이 제어하게 된다
GRID K2를 기준으로는 그래픽카드에 GPU가 2개 이므로 최대 2대의 VM을 동시에 (Pass-through 방식) 운용 가능합니다.
- 가용 가능한 최대 VM갯수는 그래픽 카드 당 무조건 1개만 가능
- 지원 대상 OS : Windows, Linux, Mac OS X(해킨토시) 등등 지원 가능합니다.
- 지원 대상 그래픽 카드 : 거의 대부분의 그래픽카드 모두를 지원 가능합니다.
4. vGPU : 가상 공유 GPU(Virtual Graphics Processing Unit) - Shared Pass-Through
[ ESXI 호스트의 단일 물리적 GPU를 여러개의 가상 GPU로 변환 해서 VM입장에서는 물리적인 GPU로 인식 시킴(vDGA와 vSGA의 장정을 결합) ]
그래픽 카드에 대한 액세스는 ESXI(하이퍼바이저)가 담당하면서 각각의 VM에 그래픽 코어를 가상화해서 vGPU를 제공 하므로서
VM입장에서는 그래픽 카드 제조사(밴더)들의 드라이버를 그대로 통신하며 그래픽 명령어를 처리합니다 (하지만 모든 그래픽 카드가 다 가능한게 아니기때문에 역시 제약사항은 존재 한다)
- 가용 가능한 최대 VM갯수는 가상화 그래픽 카드에 vRAM크기에 따라 달라지며 VMware 설정(GPU Profiles) 에서 조절이 가능합니다.
- 지원 대상 OS : Windows(Window 7이상), Linux 등등
- 지원 대상 그래픽 카드 : A100, Tesla V100S, Tesla V100, RTX 8000, RTX 6000, Tesla T4, Tesla M10, Tesla P6, GRID K1, GRID K2
- 단일 물리적 GPU를 vGPU Manager 에서 (여러개의 가상 GPU로 변환) 해서 VM입장에서는 가상의 물리적인 GPU로 인식 시킴(그래픽 카드 제조사 드라이버를 그대로 사용)
5. VMware 그래픽 가상화 운영 방식 설정
[ ESXI(하이퍼바이저) 호스트에서 설정 ]
- 운영방식을 패스스루 로 전환 할 경우 vSphere에서는 더이상 설정할게 없다 (어자피 그래픽 카드가 전용 할당 되었기 때문에...)
[ vSphere에서 설정 ]
- 공유 방식 결정
- vSGA 운용 : 공유됨(VMware 공유 가상 그래픽)
- vGPU 운용 : Shared Direct(벤더 공유 패스스로 그래픽)
- 할당 정책 결정
- 최고 성능: GPU 전체에 VM 분산(최고 성능)
- GPU 통합: 최대 수순까지 GPU에서 VM 그룹화(GPU 통합)
6. 그밖에 가상화 관련 기술
- GPGPU : GPU 상의 범용 계산 (General-Purpose computing on Graphics Processing Units)
CPU가 맡았던 연산을 병렬처리에 유리한 GPU를 사용해 연산 속도를 향상 시키는 기술
- CUDA(Compute Unified Device Architecture) : 그래픽 처리 장치(GPU)에서 수행하는 (병렬 처리) 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술
- OpenCL(Open Computing Language) : 개방형 범용 병렬 컴퓨팅 프레임워크
- OpenGL(Open Graphics Library) : 프로그래밍 언어 간 플랫폼 간의 교차 응용 프로그래밍을 지원
- DirectX : 멀티미디어, 특히 게임 프로그래밍에서 마이크로소프트 플랫폼에서 작업을 위한 API의 집합이다
- C++ AMP(C++ Accelerated Massive Parallelism) : 개별 그래픽 카드의 GPU (그래픽 처리 장치)와 같은 데이터 병렬 하드웨어를 활용 하 여 c + + 코드의 실행을 가속화 합니다
- VMware Bitfusion(FlexDirect) : GPU를 가상화 하여 네트워크 엑세스가 가능한 공유 리소스 풀을 제공
- GPU(그래픽 처리 장치)와 같은 하드웨어 가속기를 가상화하여 AI(인공 지능) 및 ML(기계 학습) 워크로드를 지원하는 네트워크 액세스 가능한 공유 리소스 풀을 제공합니다
- 큰규모의 자원을 통합, 데이터센터 측면에서 GPU를 가상하 화고 통합 하는 유연성을 제공한다
- GPU 가상화 솔루션 Flex Direct 한개의 GPU를 다양한 크기로 작게 분할하여 사용조건에 맞춰 GPU를 동적으로 할당여 효율적인 GPU사용을 제공합니다.
7. VM OS별 GPU 가상화 방식 결정
가상화방식/VM OS | Windows | Linux(Unix계열) | Mac OS X |
vSGA (가상 공유 그래픽 가속) | 사용 가능(O) | 사용 불가(X) | 사용 불가(X) |
vDGA (가상 다이랙트 그래픽 가속) | 사용 가능(O) | 사용 가능(O) | 사용 가능(해킨토시) |
vGPU (가상 공유 GPU) | 사용 가능(O) | 사용 가능(O) | 사용 불가(X) |
※ vSGA, vDGA, vGPU의 개념이 없었을때 vSGA의 방식으로 Linux를 다수의 VM으로 운영하기 위한 목적으로 시도를 했던적이 있다
당시 그래픽카드 드라이버 설치와 설정정만 한달가량을 삽질을 하다가 깨달은적이 있었습니다, Linux는 vSGA를 지원 안한다는것을.....^^
다른분들은 저와 같은 어리석은 짓은 하지 않았으면 해서 정리해 봅니다.^^
결국 해결은 GRID K2그래픽 카드로 vGPU 방식으로 설정은 했지만 엄밀히 따지자면 vDGA 방식이라고 생각하시면 됩니다.
Nvidia GRID K2는 GPU가 2개인 그래픽 카드인데 Linux에서 그래픽 가상화를 하기위해서는 GPU 전체가 전용 할당(vDGA) 되어야 합니다.
그래서 GRID K2는 Linux VM으로는 최대 2개까지만 지원이 가능합니다.
8. Nvidia 가상화 그래픽 카드별 GPU Profiles
- GPU Profile : GRID K1, GRID K2
- 고해상도 : 최대 해상도설정(pass-throught)인경우그래픽 카드당 GPU가 2개씩 있는 제품이라서 2개의 VM에 Window, Linux/Solaris/FreeBSD까지 서비스 가능
- 고해상도 : (K280Q, K180Q)일경우 최대 2개 또는 4개의 VM에 Windows 계열의 OS에 서비스 가능(디자인 사용자)
- 저해상도 : (K200, K100)일경우 최대 16개 또는 32개의 VM에 Windows 계열의 OS에 서비스 가능(일반 사용자)
- GPU Profile : V100S, RTX 8000, RTX 6000, T4, M60, M6, P3, P40, P6
- Tesla T4 : (4 User) 4개의 VM에 웹서핑, 오피스, 포토샵, 동영상 스트리밍 등의 서비스 가능
- Quadro RTX 6000 : (3 User) 3개의 VM에 마야, 캐드, 딥러닝 등의 서비스 가능
- Quadro RTX 8000 : (6 User) 6개의 VM에 마야, 캐드, 딥러닝 등의 서비스 가능
- GPU Profiles : A100, A30, A40, A10, A16 (Data Center용 그래픽 카드)
대량의 VDI를 고성능으로 제공하고, 3D CAD 및 그래픽 작업의 공동 협업을 가능케 하며, 게임 개발환경을 개선하고 어디서든 실사급 엔지니어링 및 시각화, 그리고 더 빠른 딥러닝을 지원합니다.
- Nvidia A10 : 실시간 레이 트레이싱, 시뮬레이션, 가상 현실, AI 기반 영상 작업을 위한 워크스테이션 가상화를 위한 GPU이고,
- Nvidia A16 : 대량의 VDI(가상 데스크톱 인프라)를 고성능으로 제공하기 위한 GPU입니다
- Nvidia A100 : Tensor 코어 GPU 초고성능을 요구하는 HPC, AI 프로젝트(딥 러닝 트레이싱), 슈퍼컴퓨터에 주로 활용됩니다.
9. Nvidia 가상화 그래픽 카드별 GPU Profiles - VMware Setting