3D-Unterstützung

Die Unterstützung von 3D innerhalb Virtueller Maschinen hängt von einer Reihe unterschiedlicher Parameter ab. Dazu gehören u.a.:

  • Die Hardware des Clients
  • Der Virtualisierer
  • Das Hostsystem
  • Das Gastsystem

Je nach Konfiguration der beteiligten Komponenten sind unterschiedliche Ergebnisse zu erwarten. Teilweise ist die 3D-Funktionalität komplett deaktiviert, läuft mit deutlich verminderter Leistung oder verursacht unterschiedliche Grafikfehler (fehlende Inhalte, schwarze Fenster, …). Auf dieser Seite wird versucht einen Überblick über die bisher gewonnenen Erkenntnisse in Bezug auf 3D in bwLehrpool, sowie Empfehlungen zur Optimierung dieser geben.

Client-Hardware

bwLehrpool abstrahiert durch Virtualisierung von der zugrundeliegenden Hardware. Dies hat den Vorteil, dass sich VMs in der Regel auf allen Poolrechner gleich verhalten. Je nach Prozessor, RAM oder Festplatten-Ausstattung werden die VMs natürlich trotzdem unterschiedlich performant ausgeführt. Im Fall von 3D-Anwendungen spielt zusätzlich die Grafikkarte eine wichtige Rolle.

Im MiniLinux von bwLehrpool sind drei Treiber enthalten:

  • nouveau
  • nvidia
  • ati
  • intel ???

Verwendeter Treiber

Wenn bwLehrpool startet, werden in der Regel generische Grafiktreiber geladen. Diese funktionieren auf der meisten Hardware sehr gut, unterstützen aber im Fall von z.B. Nvidia (nouveau) keine volle 3D-Beschleunigung.

Manche Karten sind nicht mit dem proprietären Treiber kompatibel oder verursachen andere Grafikprobleme. Daher werden nur bekannte und getestete Grafikkarten auf Basis einer Whitelist für den proprietären Treiber freigeschalten. Sollten Sie daher feststellen, dass 3D-Anwendungen (z.B. auch Aero Transparenzeffekte) innerhalb der VM nicht funktionieren, ist die Karte höchstwahrscheinlich nicht freigegeben. Um sicher zu gehen können Sie auf dem betreffenden Client den dmesg-Output oder Xorg-Log auf die Stichworte 'nvidia' bzw. 'nouveau' prüfen.

Sie können das Verhalten temporär überschreiben, um zu testen, ob die Karte mit den nvidia-Treibern fehlerfrei läuft. Dazu bis zum bwLehrpool PXE-Menü booten, auf dem entsprechenden bwLehrpool-Eintrag TAB drücken und der Kernel Command Line den Parameter 'nvidia' hinzufügen. Damit werden für diese Sitzung die Treiber erzwungen. Im dmesg oder Xorg-Log sollte jetzt auch irgendwo auftauchen, dass 'nvidia' und nicht 'nouveau' geladen wurde. Anschließend eine VM mit 3D-Beschleunigung (unter Windows z.B. mit dxdiag prüfen) booten und irgend einen 3D-Test, CAD oder ähnliches starten.

Wenn das System stabil läuft und keine Grafikfehler während der Benutzung auftreten, nehmen wir diese gerne ebenfalls auf unsere Whitelist auf. Dazu benötigen wir lediglich den Namen sowie die PCI-ID der Grafikkarte

Freigeschaltene Grafikkarten

Derzeit verwenden folgende Grafikkarten den proprietären Nvidia-Treiber:

PCI-ID Bezeichnung
10de:087d Nvidia ION
10de:0ff3 Nvidia Quadro K420
10de:0df8 Nvidia Quadro 600
10de:13bb Nvidia Quadro K620
10de:0fc2 Nvidia GeForce GT 630
10de:11c0 Nvidia GeForce GTX 660
10de:1382 Nvidia GeForce GTX 745
10de:1381 Nvidia GeForce GTX 750
10de:0193 Nvidia GeForce 8800 GTS
10de:0dd8 Nvidia Quadro 2000
10de:0ffe Nvidia Quadro K2000
10de:13ba Nvidia Quadro K2200
10de:06dd Nvidia Quadro 4000
10de:11fa Nvidia Quadro K4000

Konfiguration des Gastsystems (VM)

