CS2 Latency Testing: Wie ich Input-Lag gemessen habe

Technische Fallstudie zu CS2-Latenz: FPS, Frame Times, Reflex und HPET-Tweaks – mit Messwerten und einer Methode, die Du replizieren kannst.

CS2-Latenz-Messung mit CapFrameX, NVIDIA Reflex und LDAT

Was dieser Beitrag ist: ein Mess-Protokoll, kein Gaming-Ratgeber. Ich beschreibe, wie ich auf einem konkreten PC die Frame-Stabilität und Eingabe-Latenz von Counter-Strike 2 (CS2) gemessen habe, was die Werkzeuge können, was ihre Grenzen sind, und welche kleinen Schlüsse sich daraus ziehen lassen. Wer eine Checkliste «installiere X für mehr FPS» sucht, ist hier falsch. Wer verstehen will, wie man so etwas reproduzierbar misst, hoffentlich richtig.

Grenzen: Die Werte gelten für genau diese Konfiguration. Jede andere Hardware, jede andere Treiber-Version und jeder andere Monitor verändert die Messung. Übernimm keine bcdedit-Setzung blind. Bei manchen Setups bringt sie nichts, bei anderen ist sie sogar kontraproduktiv.

Setup

KomponenteKonfiguration
CPUAMD Ryzen 9 9800X3D
RAM32 GB DDR5-6000, CL28
GPUNVIDIA GeForce RTX 5090
Monitor540 Hz (≈ 1.85 ms pro Frame)
Mess-Tool 1CapFrameX – Frame Times, FPS, 1 % Lows, 0.1 % Lows
Mess-Tool 2NVIDIA LDAT – End-to-End-Eingabelatenz (Click-to-Photon)
Map (Frame-Stabilität)Dust2-Benchmark (lokal) und Valve-Deathmatch (online)
Map (Latenz)Aim Botz auf lokalem Server (localhost)
Treiber / OSNVIDIA Game Ready Driver, Windows 11 23H2

Wichtig: das ist eine Konfiguration. Bei einem System mit weniger CPU-Headroom verhalten sich Frame-Limiter anders, und ein 240-Hz-Monitor hat ganz andere Latenz-Spielräume als 540 Hz.

Was die Werkzeuge messen können

Bevor Zahlen kommen, die wichtigste Unterscheidung:

CapFrameX misst, wie schnell und wie gleichmässig die Engine Frames produziert. Es zeigt FPS, Frame-Time-Verteilung, 1 %- und 0.1 %-Lows. Es zeigt nicht die Eingabelatenz, die Du als Spieler tatsächlich fühlst. Hohe Average-FPS bei wackeligen Frame Times fühlen sich oft schlechter an als niedrigere, aber stabile FPS – genau das ist der Grund, warum CS2 trotz hoher FPS schwammig wirkt.

LDAT misst dagegen die Click-to-Photon-Latenz: vom physischen Mausklick (LDAT klemmt einen Sensor an die Maus und löst aus) bis zu dem Moment, an dem das resultierende Pixel auf dem Monitor leuchtet (LDAT misst per Photodiode). Das ist der Wert, der das Spielgefühl bestimmt. Aber: LDAT misst kein Netzwerk-Verhalten; auf einem realen Server kommt Netzwerk-Latenz zu LDAT-Werten dazu.

Wer nur eines der beiden Tools nutzt, hat ein halbes Bild.

Baseline auf der Dust2-Benchmark

Erste Messung mit CapFrameX, Engine-Settings:

  • GSync: off
  • VSync: off
  • Reflex: enabled
  • Frame-Limit: keiner

CapFrameX-Messung mit GSync off, VSync off, Reflex enabled und ohne Frame-Limit.

MetrikWert
P95~ 932 FPS
Average FPS~ 640
1 % Lows261 FPS

Die hohe Durchschnittsrate ist kein Qualitätssiegel. Die 1 %-Lows liegen bei 261 FPS. Das heisst, die schlechtesten 1 % der Frames brauchen deutlich länger als die anderen. Subjektiv fühlt sich das ungleichmässig an.

