Gunakan NVidia GPU dari VirtualBox?

29

Bagaimana cara membuat tamu VirtualBox menggunakan grafis NVidia?

Penyiapan host:

  • Windows 7 x64

  • NVidia Optimus

  • Di Panel Kontrol NVIDIA , saya secara eksplisit memilih prosesor NVIDIA kinerja tinggi untuk:

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
    
  • Ketika VirtualBox berjalan, maka perangkat lunak NVidia tidak mencantumkannya sebagai aplikasi yang menggunakan GPU NVidia. Oleh karena itu, saya berasumsi bahwa VirtualBox memang tidak menggunakan GPU Nvidia.

Tamu:

  • Windows 7 x64 (sama dengan host)

  • Penambahan Tamu diinstal

  • Akselerasi 3D diaktifkan di pengaturan VirtualBox: Tampilan / Video / Aktifkan Akselerasi 3D

  • Apa yang Badak , aplikasi OpenGL mampu laporkan sebagai adaptor video:

    Humper
    Chromium
    OpenGL version: 2.1 Chromium 1.9
    Render version: 2.0
    Shading Language: 1.40 - Intel Build 9.17.10.3517
    Driver Date: NA
    Driver Version: NA
    Maximum Texture size: 8192 x 8192
    Z-Buffer depth: 32bits
    Maximum Viewport size: 8192 x 8192
    Total Video Memory: 64 MB
    

    Bagi saya sepertinya mesin virtual memang menggunakan akselerasi perangkat keras 3D dari tuan rumah, tetapi sayangnya yang Intel.

feklee
sumber
2
VM tidak mendapatkan akses perangkat keras langsung - mereka mendapatkan GPU virtual. . . pertanyaan terkait: superuser.com/questions/395245/…
ernie
6
@ernie VirtualBox dapat memberikan tamu akses langsung ke API OpenGL GPU tuan rumah. Sejauh yang saya tahu itu bekerja pada mesin saya. Hanya VirtualBox yang menggunakan GPU Intel dan bukan GPU NVidia. Kutipan dari manual VirtualBox : "Dengan fitur ini, jika aplikasi di dalam mesin virtual Anda menggunakan fitur 3D melalui antarmuka pemrograman OpenGL atau Direct3D 8/9, alih-alih mengemulasi mereka dalam perangkat lunak (yang akan lambat), VirtualBox akan berusaha untuk menggunakan perangkat keras 3D host Anda. "
feklee
@feklee Judul pertanyaan ini menyesatkan: Anda ingin menggunakan GPU nVidia untuk VBox. 'Dari' juga mungkin tetapi berarti berbeda: Perangkat Keras-Passthrough, yaitu. akses GPU tuan rumah langsung dari dalam VBox.
larkey
askubuntu.com/questions/139320/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件 事件
Temukan tentang "virtualbox passthrough video".
e-info128

Jawaban:

20

Saya menyadari beberapa tahun telah berlalu tetapi ingin menjawab karena posting ini muncul cukup tinggi ketika Anda mencari "virtualbox 3d multiple GPU". Di masa yang telah berlalu, banyak hal menjadi lebih sederhana dan lebih baik.

Orang-orang yang tersandung pada utas ini kemungkinan akan mendarat di sini karena mereka memiliki laptop atau PC yang memiliki dua GPU, yang cukup umum akhir-akhir ini - terutama pada laptop gaming. Intel GPU onboard digunakan untuk rendering windows dan aplikasi umum, tetapi aplikasi yang memanfaatkan fungsi 3D GPU harus melakukannya melalui GPU Nvidia yang berkinerja lebih tinggi.

Hari ini, saya sedang membangun VM Ubuntu di laptop saya untuk melakukan beberapa pengembangan lintas platform, dan semuanya baik-baik saja kecuali guest VM sangat lambat, dan tidak ada penjelasan untuk itu karena CPU, memori, disk semuanya menunjukkan pemanfaatan yang rendah.

Tidak butuh waktu lama untuk mengetahui apakah kinerja video yang menyebabkan masalah. Meluncurkan aplikasi, memaksimalkan / meminimalkan jendela - apa pun yang kita terima begitu saja pada tahun 2019 tetapi membutuhkan akselerasi 3D untuk bekerja pada kecepatan yang masuk akal - menggunakan GPU 0.