Innerhalb der Virtuellen Maschine kann die Grafik ebenfalls zu einem gewissen Grad beeinflusst werden. Die VMs sehen nur die von VMware bereitgestellte virtuelle Grafikkarte 'VMware SVGA 3D', nicht jedoch die tatsächlich verbaute (z.B. nVidia Quadro K2000). Die zugehörigen Treiber kommen mit den VMware-Tools. Diese sollten daher auf dem aktuellen Stand gehalten werden. Es ist daher auch weder sinnvoll noch hilfreich zusätzlich weitere Grafiktreiber (nVidia / AMD / Intel) innerhalb der VM zu installieren.

Weiterhin kann teilweise beeinflusst werden, welche OpenGL Version in der VM zur Verwendung kommt. Falls die VM alle Voraussetzungen für OpenGL 3.3 erfüllt, damit jedoch Probleme innerhalb bestimmter Software auftritt, kann Windows über eine Systemumgebungsvariable auf OpenGL 2.1 gezwungen werden. Legen Sie dazu die Systemumgebungsvariable 'SVGA_VGPU10' an und setzen den Wert auf '0'. 1)

Nicht zuletzt spielt die verwendete Endanwendersoftware eine große Rolle. Hier muss genau geprüft werden, welche Parameter konfiguriert werden können (Rendering Modus / Hardwarebeschleunigung: OpenGL, DirectX, Software). Manche Applikationen funktionieren besser/schlechter unter OpenGL 2.1 oder einer höheren Hardwareversion (virtualHW.version).

Es empfielt sich alle möglichen Kombinationen in Verbindung mit der Software zu evaluieren, um das bestmögliche Ergebnis zu erzielen. Für solche Aufgaben lassen sich beispielsweise sehr gut studentische Hilfskräfte nutzen, die die unterschiedlichen Möglichkeiten testen und zurückmelden.

Bitte beachten Sie, dass alle Änderungern in einer VM in bwLehrpool nichtpersistent sind. Das heißt sobald Sie die VM herunterfahren, werden alle Änderungen (neue VMware-Tools, Systemumgebungsvariable etc.) wieder zurückgesetzt. Sie müssen die VM daher immer lokal bearbeiten und mittels bwLehrpool-Suite neu auf Ihren Satellitenserver hochladen.

Konfiguration der VM

Die Konfiguration der VM selbst erfolgt über die zugehörige Beschreibungsdatei ('.vmx'). Dort wird beispielsweise definiert, welcher Netzwerk- oder Festplattencontroller verwendet wird, ob 3D-Beschleunigung aktiviert werden soll und welche Hardware-Version die VM besitzt.

Wenn mit Hilfe der bwLehrpool-Suite eine VM auf den Satellitenserver hochgeladen wird, so wird auch immer die zugehörige 'vmx' in Teilen gespeichert. In dieser wird beispielsweise festgelegt, ob 3D-Beschleunigung aktiviert wird oder welche Hardwareversion verwendet wird. Nähere Informationen hierzu finden Sie unter Verwaltung Virtueller Maschinen und Veranstaltungen.

Die dort gesetzten Werte können jedoch je nach Clienthardware von bwLehrpool zur Laufzeit verändert werden. So wird der Wert für die 3D-Beschleunigung ('mks.enable3d') bei nicht bestimmten Grafikkarten deaktiviert.

Als bwLehrpool Administrator können Sie sich die zum Start einer VM verwendeten vmx auf einem Client ansehen. Verbinden Sie sich dazu beispielsweise per SSH und root-Account mit einem gebooteten Client. Unter '/tmp/virt/vmware/' finden Sie Unterordner für jede gestartete VM. Darin finden Sie neben dem 'vmware.log' auch die 'run-vmware.conf'. Diese entspricht der 'vmx'.

  • virtualHW.version = „10“ / „12“
  • mks.enable3d = „TRUE“
  • hardwarecap auf v10 (wann?)

Benchmarks

  • SpecViewPerf
  • HP Z440
  • Nur bedingte Aussagekraft

Beispiele

Probleme mit bestimmten Applikationen sind häufig nicht auf den ersten Blick ersichtlich. Bei dem Programm 'Catia' ist beispielsweise aufgefallen, dass u.U. bestimmte Rahmenlinien fehlen.

Catia:

Korrekte Darstellung (rote und blaue Rahmenlinie vorhanden) Fehlerhafte Darstellung (ohne Rahmenlinien)

