음, 현재 개인적으로 꽤나 큰 컴퓨터를 이용하고 있네요. 혼자서 쓰기엔 너무나 과분한 사양이므로, 이를 뜯어서 여럿이서 사용할 수 있게 만들어 볼까 합니다.
한글로 한번에 써진 문서가 없는 것 같아 제가 아는 바를 바탕으로 써보고 있습니다.
GPU-P와 DDA의 차이점
GPU-P: 하나의 GPU를 여러 가상 머신이 공유하여 사용.
DDA(Discrete Device Assignment): 하나의 GPU를 단일 가상 머신에 직접 할당.
-> 다음번엔 이걸 다뤄보겠읍니다.
지원 운영 체제
Hyper-V 가상머신을 제작하는 방법은 대략 두 가지가 있습니다.
첫번째로 원클릭으로 뽑아보고, 귀찮게 제작하는 방법 두가지를 해보겠습니다.
Hyper-V에서 GPU 가상화를 보다 쉽게 구현할 수 있도록 도와주는 Enhanced-GPU-PV 프로젝트를 소개합니다. 이 프로젝트는 기존의 "Easy-GPU-PV"를 기반으로 개선되었으며, 이제 Sunshine과 Virtual Display Driver까지 지원합니다!
GPU-PV는 시스템의 전용 또는 통합 GPU를 분할하여 여러 Hyper-V 가상 머신에 할당할 수 있게 해주는 기술입니다. 이는 WSL2와 Windows Sandbox에서 사용되는 기술과 동일합니다. Enhanced-GPU-PV는 이 과정을 자동화하여 GPU-PV VM을 더욱 쉽게 설정할 수 있도록 도와줍니다.
Set-ExecutionPolicy unrestricted
실행PreChecks.ps1
파일을 열고 실행하여 GPU 목록 또는 수정해야 할 경고 메시지를 확인합니다.CopyFilesToVM.ps1
파일을 열고 상단의 params
섹션을 편집합니다.CopyFilesToVM.ps1
스크립트를 실행합니다. (약 5~10분 소요)Update-VMGpuPartitionDriver.ps1 -VMName "VM이름" -GPUName "GPU이름"
실행VMName
: VM의 이름 및 호스트네임 (예: "GPUP"
)SourcePath
: Windows 10/11 ISO 파일의 경로 (예: "C:\Users\username\Downloads\Win11_Korean_x64.iso"
)Edition
: 설치할 Windows 에디션 (Pro 버전은 6
)SizeBytes
: 디스크 크기 (최소 20GB, 예: 40GB
)MemoryAmount
: 메모리 크기 (예: 8GB
)CPUCores
: 할당할 CPU 코어 수 (예: 4
)NetworkSwitch
: Hyper-V의 네트워크 스위치 이름 (예: "Default Switch"
)VHDPath
: VM 디스크를 저장할 경로 (예: "C:\Hyper-V\Virtual Hard Disks\"
)GPUName
: 사용할 GPU 이름 ("AUTO"
로 설정하면 첫 번째 GPU 자동 선택)GPUResourceAllocationPercentage
: VM에 할당할 GPU 비율 (예: 50
)Parsec
: Parsec 설치 여부 ($true
또는 $false
)ParsecVDA
: Parsec Virtual Display 설치 여부 ($true
또는 $false
)Sunshine
: Sunshine 설치 여부 ($true
또는 $false
)VirtualDisplayDriver
: Virtual Display Driver 설치 여부 ($true
또는 $false
)Username
: VM의 Windows 사용자 이름 (예: "GPUVM"
, 특수 문자 사용 금지)Password
: VM의 Windows 비밀번호 (공백 불가, 예: "YourPassword123!"
)Autologon
: 자동 로그인 설정 ("true"
또는 "false"
)Language
: 언어 설정 (예: "ko-KR"
, 기본값 사용 시 ""
로 두기)Timezone
: 시간대 설정 (예: "Korea Standard Time"
, 기본값 사용 시 ""
로 두기)"ERROR : Cannot bind argument to parameter 'Path' because it is null."
오류가 발생하면, Media Creation Tool로 다운로드한 ISO를 사용한 것일 수 있습니다. 이 경우 직접 ISO 파일을 다운로드해야 합니다.Enhanced-GPU-PV를 통해 Hyper-V에서 GPU 가상화를 보다 쉽게 설정하고 활용할 수 있습니다. 위의 가이드에 따라 설치 및 설정을 진행해보세요. 원활한 가상 머신 환경에서 Parsec 또는 Moonlight를 활용하여 고성능의 원격 데스크톱 경험을 즐기시기 바랍니다.
가상 머신 생성
GPU-P 기능 설정
$vm = "가상머신이름"
Remove-VMGpuPartitionAdapter -VMName $vm -ErrorAction SilentlyContinue
Add-VMGpuPartitionAdapter -VMName $vm
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1 #1G
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 4 #4G
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 2 #2G
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionDecode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionDecode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 10
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1GB -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
Restart-VM -Name $vm
가상 머신 내에서 GPU 드라이버 설치
호스트 컴퓨터의 C:\Windows\System32\DriverStore\FileRepository 폴더에서 nvdispi.inf_amd64 폴더를 찾아 줍니다.
//UNIQUEID 는 컴퓨터마다 다름
//드라이버 버전에 따라 nvdispi.inf_amd64가 아니라 nvdispig.inf_amd64일 수도 있음. 정확히 확인은 안해봤으나, 500번대 기준으로 달라지는 것으로 추정.
게스트 컴퓨터의 C:\Windows\System32\HostDriverStore\FileRepository\에 복사해줍니다.
(해당 디렉토리가 존재하지 않는 경우 직접 생성해서 작업합니다.)
호스트 컴퓨터의
c:\Windows\System32\에 있는 nvapi64.dll(드라이버)를 게스트 컴퓨터의 C:\Windows\System32로 복사합니다.
게스트 컴퓨터 재부팅 후 작동여부를 확인합니다.
<출처> https://m.blog.naver.com/idh3601/222520214248
원격 데스크톱 설정
제어판 > 시스템 > 원격 설정 > 원격 데스크톱 허용
외부 접속 환경 구성
여러 개의 GPU를 사용하는 시스템에서 특정 GPU를 가상 머신에 할당하려면 다음 단계를 따르세요.
시스템에서 GPU-P를 지원하는 모든 GPU 목록과 각 GPU의 인스턴스 경로를 확인합니다.
# 할당 가능한 GPU-P 자원 확인
Get-VMHostPartitionableGpu
이 명령어는 시스템에 연결된 GPU의 InstancePath
와 기타 정보를 제공합니다.
가상 머신에 할당하려는 GPU의 InstancePath
를 확인합니다. 출력된 목록에서 원하는 GPU의 InstancePath
를 식별합니다.
Add-VMGpuPartitionAdapter
명령어를 사용할 때 -InstancePath
매개변수를 사용하여 특정 GPU를 지정합니다.
# GPU-P를 VM에 추가 (특정 GPU 지정)
Add-VMGpuPartitionAdapter -VMName "VM_Name" -InstancePath "GPU_Instance_Path"
"GPU_Instance_Path"
는 앞서 확인한 GPU의 InstancePath
를 입력합니다.InstancePath
값은 시스템마다 다르므로 반드시 본인의 시스템에서 확인한 값을 사용해야 합니다.예시:
Add-VMGpuPartitionAdapter -VMName "VM_Name" -InstancePath "\\?\PCI#VEN_10DE&DEV_2206&SUBSYS_220610DE&REV_A1#4&1d81e16&0&0019#{064092b3-625e-43bf-9eb5-dc845897dd59}\GPUPARAV"
앞서 설명한 것처럼 Set-VMGpuPartitionAdapter
명령어를 사용하여 GPU 자원의 세부 설정을 조정합니다.
# GPU 리소스 할당량 설정
Set-VMGpuPartitionAdapter -VMName "VM_Name" -MinPartitionVRAM 1GB -MaxPartitionVRAM 2GB
가상 머신에 할당된 GPU를 확인하여 올바르게 설정되었는지 검증합니다.
# VM에 할당된 GPU 정보 확인
Get-VMGpuPartitionAdapter -VMName "VM_Name"
이 명령어는 가상 머신에 연결된 GPU의 세부 정보를 제공합니다.
가상 머신에서 GPU가 제대로 작동하는지 확인합니다.
VM에 로그인:
GPU 드라이버 설치:
GPU 인식 확인:
디스플레이 어댑터
를 확인하여 GPU가 인식되었는지 확인합니다.Win + R
키를 누르고 dxdiag
를 입력하여 실행합니다.기본적으로 rdp 원격 데스크톱 연결 시 기본적으로 프레임을 30fps로 제한해 두었습니다. 이는 아마도 네트워크 지연(latency)을 최소화하기 위한 결정으로 보입니다. 하지만 현대의 네트워크 환경에서는 60fps도 무리 없이 구동할 수 있습니다. 그래서 원격 데스크톱에서 60fps를 활성화하는 방법까지 소개해 드리겠습니다.
Win + R
을 눌러 실행 창을 열고 regedit
를 입력하여 레지스트리 편집기를 실행합니다.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
WinStations
폴더까지만 이동하시면 됩니다.DWMFRAMEINTERVAL
로 지정합니다.DWMFRAMEINTERVAL
값을 더블 클릭하여 편집 창을 엽니다.f
또는 10진수로 15
를 입력합니다.f
인지 궁금하실 수 있지만, 이는 내부적으로 해당 값이 프레임 간격을 나타내며, f
는 60fps에 해당하는 값입니다.Win + R
을 눌러 실행 창을 열고 services.msc
를 입력하여 서비스 관리자를 실행합니다.Remote Desktop Services
를 찾아 마우스 오른쪽 클릭 후 다시 시작을 선택합니다.이제 원격 데스크톱을 재접속하여 부드러운 60fps 환경이 적용되었는지 확인해 보세요. 네트워크 상태가 양호하다면 동영상 재생이나 그래픽 작업 시 이전보다 훨씬 부드러운 화면을 경험하실 수 있을 것입니다.
원격 작업 시 작은 설정 변경만으로도 작업 효율과 만족도를 크게 향상시킬 수 있습니다. 이 방법을 통해 더 나은 원격 데스크톱 환경을 즐겨보세요.
출처: Project Eli