Mudah untuk menentukan ini karena Windows 10 sekarang memiliki kemampuan untuk melihat pemanfaatan GPU menggunakan "task manager", kemudian tab "performance". Dan saya bisa melihat ketika saya memindahkan windows, dimaksimalkan, diminimalkan, yang dilakukan melalui GPU pada host. GPU pada host tersebut adalah Intel HD GPU terintegrasi, dan saya ingin menggunakan NVidia GTX-1050ti, yang merupakan GPU1.

Setelah mencari-cari, saya tidak benar-benar menemukan tempat di mana Anda dapat menentukan GPU mana yang akan digunakan. Tetapi utas ini, dan beberapa lainnya, mengingatkan saya bahwa pada jenis pengaturan ini Anda harus masuk ke panel kontrol NVidia, lalu "kelola pengaturan 3d", lalu tab "Pengaturan Program".

Anda kemungkinan tidak akan menemukan "Virtualbox" dalam daftar. Tetapi Anda dapat menekan tombol "Tambah", dan tambahkan virtualbox.exe. Anda mungkin harus menelusuri drive / path tempat instalasi virtualbox Anda. Setelah Anda menambahkannya, dalam pengaturan di bawah ini pastikan item 2. "Pilih prosesor grafis yang disukai untuk program ini" diatur ke GPU yang Anda inginkan, yang dalam kasus saya adalah "prosesor NVIDIA berkinerja tinggi" .

Jangan mengaturnya menjadi otomatis, dan tentu saja tidak mengaturnya menjadi terintegrasi. Tentu saja, Anda perlu pengaturan VM diatur dengan kotak akselerasi 3D dicentang, dan Anda perlu tambahan tamu diinstal pada host. Tetapi begitu Anda telah menetapkan pengaturan 3d video host seperti dijelaskan di atas, matikan VM tamu, keluar dari kotak virtual, dan kemudian luncurkan kembali virtualbox dan VM.

Jika Anda menggunakan task manager | performacne dan lihat proses "virtualbox manager" dan lihat GPU apa yang digunakan saat Anda menavigasi UI VM tamu, Anda akan melihatnya menggunakan GPU yang lebih baik sekarang. Lihat gambar yang ditempelkan di bawah ini.

Semua yang dikatakan, jangan berharap dapat menjalankan game di VM tamu. Akselerasi 3D yang dilewati masih belum sejauh itu. Tetapi Anda dapat berharap memiliki OS dan UI modern di tamu Anda, dan memiliki pengalaman yang dapat diterima. Orang akan dapat memainkan game yang lebih lama di VM tamu, seperti apa pun berdasarkan directX9. Sayangnya, seiring dengan kemampuan virtualisasi GPU eveolves, teknologi game 3d berkembang lebih cepat.

Tangkapan layar

Thomas Carlisle
sumber
2
Saya melakukan sedikit riset hari ini pada kemampuan akselerasi 3D dari VirtualBox dan VMWare, dan pada Januari 2019, jika akselerasi GPU di VM tamu penting bagi Anda, maka memilih VMWare adalah pilihan terbaik Anda - terutama jika OS tamu Anda adalah windows. Dukungan VirtualBox Kemampuan akselerasi GPU sedikit kurang berkembang, karena Anda hanya dapat memberikan tamu VM maksimum 128MB RAM video, dan di VMWare memungkinkan hingga 2GB dialokasikan untuk memori video. VMWare mendukung DirectX 10, dan Virtualbox mendukung DirectX9. Seperti yang saya katakan di posting, directx 9 cukup tanggal.
Thomas Carlisle
1
"" Pilih prosesor grafis yang disukai untuk program ini "diatur ke GPU yang ingin Anda gunakan" Saya tidak melihat opsi di atas. Saya melihat Ambinetn, Ansiotropic Filtering ... dll tetapi tidak ada pada "pilih prosesor grafis pilihan"
moondra
Anda perlu PCI passthrough meskipun saya belum membuatnya bekerja pada Optimus, masih saya pikir dengan beberapa peretasan itu mungkin
kensai
Saya berhasil melakukan trik serupa untuk memaksa mengaktifkan kartu nvidea untuk virtualbox tetapi tidak satu pun dari 3 pengontrol grafis yang disediakan oleh Virtualbox terbangun dengan benar dengan OS tamu Neon KDE saya. Saya mendapat gangguan UI besar-besaran sehingga menggunakan nvidea dalam kasus saya bukan merupakan opion. Berkat proposal @ThomasCarlisle, saya akan mencoba bermain dengan VMware.
Arkemlar
17