Nach diversen Tests konnte festgestellt werden, dass nur mit einer bestimmten Konfiguration der VM, die gewünschten Linien sichtbar wurden:

HW-Version 10 + 3D HW-Version 10 + kein 3D HW-Version 12 + 3D HW-Version 12 + 3D + openGL2 (SVGA_VGPU10=0) HW-Version 12 + kein 3D
x :) :) x :)

Creo:

Korrekte Darstellung Fehlerhafte Darstellung

Ausblick

Zur Zeit wird von bwLehrpool ausschließlich VMware als Virtualisierer unterstützt. Die alternative Nutzung von VirtualBox wird parallel evaluiert. Das sich daraus jedoch Verbesserungen für 3D ergeben ist jedoch eher unwahrscheinlich.

Eine mögliche Lösung wäre dagegen das direkte Durchreichen der Grafikkarte an die VM (GPU Passthrough). Dies ist mit QEMU, jedoch nicht mit VMware oder VirtualBox möglich. Es wäre denkbar, dass in Zukunft QEMU in bwLehrpool zur Verfügung gestellt wird.

Vorteile Nachteile
  • VM hat direkten Zugriff auf Grafikkarte
  • Praktisch native Performance
  • CUDA Unterstützung
  • Unterstütung des kompletten OpenGL Befehlssatzes
  • Verlust der Hardwareunabhängigkeit
  • Korrekter Treiber muss in der VM installiert werden
  • Erstellung und Bearbeitung der VM mit qemu nur unter Linux und ohne ohne grafische Verwaltung möglich
  • Bisherige VMs vermutlich nicht kompatibel (zumindest Konvertierung nötig)

OpenGL 2.1 / 3.3

Ab Workstation 12 wird OpenGL 3.3 in Gastsystemen unterstützt. Allerdings nur das Core Profile, nicht jedoch das Compatibility Profile2).

Voraussetzung dafür ist:

  • Die VM ist für Hardwareversion 12 konfiguriert
  • Das Hostsystem (im Fall von bwLehrpool das ausgelieferte MiniLinux), die GPU sowie die verwendeten Grafiktreiber unterstützen OpenGL 4.0
  • Linuxsysteme müssen das vmwgfx-Kernelmodul Version 2.9.0 oder höher besitzen
  • Eine aktuelle Version von Mesa mit dem 'svga gallium'-Treiber

Ansonsten wird im Gastsystem OpenGL 2.1 verwendet.

Soll innerhalb der VM anstatt OpenGL 3.3 explizit die ältere Version verwendet werden, so kann dies im Fall von Windows über die Systemumgebungsvariable 'SVGA_VGPU10=0' erreicht werden. Anschließend verwendet die VM OpenGL 2.1. Dies kann nötig sein, falls bestimmte Applikationen falsche Grafikdarstellungen anzeigen, die z.B. auf die inkorrekte Nutzung des OpenGL 3.x Core Profiles zurückzuführen sind.

https://www.mesa3d.org/vmware-guest.html
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2139606

GL_Extensions

To use the GL_EXT_texture_compression_s3tc and GL_S3_s3tc Open Graphics Library (OpenGL) extensions in a Windows XP or Windows 7 or later guest operating system, you must install Microsoft DirectX End-User Runtime in the guest operating system. OpenGL is an API that is used to Define 2D and 3D computer graphics. You can download Microsoft DirectX End-User Runtime from the Microsoft Download Center Web site.3)

CREO Parametrics

Wenn Sie in CREO schwarze Flächen oder falsche Darstellungen feststellen, legen Sie unter C:\Users\Public\Documents die Datei „config.pro“ an. Kopieren Sie folgende Werte in die Datei:

enable_opengl_fbo no
enable_opengl_shader yes
use_software_opengl no
graphics opengl
!graphics win32_gdi
1)
Einen grafischen Editor zum direkten Bearbeiten der Umgebungsvariablen bietet der Befehl rundll32 sysdm.cpl,EditEnvironmentVariables oder der Menüpunkt „Systemsteuerung – System“ oder die Tastenkombination Windows+Pause. Der Editor ist unter dem Register „Erweitert“ und dort unter „Umgebungsvariablen“ zu finden.
Drucken/exportieren
QR-Code
QR-Code allgemein:3d_support (erstellt für aktuelle Seite)