Variante 1: -noreflex + NVIDIA Frame-Limiter

CS2 Launch-Option -noreflex, externer Frame-Limiter im NVIDIA Control Panel auf 550 FPS.

MetrikWertΔ zu Baseline
Average FPS~ 550 (durch Limiter)–
1 % Lows483 FPS+ 222 FPS

Der Trick ist nicht «mehr FPS», sondern gleichmässigere Frame Times. Ein extern auferlegtes Limit sorgt dafür, dass die GPU nicht in Stoss-Spitzen rennt, in denen sie kurz vor dem Throttle die Pipeline überfüllt. Die Methode aus der Mess-Forenkultur:

  1. Starte mit einem Limit ca. 10 % unter der durchschnittlichen FPS im Spiel.
  2. Senke das Limit in 10-FPS-Schritten.
  3. Bleib bei dem Wert, bei dem die 1 %-Lows am höchsten sind.

CapFrameX-Messung mit -noreflex und NVIDIA Frame Limiter.

Wichtig: Das ist eine Frame-Stabilitäts-Optimierung, keine Latenz-Optimierung. Ob das auch die Click-to-Photon-Latenz verbessert, hängt vom System ab und braucht eine LDAT-Messung.

Variante 2: Valve-Empfehlung – GSync + VSync + Reflex

Beim ersten Start von CS2 empfiehlt Valve GSync + VSync + Reflex. Das ist die Kombination, die Adaptive-Sync-Tearing vermeidet und gleichzeitig den GSync-typischen Latenz-Penalty durch Reflex kompensiert.

CapFrameX-Messung mit GSync und VSync.

MetrikWert
1 % Lows (Dust2-Benchmark)im akzeptablen Bereich, aber niedriger als bei -noreflex + Limiter

Reine Frame-Werte sind nicht alles. LDAT-Messungen für die drei Varianten folgen.

End-to-End-Latenz mit LDAT (Aim Botz, localhost)

Auf der Aim-Botz-Map gegen einen lokalen Server, ~ 20 Messungen pro Variante:

  • Reflex + Boost (ohne GSync/VSync, ohne externen Limiter): im Durchschnitt 6.54 ms.
  • -noreflex + NVIDIA Frame-Limiter (siehe oben): im Durchschnitt 6.38 ms, also praktisch gleichwertig. Der Unterschied liegt im Rahmen der Mess-Streuung.
  • GSync + VSync + Reflex (Valve-Empfehlung): im Durchschnitt 6.63 ms (Reflex ohne Boost), also ebenfalls praktisch gleichwertig.

LDAT-Latenzmessungen auf Aim Botz (localhost): 20 Messungen pro Einstellung mit Durchschnitt und Varianz.

Mein Take: Wer Reflex richtig einsetzt und keinen externen Limiter braucht, hat eine gute Konfiguration. Wer den externen Limiter aus Frame-Time-Gründen will, verliert dabei keine spürbare Latenz, solange die anderen Settings stimmen.

Was im Deathmatch passiert

Lokale Messungen sind das eine. Auf einem Valve-Deathmatch-Server wird der Vergleich brutaler:

CapFrameX-Messung auf einem Valve-Deathmatch-Server mit GSync, VSync und Reflex + Boost, ohne Frame-Cap.

Setting1 % Lows
GSync + VSync + Reflex+Boost, kein Cap (Online)240 FPS (von 447 lokal)
0.1 % Lowsvon 300 auf 92 FPS

Die Kollision mit Netzwerk-, Server-Tick- und Memory-Verkehr hebelt einen Teil der lokalen Optimierung aus. Auch hier zeigte sich, dass -noreflex + Limiter die 1 %-Lows online stabiler hält als die GSync-Kombination – mit dem üblichen Caveat: eine Map, ein Spielmoment, eine Server-Auslastung. Ein vollständiges Bild bräuchte hunderte Messungen über verschiedene Tageszeiten und Server.

CapFrameX-Messung auf einem Valve-Deathmatch-Server mit -noreflex und NVIDIA Frame Limiter.

