Sử dụng GPU NVidia từ VirtualBox?


29

Làm cách nào để khiến khách VirtualBox sử dụng đồ họa NVidia?

Thiết lập máy chủ:

  • Windows 7 x64

  • NVidia Optimus

  • Trong Bảng điều khiển NVIDIA , tôi đã chọn rõ ràng bộ xử lý NVIDIA hiệu suất cao cho:

     C:\Program Files\oracle\VirtualBox\VirtualBox.exe
     C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
    
  • Khi VirtualBox đang chạy, thì phần mềm NVidia không liệt kê nó là ứng dụng sử dụng GPU NVidia. Do đó, tôi cho rằng VirtualBox thực sự không sử dụng GPU Nvidia.

Khách mời:

  • Windows 7 x64 (tức là giống như máy chủ)

  • Bổ sung khách đã cài đặt

  • Tăng tốc 3D được bật trong cài đặt VirtualBox: Hiển thị / Video / Kích hoạt tăng tốc 3D

  • Những gì Tê giác , một ứng dụng có khả năng OpenGL báo cáo là bộ điều hợp 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
    

    Đối với tôi, có vẻ như máy ảo sử dụng khả năng tăng tốc phần cứng 3D của máy chủ, nhưng không may là máy Intel.


2
Máy ảo không có quyền truy cập phần cứng trực tiếp - chúng có GPU ảo. . . câu hỏi liên quan: superuser.com/questions/395245/ từ
ernie

6
@ernie VirtualBox có thể cung cấp cho khách quyền truy cập trực tiếp vào API OpenGL của GPU của máy chủ. Theo như tôi có thể nói rằng hoạt động trên máy của tôi. Chỉ VirtualBox là sử dụng GPU Intel thay vì GPU NVidia. Trích dẫn từ sổ tay VirtualBox : "Với tính năng này, nếu một ứng dụng bên trong máy ảo của bạn sử dụng các tính năng 3D thông qua giao diện lập trình OpenGL hoặc Direct3D 8/9, thay vì mô phỏng chúng trong phần mềm (sẽ chậm), VirtualBox sẽ cố gắng sử dụng phần cứng 3D của máy chủ lưu trữ của bạn. "
feklee

@feklee Tiêu đề của câu hỏi gây hiểu nhầm: Bạn muốn sử dụng GPU nVidia cho VBox. 'Từ' cũng có thể nhưng có nghĩa là khác nhau: Phần cứng-Truyền qua, tức là. truy cập GPU của máy chủ trực tiếp từ bên trong VBox.
larkey


Tìm về "video thông qua hộp ảo".
điện tử

Câu trả lời:


20

Tôi nhận ra một vài năm đã trôi qua nhưng muốn trả lời vì bài đăng này xuất hiện khá cao khi bạn google cho "virtualbox 3d multi GPU". Trong thời gian đã trôi qua, mọi thứ trở nên đơn giản và tốt đẹp hơn rất nhiều.

Những người vấp phải chủ đề này có thể sẽ hạ cánh ở đây vì họ có máy tính xách tay hoặc PC có hai GPU, điều này khá phổ biến hiện nay - đặc biệt là trên máy tính xách tay chơi game. GPU Intel trên bo mạch được sử dụng để kết xuất các cửa sổ và các ứng dụng thông thường, nhưng các ứng dụng sử dụng chức năng GPU 3D nên thực hiện điều đó thông qua GPU Nvidia hiệu suất cao hơn.

Hôm nay, tôi đang xây dựng một máy ảo Ubuntu trên máy tính xách tay của mình để thực hiện một số phát triển đa nền tảng và mọi thứ đều ổn trừ máy khách VM rất chậm và không có lời giải thích nào cho nó vì CPU, bộ nhớ, đĩa đều cho thấy mức độ sử dụng thấp.

Không mất nhiều thời gian để nhận ra đó là hiệu suất video gây ra sự cố. Khởi chạy các ứng dụng, tối đa hóa / thu nhỏ các cửa sổ - bất cứ điều gì chúng tôi được cấp vào năm 2019 nhưng cần tăng tốc 3D để hoạt động ở bất kỳ tốc độ hợp lý nào - là sử dụng GPU 0.

Thật dễ dàng để xác định điều này bởi vì Windows 10 hiện có khả năng xem việc sử dụng GPU bằng cách sử dụng "trình quản lý tác vụ", sau đó là tab "hiệu suất". Và tôi có thể thấy khi tôi di chuyển các cửa sổ, tối đa hóa, tối thiểu hóa, điều đó đang được thực hiện thông qua GPU trên máy chủ. GPU trên máy chủ lưu trữ là GPU Intel HD tích hợp và tôi muốn sử dụng NVidia GTX-1050ti, đó là GPU1.

