Metalveteran
Lt. Commander
- Registriert
- Okt. 2020
- Beiträge
- 1.175
Hallo.
Mein System:
7800X3D
MSI Tomahawk B650
MSI GTX 1080
Hauptmonitor an 1080, Zweitmonitor an iGPU
Ausgangslage:
Mein neuer Nachbar beschwert sich sei geraumer Zeit über eine "erhöhte Lautstärke" von meiner Seite aus. Und zwar von meiner GPU, halt das regelmäßige aufheulen 2,3x die Minute bei Vollauslastung. (Eine GTX 1080 schwitzt in BG3 in 1440p halt ziemlich
) Das die Dinger laut sein können, ja klar, aber das Nachbarn deswegen aus dem Bett fallen hab ich auch noch nie gehört. Aber nevermind, ich zocke halt schonmal bis weit nach 22 Uhr, also muss ich was tun.
Lüftersteuerung kommt einem da natürlich als erstes in den Sinn. Bringt aber nix, wenn ich das in den nvidia-settings auf 100% setze dreht der Lüfter zwar höher, aber noch lange nicht so hoch wie bei Vollauslastung. Und ja, "Coolbits 4" ist auch gesetzt.
ChatGPT sagte, dass es wohl am BIOS liegt, dessen Lüftersteuerung selber festgelegte Einstellungen überschreibt und bietet grob 3 Lösungsvorschläge:
1.) anderes BIOS aufspielen.
Fällt aus, auch wenn der Vorgang vermutlich genauso leicht wie MB BIOS flashen sein wird (habs noch nie gemacht), an ein Custom BIOS trau ich mich nicht ran
2.) GPU Lüfter ans MB an einen PWM Lüfteranschluss anschliessen.
Ich hab zwar noch nicht reingeschaut, gehe aber jetzt erstmal davon aus, dass das mindestens ohne Verlängerung nicht so leicht umsetzbar sein wird.
3.) MSI Afterburner unter einer Windows VM mit GPU Passthrough nutzen, da MSI Afterburner die einzige Software sei, die BIOS Einstellungen bzgl. Lüfter überschreiben kann
Klingt kompliziert, ist aber von den 3 Möglichkeiten die einzige, die "problemlos" umsetzbar sein sollte in dem Sinne, dass ich alle Voraussetzungen erfülle.
ABER: Funktioniert das überhaupt, oder ist das wieder nur ausgemachter KI Blödsinn?
Naja, wie auch immer, am GPU Passthrough scheitert es gerade. Ich habe 2 Guides gefunden:
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF
https://dividebyzer0.gitlab.io/GPUpassthrough.html
Beide sind Pi mal Daumen gleich, bis auf (vermutlich vernachlässigbare) Unterschiede.
Meine Schritte:
-linux-vfio Kernel installiert, damit ich mir nicht den Main Kernel versaue und leichter aus "nix geht mehr"-Situationen rauskomme. Diesen dann auch gleich gebootet
-ACS Kernel Patch auf neuen Kernel angewendet, allerdings da schonmal nicht mit dem erwartbaren Ergebnis, alle IOMMU Gruppen aufzusplitten. Auch nach dem Patch (und natürlich reboot in den Kernel) sind die beiden NV Geräte (GPU und HDMI) in einer Gruppe. Denke, ist aber eh vernachlässigbar, muss ich HDMI halt auch weiterleiten. Ist hier eh ein "toter" Anschluss (hängt nix dran)
-GRUB angepasst und config neu erstellt, neue initramfs erstellt, reboot
So, und da häng ich jetzt. Wenn ich in den entsprechend angepassten Kernel boote sehe ich auch, wie auf die iGPU umgestellt wird, aber X startet einfach nicht. Ich kann mit STRG-ALT-F2 auf ein anderes Terminal umschalten, das Gerät friert also nicht ein. "lspci -nnk" zeigt bei der GPU dann auch "Kernel driver in use: vfio-pci". Es scheint also grundsätzlich zu klappen.
Aber wenn ich "startx" eingebe findet er keinen Screen. Wie schon geschrieben, an der iGPU hängt mein 2. Monitor, es ist also definitiv ein Screen vorhanden. Ist allerdings ein uralt (20+ Jahre) Medion Monitor mit 1680 x 1050 Auflösung. Ist der vllt zu alt, so dass der nicht einfch so erkannt wird? Aber in einer "normalen" Umgebung läuft der Einwandfrei und wird auch als "Messelektronik Dresden"-Gerät erkannt?!
Ich habe mir dann auch n Script + Dienst geschrieben, so dass immer, wenn ich in einen VFIO Kernel boote, eine bestimmte xorg.conf Datei benutzt wird mit folgendem Inhalt:
Dort fehlt vermutlich sowieso ein Monitor Eintrag, habe X bisher halt immer mit "startx -- :0" bzw. ":1" gestartet, aber das scheint nicht zu reichen.
Script + Dienst
lspci sieht an der Stelle so aus:
also ist BUS ID 11:0:0 doch auch richtig?!
Ich weiss nicht weiter. Im normalem Umfeld wird die iGPU und der Monitor erkannt, das ganz typische 2-Monitor-Setup läuft also sonst problemlos. Warum sträubt sich X plötzlich so beharrlich, wenn die dGPU nicht zur Verfügung steht? Ist mein Ansatz überhaupt richtig? Eigentlich will ich die dGPU lieber "On the Fly", also nur beim starten der VM, übergeben und nicht direkt zum boot (wo es aber wohl laut dem einen Guide ein schript geben soll)...... ich weiss grad nicht weiter und bin über jede Hilfe und jeden Gedankenansatz dankbar
Mein System:
7800X3D
MSI Tomahawk B650
MSI GTX 1080
Hauptmonitor an 1080, Zweitmonitor an iGPU
Ausgangslage:
Mein neuer Nachbar beschwert sich sei geraumer Zeit über eine "erhöhte Lautstärke" von meiner Seite aus. Und zwar von meiner GPU, halt das regelmäßige aufheulen 2,3x die Minute bei Vollauslastung. (Eine GTX 1080 schwitzt in BG3 in 1440p halt ziemlich
Lüftersteuerung kommt einem da natürlich als erstes in den Sinn. Bringt aber nix, wenn ich das in den nvidia-settings auf 100% setze dreht der Lüfter zwar höher, aber noch lange nicht so hoch wie bei Vollauslastung. Und ja, "Coolbits 4" ist auch gesetzt.
ChatGPT sagte, dass es wohl am BIOS liegt, dessen Lüftersteuerung selber festgelegte Einstellungen überschreibt und bietet grob 3 Lösungsvorschläge:
1.) anderes BIOS aufspielen.
Fällt aus, auch wenn der Vorgang vermutlich genauso leicht wie MB BIOS flashen sein wird (habs noch nie gemacht), an ein Custom BIOS trau ich mich nicht ran
2.) GPU Lüfter ans MB an einen PWM Lüfteranschluss anschliessen.
Ich hab zwar noch nicht reingeschaut, gehe aber jetzt erstmal davon aus, dass das mindestens ohne Verlängerung nicht so leicht umsetzbar sein wird.
3.) MSI Afterburner unter einer Windows VM mit GPU Passthrough nutzen, da MSI Afterburner die einzige Software sei, die BIOS Einstellungen bzgl. Lüfter überschreiben kann
Klingt kompliziert, ist aber von den 3 Möglichkeiten die einzige, die "problemlos" umsetzbar sein sollte in dem Sinne, dass ich alle Voraussetzungen erfülle.
ABER: Funktioniert das überhaupt, oder ist das wieder nur ausgemachter KI Blödsinn?
Naja, wie auch immer, am GPU Passthrough scheitert es gerade. Ich habe 2 Guides gefunden:
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF
https://dividebyzer0.gitlab.io/GPUpassthrough.html
Beide sind Pi mal Daumen gleich, bis auf (vermutlich vernachlässigbare) Unterschiede.
Meine Schritte:
-linux-vfio Kernel installiert, damit ich mir nicht den Main Kernel versaue und leichter aus "nix geht mehr"-Situationen rauskomme. Diesen dann auch gleich gebootet
-ACS Kernel Patch auf neuen Kernel angewendet, allerdings da schonmal nicht mit dem erwartbaren Ergebnis, alle IOMMU Gruppen aufzusplitten. Auch nach dem Patch (und natürlich reboot in den Kernel) sind die beiden NV Geräte (GPU und HDMI) in einer Gruppe. Denke, ist aber eh vernachlässigbar, muss ich HDMI halt auch weiterleiten. Ist hier eh ein "toter" Anschluss (hängt nix dran)
-GRUB angepasst und config neu erstellt, neue initramfs erstellt, reboot
Code:
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT='quiet splash loglevel=3 amd_iommu=on iommu=pt rd.driver.pre=vfio-pci vfio-pci.ids=10de:1b80,10de:10f0 pci_acs_override=downstream,multifunction'
Code:
dracut.conf
force_drivers+=" vfio_pci vfio vfio_iommu_type1 "
So, und da häng ich jetzt. Wenn ich in den entsprechend angepassten Kernel boote sehe ich auch, wie auf die iGPU umgestellt wird, aber X startet einfach nicht. Ich kann mit STRG-ALT-F2 auf ein anderes Terminal umschalten, das Gerät friert also nicht ein. "lspci -nnk" zeigt bei der GPU dann auch "Kernel driver in use: vfio-pci". Es scheint also grundsätzlich zu klappen.
Aber wenn ich "startx" eingebe findet er keinen Screen. Wie schon geschrieben, an der iGPU hängt mein 2. Monitor, es ist also definitiv ein Screen vorhanden. Ist allerdings ein uralt (20+ Jahre) Medion Monitor mit 1680 x 1050 Auflösung. Ist der vllt zu alt, so dass der nicht einfch so erkannt wird? Aber in einer "normalen" Umgebung läuft der Einwandfrei und wird auch als "Messelektronik Dresden"-Gerät erkannt?!
Ich habe mir dann auch n Script + Dienst geschrieben, so dass immer, wenn ich in einen VFIO Kernel boote, eine bestimmte xorg.conf Datei benutzt wird mit folgendem Inhalt:
Code:
Section "Device"
Identifier "AMD iGPU"
Driver "amdgpu"
BusID "PCI:11:0:0"
EndSection
Dort fehlt vermutlich sowieso ein Monitor Eintrag, habe X bisher halt immer mit "startx -- :0" bzw. ":1" gestartet, aber das scheint nicht zu reichen.
Script + Dienst
Code:
/usr/local/bin/xorg_vfio_switcher.sh
#!/bin/bash
KERNEL=$(uname -r)
if [[ "$KERNEL" == *vfio* ]]; then
echo "VFIO-Kernel erkannt – setze Xorg config für iGPU"
cp /etc/X11/xorg.conf.d/20-igpu.conf.vfio /etc/X11/xorg.conf.d/20-igpu.conf
else
echo "Standard-Kernel – entferne spezielle Xorg config"
rm -f /etc/X11/xorg.conf.d/20-igpu.conf
fi
Code:
/etc/systemd/system/xorg_vfio_switcher.service
[Unit]
Description=Switch Xorg config based on kernel
Before=display-manager.service
DefaultDependencies=no
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/xorg_vfio_switcher.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
lspci sieht an der Stelle so aus:
Code:
11:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Raphael (rev cb)
11:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller [Rembrandt/Strix]
11:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 19h PSP/CCP
11:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI
11:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI
11:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h/1ah HD Audio Controller
Ich weiss nicht weiter. Im normalem Umfeld wird die iGPU und der Monitor erkannt, das ganz typische 2-Monitor-Setup läuft also sonst problemlos. Warum sträubt sich X plötzlich so beharrlich, wenn die dGPU nicht zur Verfügung steht? Ist mein Ansatz überhaupt richtig? Eigentlich will ich die dGPU lieber "On the Fly", also nur beim starten der VM, übergeben und nicht direkt zum boot (wo es aber wohl laut dem einen Guide ein schript geben soll)...... ich weiss grad nicht weiter und bin über jede Hilfe und jeden Gedankenansatz dankbar