LDAT-Latenzmessungen auf Aim Botz (localhost) und im Valve-Deathmatch, mit Durchschnitt und Varianz pro Einstellung.

HPET, bcdedit und der Plattform-Timer

Das ist die Sektion, die im Internet als Heilsversprechen kursiert: «deaktiviere HPET im BIOS und gewinne 5 ms». Die Antwort:

HPET (High Precision Event Timer) ist ein hardwareseitiger Timer. Modernere Windows-Systeme nutzen standardmässig den TSC (Time Stamp Counter) der CPU, weil der niedrigere Interrupt-Last hat. Im Geräte-Manager kann man HPET «deaktivieren», aber das ist Theater: Windows nutzt HPET sowieso nicht als Hauptzeitgeber, wenn TSC verfügbar ist. Was wirklich umschaltet, ist bcdedit.

Die zwei Achsen, die Windows erlaubt:

  • Plattform-Clock (useplatformclock): gibt vor, ob Windows die HPET als Hauptuhr erzwingt.
  • Plattform-Tick (useplatformtick): gibt vor, ob die periodischen Tick-Interrupts vom Plattform-Timer kommen oder ob der TSC-Tick verwendet wird.

In der Regel sind beide nicht gesetzt (also Windows-Default = TSC Clock + TSC Tick) die richtige Wahl. Microsoft selbst beschreibt diese Architektur und empfiehlt explizit, die bcdedit-Schalter nur für Debugging zu setzen.

Was ich gemessen habe – und nur bei meinem Setup:

  • TSC Clock + TSC Tick (Windows-Default): Referenz.
  • TSC Clock + RTC Tick (bcdedit /deletevalue useplatformclock + bcdedit /set useplatformtick yes): bei meinen Messungen ca. 0.4 ms niedrigere LDAT-Latenz (7.82 gegen 8.19 ms im Durchschnitt).

LDAT-Latenz mit TSC Clock + RTC Tick gegen TSC Clock + TSC Tick.

Bei einem 540-Hz-Monitor sind 0.4 ms etwa 20 % eines Frames. Das ist messbar, aber im Alltag nur schwer als «fühlbar» einzuordnen. Wer kein Mess-Equipment hat, wird das nicht spüren. Wer sehr ehrgeizig ist, wird 0.4 ms gerne mitnehmen.

Zur Einordnung: diese Setzungen sind für Debugging gedacht. Sie können andere Anwendungen beeinflussen (Audio-Treiber, Virtualisierungssoftware, Video-Capture). Eine pauschale «das macht alles schneller»-Empfehlung ist hier explizit falsch.

tscsyncpolicy: enhanced vs. legacy

Eine weitere Stellschraube: bcdedit /set tscsyncpolicy enhanced vs. legacy. Standardmässig wählt Windows eigenständig, je nach CPU.

In meinen Messungen war enhanced gegenüber legacy im getrimmten Mittel (ohne die zwei höchsten und tiefsten Werte) ungefähr 0.5 ms schneller, im Median nur rund 0.15 ms, mit etwas geringerer Streuung im mittleren Bereich. Das deckt sich mit der Erwartung: Auf modernen CPUs ist der TSC zuverlässig synchron über die Cores; «legacy» ist eher für ältere Architekturen gedacht. Wieder: bei anderer Hardware oder unter VM-Betrieb kann das Resultat anders aussehen.

tscsyncpolicy-Einstellungen in bcdedit von Windows 11: enhanced gegen legacy gemessen.

Kombiniert ergeben sich also für mein Setup als latenz-optimal:

bcdedit /deletevalue useplatformclock
bcdedit /set useplatformtick yes
bcdedit /set tscsyncpolicy enhanced

Für den Alltag würde ich aber eher die konservativere Variante nehmen:

bcdedit /deletevalue useplatformclock
bcdedit /deletevalue useplatformtick
bcdedit /deletevalue tscsyncpolicy

Das ist wieder Windows-Default und in der Regel die Variante mit der niedrigsten Latenz bei stabilster Frametime und ohne Nebenwirkungen.

