Integrierte Intel GPU an LXC weitergeben
Auf dem Host System ausführen: apt install vainfo
In die Konfig des LXC Containers einfügen:
lxc.cgroup.devices.allow = c 226:128 rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
Im Betriebssystem des LXC Containers den zu verwendenden User zur Video Gruppe hinzufügen: usermod -aG video emby
Integrierte Intel GPU an KVM weitergeben
In der Datei /etc/default/grub
die Zeile GRUB_CMDLINE_LINUX_DEFAULT
um folgendes ergänzen: i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=on
Danach grub und initramfs updaten:
update-grub
update-initramfs -u
Nach einem Reboot kann mit dmesg | grep -e DMAR -e IOMMU
überprüft werden ob alles ok ist. Sollte nichts ausgegeben werden stimmt etwas nicht. Hier ein Beispiel wie es aussehen kann:
[ 0.000000] ACPI: DMAR 0x000000007A71B5D0 0000A8 (v01 INTEL NUC7i5BN 0000003F INTL 00000001)
[ 0.000000] DMAR: IOMMU enabled
[ 0.004000] DMAR: Host address width 39
[ 0.004000] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.004000] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.004000] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.004000] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.004000] DMAR: RMRR base: 0x0000007a65b000 end: 0x0000007a67afff
[ 0.004000] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fffffff
[ 0.004000] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.004000] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.004000] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.004000] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.839908] DMAR: No ATSR found
[ 0.839937] DMAR: dmar0: Using Queued invalidation
[ 0.840130] DMAR: dmar1: Using Queued invalidation
[ 0.840299] DMAR: Setting RMRR:
[ 0.840386] DMAR: Setting identity map for device 0000:00:02.0 [0x7b800000 - 0x7fffffff]
[ 0.840422] DMAR: Setting identity map for device 0000:00:14.0 [0x7a65b000 - 0x7a67afff]
[ 0.840429] DMAR: Prepare 0-16MiB unity mapping for LPC
[ 0.840455] DMAR: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
[ 0.840640] DMAR: Intel(R) Virtualization Technology for Directed I/O
Überprüfen ob vGPU von der CPU unterstützt wird mit ll /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/
Eine typische Ausgabe wäre:
drwxr-xr-x 3 root root 0 Jun 21 20:47 i915-GVTg_V5_2
drwxr-xr-x 3 root root 0 Jun 21 20:47 i915-GVTg_V5_4
drwxr-xr-x 3 root root 0 Jun 21 20:47 i915-GVTg_V5_8
Sollte hier nichts aufgelistet sein muss eventuell das Modul kvmgt
noch geladen werden. Manuell per modprobe kvmgt
. Damit das beim booten automatisch passiert in der /etc/modules
einfach kvmgt
mit eintragen.
Je nach Aperature Size (im Bios einstellen) können 1 bis 4 vGPU's erstellt werden.
Eine UUID generieren (uuidgen) und dann die vGPU erstellen:
echo "b3dfe34f-0fdf-4321-8d03-42c4267ab5e1" > "/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create"
Möchte man das dies bei einem Reboot automatisch passiert kann ein systemd Service angelegt werden. Folgende Datei erstellen /etc/systemd/system/gvtvgpu0.service
Mit dem Inhalt:
[Unit]
Description=Create Intel GVT-g vGPU0
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo 'b3dfe34f-0fdf-4321-8d03-42c4267ab5e1' > /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create"
ExecStop=/bin/sh -c "echo '1' > /sys/bus/pci/devices/0000:00:02.0/b3dfe34f-0fdf-4321-8d03-42c4267ab5e1/remove"
RemainAfterExit=yes
[Install]
WantedBy=graphical.target
Anschließend den Service noch aktivieren systemctl enable gvtvgpu0
Um die vGPU in einer KVM zu benutzen folgendes in die Konfig eintragen:
args: -device vfio-pci,sysfsdev=/sys/bus/pci/devices/0000:00:02.0/b3dfe34f-0fdf-4321-8d03-42c4267ab5e1,rombar=0
Windows 10 RDP Framerate auf 60 erhöhen
Auf dem zu steuernden Gerät folgendes in der Registry einstellen.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
Dort einen neuen DWORD(32-bit) Schlüssel erstellen mit dem Namen DWMFRAMEINTERVAL
und dem Wert 15
(Decimal). Danach rebooten.
Windows 10 RDP h264 Hardware Encoding nutzen
Anzumerken ist das dies nur im LAN benutzt werden sollte.
Weiterführende Infos: https://techcommunity.microsoft.com/t5/Enterprise-Mobility-Security/Remote-Desktop-Protocol-RDP-10-AVC-H-264-improvements-in-Windows/ba-p/249588
gpedit.msc
ausführen und zu folgendem Pfad navigieren:
Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Umgebung für Remotesitzung
Hier nun die folgenden beiden Schlüssel auf aktiv
setzen:
H.264/AVC 444-Grafikmodus für Remotedesktopverbindungen priorisieren
H.264/AVC-Hardwarecodierung für Remotedesktopverbindungen konfigurieren
Einstellungen für optimale Performance und Optik: