Instead of a smooth, uniform frametime pacing, the engine produces an aggressive, periodic frametime spike exactly 64 times per second (every 15.625 ms)
What Happens Between Ticks vs. On the Tick
(numbers from my benchmarks but it's proportional to all setups)
- Inter-Tick Frames (~93% of rendered frames): The engine only has to interpolate visual positions between the two latest known game states, poll local mouse delta, and dispatch draw calls to the GPU. The CPU finishes in ~0.3 ms, allowing frames to render in under 1.0 ms (1000+ instantaneous FPS).
- The Tick Frame (~7% of rendered frames, every 15.625 ms): The monolithic client tick executes on the main thread. It must sequentially ingest network packets, reconcile all subtick timestamped user commands, resolve player movement physics, collision, and update hitbox skeleton transforms.
- The Frame Stall: The render thread cannot begin drawing until this entire monolithic block finishes. CPU time surges by 500%+ (from 0.3 ms to 1.5–3.5+ ms), inflating that specific frametime to 2.2–4.5+ ms.
- On High-End Systems: On a clean offline map for a cleaner test, the CPU simulation tick takes ~1.5 ms, ballooning the frame to ~2.2 ms (~450 instantaneous FPS). Alternating continuously between 14 ultra-fast frames (~0.95 ms) and one slowed-down tick frame (~2.2 ms) creates harmonic visual judder and a "heavy/rubbery" mouse feeling, even while the FPS counter claims 600–900 FPS.
- On Mid-Range Systems (e.g., Ryzen 5600 / Core i5 12400): In an offline map, intermediate frames render normally. But in a live 5v5 round with smokes, molotovs, and 10 players, the un-optimized 64 Hz tick simulation easily demands 6 to 10+ ms of CPU time. Every 15.6 ms, frametimes spike massively, causing the framerate to crater from 250–300 FPS down to 80–100 FPS for that tick.
- The 1% Low Myth: These periodic simulation stalls account for ~6.8% of all delivered frames. In CS2, 1% Lows are not random drops, thermal throttling, or shader compile stutters: they are the mathematical footprint of the 64 Hz client simulation tick.
- Download and run Intel PresentMon
- Launch CS2 and start a 60-second capture while playing
- Open the generated .csv file in Excel
- Create a 2D line/scatter chart with TimeInSeconds on the X-axis, plotting two separate data series on the Y-axis: MsBetweenPresents and MsCPUBusy
- Check for the rhythmic spike repeating every ~0.0156 seconds (15.6 ms) where MsCPUBusy surges and drags the frametime down.