Was diese Messung nicht zeigt

  • Keine Generalisierung auf andere Systeme. CPU-Generation, GPU-Treiberversion, Monitor-Refresh, Maus-Polling, USB-Topologie und Hintergrundprozesse beeinflussen alle drei Werte (FPS, 1 %-Lows, LDAT). Übernimm meine Settings nicht 1:1.
  • Keine Aussage über kompetitives Skill-Niveau. Eine 0.4-ms-Verbesserung der Latenz macht keinen mittelmässigen Spieler zu einem guten. Reproduzierbares Aiming, Map-Awareness und Crosshair-Placement haben für die Endgame-Performance einen vielfach grösseren Effekt.
  • Keine Aussage über Server-Verhalten. Tick-Rate, Server-Auslastung und Netzcode hebeln einen Teil der lokalen Optimierung wieder aus.
  • Keine Bestätigung von Internet-Tweak-Mythen. «Deaktiviere die Service XYZ» ohne Begründung ist Volkstheater. Was nicht in einem Mess-Setup wiederholbar ist, sollte man auch nicht propagieren.

Was ein Leser mitnehmen kann

Drei methodische Prinzipien, die robuster sind als jede konkrete Setting-Empfehlung:

  1. Frame-Stabilität ≠ Average-FPS. Schau auf 1 %-Lows und 0.1 %-Lows, nicht auf den Average-FPS-Balken im OSD.
  2. Frame-Stabilität ≠ Latenz. Wer Eingabelatenz wirklich kennen will, braucht ein dediziertes Tool wie LDAT. CapFrameX allein reicht dafür nicht.
  3. Wer nicht misst, soll nicht behaupten. Internet-Tweaks ohne Mess-Belege sind keine guten Quellen. Auch dieser Beitrag ist nur die Messung eines Setups – mit allen Caveats, die das hat.

Quellen

Wer LDAT-Rohdaten oder die Original-CapFrameX-Sessions verlangt, soll ehrlich gefragt werden: ich habe sie für mich, aber ich teile sie nicht öffentlich – sie sind Teil meines persönlichen Mess-Setups und nicht für Benchmarks gegenüber anderen System-Konfigurationen geeignet. Wer Tabellen mit «meine Zahlen sind besser als Marcs» bauen will, soll selbst messen.

Weiterlesen: Latenz, FPS und Aim Leaks

Dieser Artikel ist das Mess-Protokoll: eine Konfiguration, eine Reihe Werte, viele Caveats. Wer den Kontext drumherum sucht, findet ihn auf drei Nachbarseiten:

Diese drei Beiträge ergänzen das Protokoll hier methodisch, ersetzen es aber nicht.

Warum das mit nextfrag.gg zusammenhängt

Diese Mess-Notiz steht inhaltlich nicht allein. Sie gehört zum Umfeld des Projekts Nextfrag – einer CS2-Initiative rund um Performance, Latenz und reproduzierbare Optimierung. Auf der Projektseite ist beschrieben, worum es bei Nextfrag geht, warum die übliche FPS-Folklore methodisch zu kurz greift und welchen Anteil ich als Konzept- und Mess-Person an der inhaltlichen Seite habe. Wer den Beitrag hier als Ausschnitt lesen will, findet dort die Einordnung und den Link zur Plattform selbst.

Verwandte Beiträge

Mehr aus Performance

CS2 Tilt oder Aim Leak? Nicht jedes Duell ist Mechanik

CS2 fühlt sich manchmal falsch an. Dieser Beitrag trennt Aim Leaks von Tilt, Müdigkeit und Druck — damit Du Demo-Daten nicht überinterpretierst.

Ein Demo ist kein Urteil: NextFrag-Daten richtig lesen

Demo-Daten helfen nur, wenn Du sie richtig liest: Einzelereignis oder Muster, Kontext, und pro Woche eine Metrik, an der Du trainierst.

Eine Metrik pro Woche: aus Demo-Daten Training machen

Demo-Daten werden erst nützlich, wenn daraus ein kleines Trainingsziel entsteht. Warum eine Metrik pro Woche oft besser ist als fünf Baustellen.