Sau khi tìm kiếm xung quanh, tôi không thực sự tìm thấy bất cứ nơi nào bạn có thể chỉ định sử dụng GPU nào. Nhưng chủ đề này và một số thứ khác đã nhắc nhở tôi rằng trên các loại thiết lập này, bạn phải vào bảng điều khiển NVidia, sau đó "quản lý cài đặt 3d", sau đó là tab "Cài đặt chương trình".

Bạn sẽ không thể tìm thấy "Virtualbox" trong danh sách. Nhưng bạn có thể nhấn nút "Thêm" và thêm virtualbox.exe. Bạn có thể phải đi sâu vào ổ đĩa / đường dẫn nơi cài đặt hộp ảo của bạn. Khi bạn đã thêm nó, trong các cài đặt bên dưới, hãy đảm bảo rằng mục 2. "Chọn bộ xử lý đồ họa ưa thích cho chương trình này" được đặt thành GPU mà bạn muốn sử dụng, trong trường hợp của tôi là "Bộ xử lý NVIDIA hiệu suất cao" .

Đừng đặt nó thành tự động, và chắc chắn không đặt nó thành tích hợp. Tất nhiên, bạn cần cài đặt VM được đặt với hộp tăng tốc 3D và bạn cần bổ sung khách được cài đặt trên máy chủ. Nhưng một khi bạn đã thiết lập cài đặt 3d video máy chủ như được mô tả ở trên, hãy tắt máy khách VM, thoát khỏi hộp ảo và sau đó khởi chạy lại hộp ảo và VM.

Nếu bạn sử dụng trình quản lý tác vụ | biểu diễn và xem quy trình "trình quản lý hộp ảo" và xem GPU nào sẽ được sử dụng khi bạn điều hướng giao diện người dùng của máy khách VM, bạn sẽ thấy nó sử dụng GPU tốt hơn ngay bây giờ. Xem hình ảnh dán bên dưới.

Tất cả những gì đã nói, đừng mong đợi có thể chạy các trò chơi trong một máy khách VM. Tăng tốc 3D thông qua vẫn không quá xa. Nhưng bạn có thể mong đợi có một hệ điều hành và giao diện người dùng hiện đại trong khách của mình và có trải nghiệm chấp nhận được. Một người sẽ có thể chơi các trò chơi cũ hơn trong máy khách VM, giống như mọi thứ dựa trên directX9. Thật không may, vì khả năng ảo hóa GPU eveolves, công nghệ chơi game 3d phát triển nhanh hơn.

Ảnh chụp màn hình


2
Hôm nay tôi đã nghiên cứu một chút về khả năng tăng tốc 3D của VirtualBox và VMWare, và kể từ tháng 1 năm 2019, nếu việc tăng tốc GPU trong VM khách là quan trọng đối với bạn thì chọn VMWare là lựa chọn tốt nhất của bạn - đặc biệt nếu hệ điều hành khách của bạn là windows. VirtualBox hỗ trợ khả năng tăng tốc GPU kém phát triển hơn một chút, vì bạn chỉ có thể cung cấp cho VM khách tối đa 128 MB RAM video và trong VMWare cho phép phân bổ tối đa 2GB vào bộ nhớ video. VMWare hỗ trợ DirectX 10 và Virtualbox hỗ trợ DirectX9. Như tôi đã nói trong bài, directx 9 khá cũ.
Thomas Carlisle

1
"" Chọn bộ xử lý đồ họa ưa thích cho chương trình này "được đặt thành GPU mà bạn muốn nó sử dụng" Tôi không thấy tùy chọn trên. Tôi thấy Ambinetn, Lọc Ansiotropic ... vv nhưng không có gì trên "chọn bộ xử lý grapics ưa thích"
moondra

Bạn cần thông qua PCI mặc dù tôi chưa làm cho nó hoạt động trên Optimus, nhưng tôi nghĩ với một số hack thì có thể
kensai

Tôi đã quản lý để thực hiện thủ thuật tương tự để buộc kích hoạt thẻ nvidea cho hộp ảo nhưng không có 3 bộ điều khiển đồ họa có sẵn nào được cung cấp bởi Virtualbox đã đánh thức đúng với hệ điều hành khách neon KDE của tôi. Tôi đã gặp trục trặc giao diện người dùng lớn vì vậy sử dụng nvidea trong trường hợp của tôi không phải là một ý kiến. Nhờ đề xuất của @ThomasCarleway, tôi sẽ cố gắng chơi với VMware.
Arkemlar

