
그래픽 카드 가속을 위해 IronHide를 통해 Windows VM을 실행할 수 있는지에 대한 아이디어가 있습니까? 내 비디오 카드를 활용하여 게임을 하거나 블루레이를 보고 싶습니다.
답변1
아마도 가상 게스트의 그래픽과 실제 호스트 O/S 사이의 설명이 여기서 도움이 될 것입니다.
먼저 기본사항:
가상 게스트의 모든 것은 추상화입니다. 이는 가상 게스트 O/S의 모든 장치와 드라이버가 실제 호스트 장치 및 드라이버에 의존하지 않는다는 것을 의미합니다.
간단한 예를 들어 보겠습니다. 마우스는 특정 장치로 간주됩니다. Linux 커널은 이 장치를 확인하고 게스트 운영 체제가 해당 장치를 사용할 수 있도록 허용합니다. 이 "가상 장치"는 VirtualBox, VMWare, Xen 등의 가상화 도구를 통해 실제 물리적 장치에 매핑됩니다. 따라서 게스트 운영 체제는 물리적 마우스가 무엇인지 이해할 필요가 없으며 가상화 도구가 매핑한 것만 볼 수 있습니다. . 이 접근 방식의 가치는 가상 게스트를 다른 호스트로 이동할 수 있다는 것입니다. 호스트 자체에 직접적인 종속성이 없기 때문에 동일한 방식으로 작동합니다.
실제로 이것을 보여주기 위해 lsusb
호스트와 게스트 모두에서 실행할 수 있습니다. 내 호스트 O/SI에는 다음 USB 장치가 있습니다.
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
내 게스트 oneiric O/SI에서는 다음 USB 장치를 볼 수 있습니다. 이는 호스트와 다릅니다.
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Windows 또는 Linux 여부에 관계없이 모든 게스트 O/S는 이 가상 게스트 장치만 볼 수 있습니다.
호스트 그래픽과 게스트 그래픽
그래픽의 경우에도 마찬가지입니다.
내 호스트 그래픽은 다음과 같습니다.
sudo lshw -class display
*-display
description: VGA compatible controller
product: Core Processor Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 18
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:41 memory:90000000-903fffff memory:80000000-8fffffff ioport:3050(size=8)
내 게스트 oneiric O/S에서는 다음 그래픽 카드를 볼 수 있습니다. 호스트와 동일하지 않다는 것을 알 수 있습니다.
sudo lshw -class display
*-display UNCLAIMED
description: VGA compatible controller
product: VirtualBox Graphics Adapter
vendor: InnoTek Systemberatung GmbH
physical id: 2
bus info: pci@0000:00:02.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: vga_controller bus_master
configuration: latency=64
resources: memory:e0000000-e7ffffff
마찬가지로 Windows 게스트 O/S에는 유사한 가상 게스트 장치만 표시됩니다.
VirtualBox의 어두운 세계에서게스트 추가수동으로 설치할 수 있습니다 (또는 11.10-기수확인하고 설치를 권장함) 게스트 O/S가 호스트 O/S 그래픽에 대한 향상된 액세스를 허용하도록 추가 커널 모듈(또는 Windows 게스트용 장치 드라이버)을 설치합니다. 다시 말하지만 직접적인 매핑은 아니지만 3D 가속 그래픽을 볼 수 있습니다.
가상 머신 내부의 애플리케이션이 OpenGL 프로그래밍 인터페이스(또는 Windows 게스트 O/S의 경우 DirectX 호출)를 통해 3D 기능을 사용하는 경우 소프트웨어에서 에뮬레이트하는 대신(느리게 됨) VirtualBox는 호스트의 기능을 사용하려고 시도합니다. 3D 하드웨어.
다시 한 번 강조하지만, 게스트 O/S는 실제 그래픽 카드를 볼 수 없으며 단지 게스트의 OpenGL(또는 DirectX) 호출을 호스트 하드웨어로 직접 전달하여 처리합니다.
VirtualBox 설정에서 비디오 카드 메모리와 3D 그래픽 카드 설정을 변경해야 합니다. 그러면 게스트 O/S에 128Mb RAM이 포함된 "3D 가속 카드"가 표시됩니다. 호스트 그래픽 카드가 이보다 나은지는 중요하지 않습니다. 게스트 O/S는 이 "간단한" 추상화된 가상 그래픽 카드만 볼 수 있습니다.
Windows 게스트 O/S를 사용하고 있다고 말씀하셨기 때문에 2D 확인란을 사용할 수 있습니다.지나가 다프로그래밍 인터페이스 호출이 수행됩니다.
Bumblebee/IronHide는 둘 중 하나의 그래픽 전환 메커니즘입니다. 즉, 통합 그래픽이나 고용량 NVidia/ATI 그래픽 중 하나를 사용하지만 동시에 둘 다 사용할 수는 없습니다.
더 높은 전환 가능 그래픽의 OpenGL(또는 DirectX) 기능은 통합 칩셋보다 훨씬 뛰어나므로 게스트 O/S 그래픽 집약적 응용 프로그램을 사용하면 상대적으로 향상된 그래픽 성능을 볼 수 있습니다. 그러나 이러한 개선은 여전히 128MB 가상 게스트 그래픽 장치의 제약 내에서 작동하기 때문에 호스트에서 기본적으로 동일한 응용 프로그램을 실행하는 것만큼 드라마틱하지 않습니다.
답변2
위의 답변https://askubuntu.com/a/85138/38052게스트 O/S가 보는 모든 것이 어떻게 일종의 추상화인지 설명합니다. 예전에는 이것이 완전히 사실이었지만 상황이 변하고 있으며 더 이상 완전히 사실이 아닐 수도 있다고 생각합니다.
일부 최신 프로세서는 I/O MMU 가상화도 지원합니다. 이 기술은 Intel 버전의 경우 Intel VT-d, AMD 버전의 경우 AMD-Vi라고 합니다. x86 가상화에 대한 Wikipedia 기사를 인용하려면 다음을 수행하십시오.
Intel의 I/O MMU 가상화(AMD-Vi 및 VT-d) 주요 기사: IOMMU
IOMMU(입/출력 메모리 관리 장치)를 사용하면 게스트 가상 머신에서 DMA 및 인터럽트 재매핑을 통해 이더넷, 가속 그래픽 카드, 하드 드라이브 컨트롤러 등의 주변 장치를 직접 사용할 수 있습니다. 이를 PCI 패스스루라고도 합니다. AMD와 Intel 모두 사양을 발표했습니다.
AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU". Intel's "Virtualization Technology for Directed I/O" (VT-d).
이것은 꽤 흥미로워 보이지만 이미 몇 가지 문제를 예견할 수 있습니다. 우선, Optimus 노트북에서 Intel IGP는 항상 최종 화면 출력을 렌더링합니다. 게스트 O/S와 호스트 O/S가 모두 IGP를 어떻게 구동할지는 확실하지 않습니다. 한 가지 생각은 게스트가 실행되는 동안 그래픽 없이 호스트를 실행할 수 있다면 이것이 작동하도록 만들 수 있다는 것입니다. 그러나 실제로 이 작업을 수행하는 방법은 확실하지 않습니다.
답변3
네, 궁금해서 이걸 먹어봤습니다.
QEMU와 현재 VirtualBox는 게스트 시스템으로의 PCI 장치 통과를 지원합니다. 즉, 두 번째 그래픽 카드가 있는 경우 이를 Linux 호스트의 Windows 게스트에 전달하고 가상화된 Windows 환경에서 완전한 3D 성능(게임)을 얻을 수 있습니다. 두 개의 그래픽 카드가 있는 데스크탑 장비의 경우입니다. 장치 관리자는 "Virualbox 그래픽 어댑터"라고 말하는 대신 "NVIDIA GTX... 무엇이든"을 표시합니다.
Optimus는 항상 더 복잡합니다. ASUS UX501에서 이것을 테스트하고 있습니다. NVidia 칩을 Windows 게스트에 전달할 수 있었고 장치 관리자에 "3D 비디오 컨트롤러"로 표시되었습니다. 하지만 이를 지원하는 Windows 드라이버를 설치할 수 없었습니다. 인텔 그래픽의 존재가 전제 조건인 것 같습니다.
사랑이 의심한 것은 옳았다. 엔비디아 칩은 모니터를 구동하는 "디스플레이 어댑터"가 아니라 통합 인텔 칩용 가속기인 것처럼 보입니다. 두 개의 별도 장치가 독립적으로 작동하지 않는 것 같습니다.
답변4
https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28
경우에 따라 DGPU를 통과하는 것이 가능합니다(위 링크 참조). 나는 Ubuntu 호스트에서 Windows10 게스트로 전달되는 Quadro m5000m DGPU를 사용하여 Dell 7710에서 이를 관리했습니다.
그러나 AFIK는 하드웨어를 통해 이 카드의 출력을 기본 노트북 화면에 표시할 수 없습니다. 내 생각에 현재 시점에서는 Looking Glass가 가장 좋은 선택일 것이고, 홈 스트리밍/RDP 등의 Steam이 그 뒤를 잇을 것입니다.
IGPU와 DGPU 사이를 마음대로 전환하기 위해 멀티플렉싱된 노트북에서 Mux를 제어하는 것이 왜 불가능한지 알고 싶습니다. VGA Switcheroo를 통해 이 작업을 시도했지만 DPU를 통해 게스트 OS로 전달되기 전에도 먹스를 전혀 제어할 수 없었습니다.
내 생각에 Mux가 없는 노트북은 적어도 어떤 GPU가 프레임 버퍼의 어떤 비트에 쓰고 있는지 제어하기 위해 게스트와 호스트 간의 통신이 필요한 것이 더 어려울 것 같습니다. 내 머리보다 훨씬 더.