Memberikan tamu akses GPU penuh mungkin tidak mungkin. Jika mesin virtual memiliki akses langsung ke GPU Anda ketika host Anda menggunakannya, Bad Things TM akan terjadi karena berbagi memori antara dua komputer yang berbeda secara efektif bukanlah sesuatu; pointer dan alamat dan yang lainnya akan sangat berbeda di antara mereka. (Tidak ada kartu yang tersedia bagi konsumen mendukung servis dua komputer sekaligus.)

Namun, ada beberapa hal yang bisa Anda coba. Pertama, atur prosesor grafis pilihan Anda ke yang bagus di Panel Kontrol NVidia ( Pengaturan 3DKelola pengaturan 3DProsesor grafis pilihan ). Itu mungkin membuat VirtualBox pergi dengan kartu NVidia untuk OpenGL.

Jika itu tidak membantu, cobalah menginstal Penambahan Tamu dalam Mode Aman pada tamu.

Akhirnya, pada host Linux , Anda dapat mencoba untuk melewati GPU ke mesin virtual, tetapi ini hanya akan bekerja untuk kartu PCI dan saya tidak dapat menemukan apakah kartu Anda adalah PCI, dan meskipun demikian, Anda memiliki peluang bagus untuk merobek GPU dari tuan rumah atau menyebabkan masalah lain. Pertama temukan alamat PCI (bus, perangkat, dan fungsi) untuk kartu yang baik. Atur chipset VM Anda ke ICH9; ini tidak langsung merusak apa pun ketika saya mencobanya. Kemudian gunakan utilitas VBoxManage untuk melampirkan kartu:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Ganti yang Your VM Namesesuai. BBadalah nomor bus GPU Anda di host; DDadalah perangkat; Fadalah fungsinya. Setelah itu @, masukkan slot PCI bahwa itu akan menjadi tamu. Sebagai contoh:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:[email protected]

Secara umum, GPU passthrough lebih mungkin terjadi pada host Linux. Lihat Cara mengatur mesin game dengan passthrough GPU .

Ben N
sumber
2
Premis yang memasang GPU ke VM adalah "Bad Thing" tidak benar; ada komunitas besar orang yang ingin melakukannya untuk membuat game VMs di bare-metal hypervisors. Jika seseorang ingin melakukan ini di Linux, itu akan memerlukan daftar hitam GPU PCIe sehingga kernel hanya pergi ke grafis chipset; ini mencegah masalah "memori bersama". Mencegah Windows dari mengambil kartu mungkin adalah masalah yang paling sulit untuk dipecahkan untuk pertanyaan ini, dan kemungkinan akan memerlukan menonaktifkan perangkat atau menghapus instalan optimus dan driver nvidia.
Tim G
@TimG Poin bagus, saya sudah mengklarifikasi posting saya sedikit. Terima kasih!
Ben N
@BenN Jawaban yang bagus, tapi saya perlu poin untuk diklarifikasi Sudahkah Anda mencobanya sendiri di host Windows? Manual mengatakan bahwa ini hanya tersedia di host Linux ( virtualbox.org/manual/ch09.html#pcipassthrough ) dan saya sendiri tidak beruntung bekerja dengan host Windows.
Baris Demiray
@BarisDemiray Jika saya ingat dengan benar, perintah itu tidak melaporkan kesalahan ketika saya mencobanya, tapi saya rasa saya tidak menguji apakah VM dapat menggunakan perangkat. Tapi itu sudah lama, maaf.
Ben N
Hai @BenN, terima kasih banyak telah meluangkan waktu untuk membalas. Itulah yang terjadi ketika saya mencoba, tidak ada kesalahan pada baris perintah namun tidak ada kartu grafis di VM.
Baris Demiray