Gaming Optimierungen
System
AMD Ryzen 9 7950X3D, AMD Radeon RX 7900 (Navi 31), 62 GB RAM, NixOS mit linuxPackages_zen.
Alle deklarativen Änderungen liegen in /etc/nixos/configuration.nix (Repo nix-config).
Kernel und Scheduler
boot.kernelPackages = pkgs.linuxPackages_zen;
services.scx = {
enable = true;
scheduler = "scx_lavd";
};
linux-zen bringt Gaming-orientierte Patches gegenüber dem Standard-Kernel mit. scx_lavd ist
ein sched_ext Scheduler, der die asymmetrische Cache-Topologie des 7950X3D (zwei CCDs, eines mit
V-Cache) berücksichtigt und Threads entsprechend platziert.
Arbeitsspeicher
zramSwap = {
enable = true;
algorithm = "zstd";
memoryPercent = 50;
};
boot.kernel.sysctl."vm.swappiness" = 120;
zram mit zstd-Kompression verhindert, dass bei RAM-Druck auf die langsamere Festplatte
ausgelagert wird. swappiness = 120 (Standard: 60) lässt den Kernel eher ins schnelle zram
auslagern statt Page-Cache zu verdrängen.
Storage
services.udev.extraRules = ''
ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/scheduler}="none"
'';
Ersetzt den Standard-Scheduler kyber durch none für alle NVMe-Geräte. NVMe-Queues regeln
Reihenfolge und Latenz selbst besser, als es ein Software-Scheduler könnte.
GPU
hardware.amdgpu.overdrive = {
enable = true;
ppfeaturemask = "0xffffffff";
};
programs.corectrl.enable = true;
programs.gamemode = {
enable = true;
settings = {
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 1;
amd_performance_level = "high";
};
};
};
ppfeaturemask entsperrt die Overclocking-/Undervolt-Funktionen der amdgpu, die dann über
corectrl (GUI) genutzt werden können. GameMode setzt den Performance-Level automatisch auf
high, sobald eine Spielsession läuft (vorher: auto). gpu_device = 1 entspricht
/sys/class/drm/card1, der einzigen GPU in diesem System.
Gaming-Tools und Runtime
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
programs.gamescope = {
enable = true;
capSysNice = true;
};
Dazu mangohud in environment.systemPackages für Performance-Overlay/Monitoring, sowie
GE-Proton als Compatibility-Tool (GE-Proton11-3 in compatibilitytools.d, manuell über
ProtonPlus verwaltet statt über Nix).
Übersicht nach Impact
| Änderung | Bereich | Impact | Begründung |
|---|---|---|---|
scx_lavd Scheduler |
CPU | Hoch | Cache-Topologie-bewusstes Scheduling auf dem X3D, wirkt direkt auf Frame-Times |
linux-zen Kernel |
Kernel | Mittel | Gaming-orientierte Patches, niedrigere Latenz als Standard-Kernel |
GameMode GPU-Boost (amd_performance_level=high) |
GPU | Mittel | Weniger Stutter/Mikroruckler bei plötzlichen Lastspitzen, kaum Effekt auf Average-FPS |
| GE-Proton | Compatibility | Mittel | Bessere Spielekompatibilität, teils bessere Performance als Standard-Proton |
ppfeaturemask Overclocking-Unlock |
GPU | Mittel (Enabler) | Ermöglicht OC/Undervolt über corectrl, ohne eigene Kurven kein direkter Effekt |
| zram (zstd) | Memory | Mittel | Verhindert Swap-Stalls auf Platte bei RAM-Druck |
Gamescope (capSysNice) |
Display | Mittel | Compositor-Bypass, Wirkung abhängig davon ob pro Spiel genutzt |
| corectrl | GPU | Kein direkter Effekt | Reines Steuer-Tool, Wirkung hängt von manuell gesetzten Profilen ab |
NVMe I/O-Scheduler none |
Storage | Gering | Betrifft nur Ladezeiten/Asset-Streaming, nicht das Rendering |
| Swappiness 120 | Memory | Gering | Nur bei RAM-Druck relevant, bei 62 GB selten der Fall |
| MangoHud | Monitoring | Kein Performance-Effekt | Reines Anzeige-/Messwerkzeug |
| Steam RemotePlay/DedicatedServer Firewall | Netzwerk | Kein Performance-Effekt | Feature-Enabler ohne Performance-Wirkung |
No comments to display
No comments to display