Lieblingsspiele auf dem C16 - Thomas persönliche Top10
Lieblingsspiele auf dem C16 - Thomas persönliche Top10
Vermeiden von Schreibrechteproblemen in php:8.2-fpm Docker Containern
Spracheingabe in jedem Programm unter Ubuntu 22.04
Ich verwende die extra Maustasten meiner Maus um zwischen den Arbeitsflächen meines Desktops zu wechseln
Beim automatischen Setup von Testdatenbanken im Rahmen eines GitLab-CI Pipeline Jobs müssen meist mehre SQL-Dumps importiert werden. Dazu wird üblicherweise mysql als Service gestartet und dann die Datenbank via CLI importiert. Aber eigentlich importieren die mariadb Docker container automatisch dateien im verzeichnis /docker-entrypoint-initdb.d/ . Aber da es in CI keine direkten Volume-Mounts gibt benötigt man einen Workaround.
Ich habe lange gedacht, ich bilde mir das nur ein. Aber jedes Mal, wenn ich z. B. im Firefox etwas speichern will, braucht es 2 Sekunden, bis der Dialog dazu aufgeht. Genauso beim Anschauen eines Bildes. Ich habe die Ursache gefunden: es hat mit dem Energiesparen der GPU zu tun.
Der Öffnen-Dialog von Snap-Apps wird nicht von der App selbst gezeichnet, sondern per xdg-desktop-portal von Nautilus – und Nautilus ist GTK4. GTK4 legt für jedes neue Fenster einen Vulkan-Renderer an, und der zählt beim Start alle installierten Grafiktreiber auf. Dabei greift er auf die dedizierte NVIDIA RTX A500 zu, obwohl der Bildschirm an der Intel-GPU hängt.
Im PRIME-Modus on-demand schläft die RTX A500 rund 21 Sekunden nach dem letzten Zugriff wieder ein, und sie aus dem Standby zu wecken kostet ~3 Sekunden. Weil das bei praktisch jedem Dialog erneut passiert, hängt es jedes Mal.
Das Ganze betrifft nicht nur den Dateidialog, sondern jede GTK4-App, die ein Fenster aufbaut – also auch den Bildbetrachter, die Vorschau und diverse GNOME-Anwendungen.
Zeit vom Start bis das Fenster sichtbar ist, jeweils mit schlafender und mit wacher GPU:
| Situation | Dauer | GPU danach |
|---|---|---|
| GPU schlafend, Standard-Renderer (Vulkan) | 2,81 s | geweckt |
| GPU wach, Standard-Renderer | 0,16 s | wach |
GPU schlafend, GSK_RENDERER=gl | 0,09 s | bleibt schlafend |
reine Aufweckzeit der GPU (nvidia-smi -L) | 2,97 s | geweckt |
Faktor 20 – und der einzige Unterschied ist, ob die dedizierte GPU überhaupt angefasst wird. Am Bildbetrachter Loupe sieht man dasselbe Muster, hier an den geöffneten Gerätedateien:
| Loupe | GPU geweckt | geöffnete GPU-Knoten |
|---|---|---|
| Standard (Vulkan) | ja, nach 1,72 s | renderD129, /dev/nvidia0, /dev/nvidiactl, /dev/nvidia-modeset |
GSK_RENDERER=gl | nein | nur renderD128 (Intel) |
Ein Treiber-Update hat übrigens kaum etwas gebracht: mit 595.84 statt 580.173.02 sank die Aufweckzeit nur von 3,56 s auf 2,97 s.
GTK4 auf den GL-Renderer festlegen. Der benutzt nur das Standard-Gerät, also die Intel-GPU, und lässt die NVIDIA in Ruhe. Das gilt sessionweit für alle GTK4-Apps, nicht nur für den Dateimanager.
1. Datei ~/.config/environment.d/90-gsk-renderer.conf anlegen:
mkdir -p ~/.config/environment.d
cat > ~/.config/environment.d/90-gsk-renderer.conf <<'EOF'
GSK_RENDERER=gl
EOF
Das wirkt ab dem nächsten Login.
2. Für die laufende Sitzung zusätzlich:
systemctl --user set-environment GSK_RENDERER=gl
dbus-update-activation-environment --systemd GSK_RENDERER=gl
Achtung, hier bin ich reingefallen: dbus-update-activation-environment --systemd GSK_RENDERER ohne =gl liest den Wert aus der aufrufenden Shell. Ist er dort nicht gesetzt, passiert schlicht nichts – und man wundert sich, warum der Fix nicht greift. Immer mit explizitem Wert aufrufen.
3. Laufende Instanzen beenden, damit sie neu mit der Variable starten:
pkill -x nautilus
Rückgängig: die Datei löschen, abmelden und neu anmelden.
Wichtig: In GTK 4.22 heißt der Renderer gl. Der alte Name ngl wird ignoriert – GTK gibt dann nur eine Warnung aus und nimmt weiter Vulkan.
Nach dem nächsten Dialog oder Bild muss hier suspended stehen:
cat /sys/bus/pci/devices/0000:02:00.0/power/runtime_status
Und in der Liste der geöffneten Dateien der App darf kein /dev/nvidia* und kein renderD129 auftauchen:
ls -l /proc/$(pgrep -x nautilus)/fd | grep -E 'nvidia|renderD'
Bei mir bleibt dort nur renderD128 übrig, also die Intel-GPU. Ein Treffer auf nvidia-application-profiles ist harmlos – das ist nur eine Textdatei, die die NVIDIA-GL-Bibliothek liest, kein Gerätezugriff.
Schnelltest ohne jede Änderung, zum Ausprobieren vorab:
GSK_RENDERER=gl firefox
Am Energiesparen ändert sich nichts: power/control bleibt auf auto, PRIME bleibt auf on-demand, die GPU schläft weiter. Der Fix nimmt ihr nur den Grund, dauernd aufzuwachen. Unterm Strich wird sie jetzt sogar seltener geweckt als vorher.
Nicht abgedeckt sind Anwendungen, die nicht GTK4 sind, aber selbst Vulkan enumerieren – Electron/Chromium-basiertes und Qt6. Wer das auch loswerden will, kann die dedizierte GPU mit prime-select intel komplett abschalten. Dann ist die ganze Problemklasse weg, aber eben auch CUDA und Offload, und Monitorausgänge, die an der NVIDIA hängen, funktionieren nicht mehr.
| Modell | Dell Precision 3480 |
|---|---|
| CPU | 13th Gen Intel Core i7-1360P |
| RAM | 30 GiB |
| iGPU | Intel Raptor Lake-P Iris Xe (renderD128, PCI 0000:00:02.0) |
| dGPU | NVIDIA RTX A500 Laptop GPU, GA107GLM (renderD129, PCI 0000:02:00.0) |
| NVIDIA-Treiber | 595.84 (nvidia-driver-595-open) |
| PRIME-Modus | on-demand |
| OS | Ubuntu 26.04 LTS |
| Kernel | 7.0.0-28-generic |
| Desktop | GNOME Shell 50.1, Wayland |
| Nautilus | 50.0 |
| GTK4 | 4.22.4 |
| Portal | xdg-desktop-portal 1.21.1, xdg-desktop-portal-gnome 50.0 |
Article release date: / Last update: