Dein Zähler sagt 160. Das Spiel zuckt trotzdem — ein Sekundenbruchteil, in dem das Bild stehen bleibt, dein Zielen irgendwo landet, wo du es nicht hingelegt hast, und dann ist wieder alles in Ordnung. Der Zähler hat sich nie bewegt, und deshalb hilft nichts, was du tust, um ihn zu erhöhen.
Diese Lücke ist das ganze Thema dieser Seite. Ein Ruckler ist ein Frame, das zu spät kam, und keine niedrige Bildrate. Ein Bildzähler mittelt über eine Sekunde, also verschwindet ein Frame, das 90 ms gebraucht hat, zwischen den 159 kurzen daneben. Die Zahl, die beschreibt, was du gespürt hast, ist die Frametime, und ein Ruckler ist ein Frame, das deutlich langsamer ist als seine Nachbarn.
Zuerst der ehrliche Satz. Zwei der zehn Ursachen unten entsprechen einem einzelnen Kästchen in w0a: der Scheduler-Wert in Ursache 8 und die Hintergrundaufnahme des Spiels in Ursache 9. Beide Kästchen setzen nur eine Einstellung dorthin, wo sie hingehört, und auf einer Maschine, an der niemand gedreht hat, findet das erste nichts zu ändern. Ob der Ruckler, den du spürst, einer davon war, kann dir nur eine Aufnahme vorher und nachher sagen.
Finde zuerst heraus, welches der drei Probleme du hast
Sie werden mit demselben Wort benannt und haben fast nichts gemeinsam.
- Hänger. Die Grundlinie ist in Ordnung, und von Zeit zu Zeit passiert etwas Langes. Darum geht es auf dieser Seite.
- Eine raue Grundlinie. Nichts ist dramatisch, aber das Spiel fühlt sich nie flüssig an. Das ist ein Problem der Perzentile: hohe durchschnittliche FPS, aber schlechte 1% Lows.
- Ein Einbruch. Die Bildrate fällt und bleibt für Sekunden oder Minuten unten. Völlig andere Ursachen: plötzliche FPS-Einbrüche in Spielen.
Halt etwas fest, bevor du etwas änderst
Raten ist der Grund, warum das Wochen dauert. Eine Aufnahme aus dem Spiel, das du tatsächlich spielst, an der Stelle, an der es tatsächlich ruckelt, macht aus „was könnte es sein“ ein „was ist bei diesem Ausschlag passiert“ — und sie ist das „Vorher“, an dem jede spätere Änderung gemessen wird. Das Benchmark-Ergebnis lesen erklärt, wie.
Die Ursachen, eine nach der anderen
1. Ein Treiber, der einen Prozessorkern hält
Solange ein Treiber in einem Interrupt oder einem verzögerten Prozeduraufruf steckt, läuft dieser Kern über jeder Thread-Priorität, die es gibt: Er zeichnet nichts und liest keine Eingabe, bis der Treiber loslässt. Diese Ursache ist leicht zu übersehen: Sie taucht in keinem Frametime-Diagramm und in keinem Task-Manager auf.
Woran du es erkennst: Miss es. Der Kernel-Abschnitt von den Latenztest lesen listet jeden Treiber auf, der einen Kern gehalten hat, sortiert nach der längsten Haltezeit und mit dem Dateinamen. Ab etwa 1 ms verdrängt ein Treiber Eingabe-Reports; ab 4 ms kann die Maschine keine stabile Frametime mehr halten, egal was du sonst änderst.
Was du tust: Aktualisier genau diesen einen Treiber beim Hardware-Hersteller — nicht das ganze System, die benannte Datei. Netzwerk-, Speicher- und Audiotreiber gehören zu den Treibern, die das tun können.
2. Shader, die kompiliert werden
Neuer Effekt, neues Gebiet, neue Waffe — und das Spiel muss einen Shader kompilieren, bevor es ihn zeichnen kann. Das Kompilieren läuft auf der CPU, während das Frame wartet.
Woran du es erkennst: Es ist in den ersten Minuten einer Sitzung oder einer Map am schlimmsten, es klingt beim Spielen ab, und es kommt nach einem Treiber- oder Spiel-Update zurück. Klingt dein Ruckler nicht ab, ist es nicht das hier — Ruckler durch Shader-Kompilierung ist die lange Fassung.
Was du tust: Spiel es durch, und benchmark nicht in diesem Zeitfenster; du würdest den Compiler messen.
3. Die Platte, von der das Spiel nachlädt
Ein Spiel, das Assets nachlädt, während du dich bewegst, ruckelt, wenn der Lesevorgang langsam ist, und das Frame, das auf diese Daten wartet, ist das verspätete.
Woran du es erkennst: Die Hänger fallen mit dem Betreten eines neuen Gebiets zusammen, und lange Frame-Intervalle liegen im selben Zeitfenster wie Plattenaktivität. Prüf das Naheliegende: Liegt das Spiel auf einer mechanischen Platte, ist das Laufwerk fast voll, liegt der Spieleordner in einem cloudsynchronisierten Ordner, der jeden Schreibvorgang hochlädt, liegt die Auslagerungsdatei auf einer drehenden Platte. Eine SSD für ein Spiel, das nachlädt, ist kein Tweak, sondern die Antwort.
4. Speicherdruck
Füllt sich der Arbeitsspeicher, lagert Windows Speicherseiten auf die Platte aus, und die Seiten, die zurückkommen, spürst du als Hänger. Der weniger offensichtliche Fall ist das Commit-Limit: Geht der gesamte Speicher zur Neige, den Windows vergeben kann, nimmt die Speicherverwaltung laufenden Programmen Seiten weg, und das Spiel spürt diese Kürzungen als Einfrieren unter einer Sekunde. Beides bessert sich in dem Moment, in dem du einen Browser mit vierzig Tabs schließt.
5. Etwas anderes läuft
Der Arbeitsprozess von Windows Update, eine Wartungsaufgabe, ein geplanter Virenscan, ein Videoexport, den du vergessen hast. Diese Arbeit hört nicht auf, wenn ein Spiel startet; sie stellt sich für denselben Kern an wie der Render-Thread und zeigt sich deshalb als Ausschläge in der Frametime und nicht als niedrigerer Durchschnitt. Es auszusitzen ist eine legitime Lösung.
Woran du es erkennst: Eine Benchmark-Aufzeichnung behält ihre längsten Frame-Intervalle zusammen mit den Datenträgerzugriffen und Hard Faults, die ins selbe Zeitfenster fielen. Waren das Wartungs- oder Virenschutzprozesse von Windows, zählt die Karte der langen Intervalle diese Intervalle und nennt die Prozesse. Das ist, was zusammenfiel, kein Beweis, dass diese Arbeit den Frame verspätet hat: Der Virenschutz liest alles, was irgendein Programm öffnet.
6. Hitze und Leistungsgrenzen
Erreicht ein Chip seine Temperatur- oder Leistungsobergrenze, wird der Takt immer wieder heruntergezogen und wieder hochgeschoben, und wellige Frametimes sind, wie sich das von innen anfühlt. Diese Entscheidung trifft die Firmware selbst, ohne Windows zu fragen. Es beginnt nach einer Weile und nicht sofort, und es hängt daran, wie warm der Raum ist.
7. Der Bildschirm
Ein Monitor, der unter der Bildwiederholrate läuft, die er unterstützt, legt einen Boden unter deine Frameausgabe, den die Hardware gar nicht verlangt. Prüf die tatsächliche Rate, statt sie anzunehmen; nach einer frischen Installation oder einem Kabeltausch steht sie auf überraschend vielen Maschinen falsch.
8. Ein Scheduler-Wert, den ein älteres Werkzeug hinterlassen hat
Win32PrioritySeparation entscheidet, wie lange ein Thread den Prozessor behält und wie viel mehr Zeit die Anwendung im Vordergrund bekommt. Werte mit langen oder festen Quanten oder mit einem Vordergrundanteil unter 3:1 ändern, wie der Prozessor zwischen dem Spiel und allem anderen aufgeteilt wird; was das mit der Frametime macht, wurde nicht gemessen. Die Karte Speicher- und Systemstandards auf der Seite Fix schreibt den Windows-Standard zurück.
9. Overlays und die Aufnahmeschicht
Overlays zeichnen innerhalb des Frames des Spiels, und eine Hintergrundaufnahme kodiert jedes Frame, damit sich die letzten Minuten speichern lassen. Schließ sie einzeln und teste, statt alle auf einmal.
10. Die Partie, nicht die Maschine
Ein Online-Spiel kann für alle auf dem Server gleichzeitig hängen. Läuft Einzelspieler-Inhalt auf derselben Maschine sauber und zeigt die Frametime-Aufzeichnung, dass das Spiel normal ausgibt, ist das eine wirklich nützliche Antwort: Es liegt nicht an deinem PC.
Die zwei Ursachen, für die w0a ein Kästchen hat
Ursache 8: „Vordergrundpriorität auf dem richtigen Wert halten (Win32PrioritySeparation)“ (Seite Optimierungen)
Ein DWORD-Wert: Win32PrioritySeparation unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl.
Microsofts Referenz dafür ist eine archivierte Seite, geschrieben für Windows 2000; sie beschreibt sechs Bits, die in drei Paaren gelesen werden, geschrieben als AABBCC:
| Paar | Entscheidet | Werte |
|---|---|---|
| AA (die zwei höchsten Bits) | Wie lange ein Thread jedes Mal laufen darf | 01 länger, 10 kürzer, 00 oder 11 der eigene Standard der Edition (kürzer auf einer Workstation-Edition) |
| BB (die zwei mittleren) | Ob diese Länge variiert | 01 variabel, 10 fest, 00 oder 11 der Standard der Edition (variabel auf einer Workstation-Edition) |
| CC (die zwei niedrigsten) | Wie viel mehr Zeit das Programm im Vordergrund bekommt | 00 gleich (und fest), 01 2:1, 10 oder 11 3:1. Wird nur verwendet, wenn das mittlere Paar variabel bedeutet. |
- Windows-Standard:
0x2(binär 000010). Auf einer Workstation-Edition heißt das kürzere, variable Quanten, wobei das Programm im Vordergrund dreimal so viel Zeit bekommt wie der Hintergrund. Dieselbe Referenz nennt0x26(100110: kürzer, variabel, 3:1) für die Wahl in den Leistungsoptionen, die Programme bevorzugt, und0x18(011000: länger, fest, gleich) für die, die Hintergrunddienste bevorzugt. - Was das Kästchen tut: Es liest den Wert zuerst. Ein Wert, der dem Vordergrund schon den Anteil von 3:1 gibt, ohne längere Quanten und ohne feste Quanten, bleibt genau so, wie er ist, und das Kästchen sagt das. Nur ein Wert, der eine dieser drei Bedingungen verfehlt, wird neu geschrieben, auf
0x26. Auf dem eigenen Standard von Windows schreibt das Kästchen nichts: Auf einer Client-Edition plant0x2bereits so, wie0x26es verlangt. - Wann es greift: nach einem Neustart. Der Kernel macht aus diesem Wert beim Start seine Scheduling-Tabelle; ihn in der Registry zu ändern, ändert also nichts am Scheduler, der schon läuft, und das Kästchen verlangt einen Neustart, wenn es schreibt.
- Weg zurück: Die Karte Speicher- und Systemstandards schreibt
2zurück und verlangt einen Neustart. Gleichzeitig stellt sie weitere Standardwerte für Speicher und Scheduler wieder her.
Ursache 9: „Xbox Game DVR deaktivieren“ (Seite Optimierungen)
| Wert | Das Kästchen schreibt | Windows-Standard (das stellt die Reparaturkarte wieder her) |
|---|---|---|
HKCU\System\GameConfigStore, GameDVR_Enabled | 0 | 1 |
HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR, AllowGameDVR | 0 | nicht vorhanden |
HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR, AppCaptureEnabled | 0 | 1 |
HKCU\Software\Microsoft\GameBar, ShowStartupPanel | 0 | nicht vorhanden |
HKCU\Software\Microsoft\GameBar, UseNexusForGameBarEnabled | 0, außer auf einem Ryzen X3D mit zwei CCDs | nicht vorhanden |
Alle sind DWORD. Auf einem X3D-Prozessor mit zwei CCDs lässt das Kästchen den letzten Wert in Ruhe: Die Aufnahmekette wird trotzdem abgeschaltet, aber der Teil der Game Bar, auf den der Treiber von AMD hört, läuft weiter. Das ist eine Vorsichtsmaßnahme, keine bewiesene Ursache, und die Meldung des Kästchens sagt, welchen Weg es genommen hat. Ryzen X3D, Game Bar und Core Parking erklärt, warum dieser Teil auf diesen Chips zählt.
- Wann es greift: w0a verlangt für dieses Kästchen keinen Neustart.
- Worauf du verzichtest: auf die Aufnahme der Game Bar. Öffnet sich Win+G nicht mehr oder willst du die Aufnahme zurück, schaltet die Karte Game Bar / Spielaufnahme Game Bar und Game DVR mit den Windows-Standardwerten wieder ein.
- Was der Ruckler-Scan sagt: Er vermerkt als Information, wenn
GameDVR_EnabledoderAppCaptureEnablednoch an ist; beide stehen auf einer sauberen Installation auf 1, das ist also der Standard, kein Fehler. Er liest auch einen dritten Wert,HistoricalCaptureEnabled(Hintergrundaufnahme), aber nur, um seine Formulierung zu wählen; das Kästchen schreibt diesen Wert nicht.
Prüf es selbst
Diese Befehle lesen nur:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl" /v Win32PrioritySeparation
reg query "HKCU\System\GameConfigStore" /v GameDVR_Enabled
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\GameDVR"
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\GameDVR" /v AllowGameDVR
reg query "HKCU\Software\Microsoft\GameBar"
So liest du die Antworten:
- Werte werden hexadezimal ausgegeben:
Win32PrioritySeparation REG_DWORD 0x26bedeutet0x26. 0x2ist der Windows-Standard und0x26die Wahl aus der Referenz, die Programme bevorzugt; auf einer Client-Edition planen beide gleich.0x18ist die Wahl, die Hintergrunddienste bevorzugt: längere, feste Quanten und kein zusätzlicher Anteil für den Vordergrund, und genau darum geht es in Ursache 8. Für jeden anderen Wert schreib ihn als sechs Binärziffern und lies ihn mit der Tabelle oben.- Für Game DVR bedeutet
0x0aus (das Kästchen) und0x1an (der Windows-Standard). - Endet die Abfrage von
AllowGameDVRmit einem Fehler statt mit einer Zeile, gibt es den Richtlinienwert nicht, und das ist der Windows-Standard.
Was der Scan mit alldem macht
Wonach der Ruckler-Scan sucht führt diese Prüfungen gegen das aus, was Windows und deine Treiber ohnehin aufgezeichnet haben, und kennzeichnet jeden Befund als bewiesen, wahrscheinlich, Kandidat oder nicht geprüft. Zwei Dinge, die man wissen sollte: Ein Scan, der immer zehn Probleme findet, verkauft dir die Lösungen dazu, und eine Prüfung, die nicht laufen konnte, wird gezählt und nicht stillschweigend als sauber behandelt.
Änder danach eine Sache und nimm dieselbe Szene noch einmal auf. Fünf Änderungen und eine Messung sagen dir nichts darüber, welche davon gewirkt hat, und alles, was keine Zahl bewegt hat, gehört zurückgenommen.
Was nicht die Ursache ist
All das kursiert endlos als Lösung gegen Ruckler, und w0a weigert sich, jeden einzelnen dieser Werte zu schreiben, aus dokumentierten Gründen:
DisablePagingExecutive,LargeSystemCacheundDisablePageCombiningändern die Speicherverwaltung des Kernels;NtfsMemoryUsageändert den Pool des NTFS-Treibers;IoPageLockLimitundSecondLevelDataCachesind ebenfalls Annahmen des Kernels. Werte auf Kernel-Ebene sind eine Produktregel: Sie werden nie geschrieben.GlobalTimerResolutionRequestsliegt unterSession Manager\kernel, einem Schlüssel, den das Produkt rundheraus ablehnt.MSISupportedschaltet den Interrupt-Modus eines Geräts um; falsch gesetzt, kann das Ergebnis ein schwarzer Bildschirm sein.FeatureSettingsOverrideundFeatureSettingsOverrideMaskschalten die Schutzmaßnahmen gegen Spectre und Meltdown ab.OverlayTestModeundDisableOverlaysschalten Multi-Plane-Overlay (MPO) ab. Auf einer echten Maschine mit Windows 11 25H2 haben sie CS2 hart und reproduzierbar eingefroren.TdrDelayundTdrDdiDelayverlängern den Watchdog des Grafiktreibers, wodurch jedes Einfrieren nur länger dauert;TdrLevelschaltet die Wiederherstellung ab.
Auf einer Maschine, der kein Arbeitsspeicher fehlt, ändert ein Speicherreiniger nichts Messbares.
Verwandt
- Plötzliche FPS-Einbrüche in Spielen
- Ruckler durch Shader-Kompilierung
- Den Latenztest lesen
- Wonach der Ruckler-Scan sucht
- Hohe durchschnittliche FPS, aber schlechte 1% Lows
- DPC-Latenz: wenn der Treiber das Ruckeln verursacht
- Rückgängig machen, was w0a geändert hat
Du spielst CS2? Welche Startoptionen noch etwas bewirken und wo im Grafikmenü die Frames tatsächlich liegen: Wenig FPS und Ruckler in CS2 trotz gutem PC: eine gemessene Checkliste
Hat diese Seite geholfen?
Was hat gefehlt, oder was hat nicht funktioniert? Wir lesen jede einzelne Rückmeldung.
Wenn diese Seite das Problem nicht gelöst hat, schreib uns — nenne den Artikel, den du gelesen hast, und wir bessern ihn nach.