17

Cung cấp cho khách truy cập GPU đầy đủ có lẽ là không thể. Nếu một máy ảo có quyền truy cập trực tiếp vào GPU của bạn trong khi máy chủ của bạn đang sử dụng nó, Bad Things TM sẽ xảy ra vì việc chia sẻ bộ nhớ giữa hai máy tính khác nhau hiệu quả không phải là một điều; con trỏ và địa chỉ và không có gì khác nhau giữa chúng. (Không có thẻ dành cho người tiêu dùng hỗ trợ phục vụ hai máy tính cùng một lúc.)

Tuy nhiên, có một số điều bạn có thể thử. Trước tiên, hãy đặt bộ xử lý đồ họa ưa thích của bạn thành bộ xử lý tốt trong Bảng điều khiển NVidia ( Cài đặt 3DQuản lý cài đặt 3DBộ xử lý đồ họa ưa thích ). Điều đó có thể khiến VirtualBox đi với thẻ NVidia cho OpenGL.

Nếu điều đó không có ích, hãy thử cài đặt Bổ sung khách ở Chế độ an toàn cho khách.

Cuối cùng, trên máy chủ Linux , bạn có thể thử chuyển GPU qua máy ảo, nhưng điều này sẽ chỉ hoạt động đối với thẻ PCI và tôi không thể tìm ra liệu máy của bạn có phải là PCI hay không và thậm chí, bạn có cơ hội tốt tách GPU ra khỏi máy chủ hoặc gây ra các vấn đề khác. Trước tiên hãy tìm địa chỉ PCI (bus, thiết bị và chức năng) cho thẻ tốt. Đặt chipset VM của bạn thành ICH9; Điều này đã không ngay lập tức phá vỡ bất cứ điều gì khi tôi thử nó. Sau đó, sử dụng tiện ích VBoxManage để đính kèm thẻ:

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

Thay thế cho Your VM Namephù hợp. BBlà số bus của GPU của bạn trên máy chủ; DDlà thiết bị; Flà chức năng. Sau đó @, nhập khe cắm PCI sẽ ở trên máy khách. Ví dụ:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

Nhìn chung, việc vượt qua GPU có nhiều khả năng có thể xảy ra trên máy chủ Linux. Xem Cách thiết lập máy chơi trò chơi với GPU thông qua .


2
Tiền đề cho việc gắn GPU vào VM là "Điều xấu" là không chính xác; có một cộng đồng lớn những người muốn làm điều đó để tạo ra các máy ảo chơi game trên các trình ảo hóa kim loại trần. Nếu một người muốn làm điều này trong Linux, nó sẽ yêu cầu đưa vào danh sách đen GPU PCIe để hạt nhân chỉ chuyển sang đồ họa chipset; điều này ngăn chặn các vấn đề "bộ nhớ chia sẻ". Ngăn chặn Windows nhặt thẻ có lẽ là vấn đề khó giải quyết nhất cho câu hỏi này và có thể sẽ yêu cầu vô hiệu hóa thiết bị hoặc gỡ cài đặt Optimus và trình điều khiển nvidia.
Tim G

@TimG Điểm hay, tôi đã làm rõ bài đăng của mình một chút. Cảm ơn!
Ben N

@BenN Câu trả lời tuyệt vời, nhưng tôi cần một điểm để được làm rõ. Bạn đã thử điều này trên máy chủ Windows chưa? Hướng dẫn nói rằng điều này chỉ khả dụng trên các máy chủ Linux ( virtualbox.org/manual/ch09.html#pcipassthrough ) và bản thân tôi đã không gặp may mắn khi nó hoạt động với máy chủ Windows.
Baris Demiray

@BarisDemiray Nếu tôi nhớ chính xác, lệnh đã không báo cáo bất kỳ lỗi nào khi tôi thử nó, nhưng tôi không nghĩ rằng tôi đã kiểm tra rằng VM có thể sử dụng thiết bị. Đó là một thời gian dài trước đây, mặc dù, xin lỗi.
Ben N

Xin chào @BenN, cảm ơn rất nhiều vì đã dành thời gian trả lời. Đó chính xác là những gì đã xảy ra khi tôi thử, không có lỗi trên dòng lệnh nhưng không có card đồ họa trong VM.
Baris Demiray
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.