CHUDCS2

Performance tuning

Tune overlay pacing, GPU selection and reader intervals using measured timings.

View as Markdown

Establish a baseline

  1. Save your current settings as a separate profile.
  2. Keep the same map, view, display backend and enabled features while comparing settings.
  3. In Debug, enable Show FPS Counter under Performance & Rendering and Timings under Debug Diagnostics.
  4. Focus CS2 and observe the overlay and terminal output before changing a setting.

Change one setting at a time. Compare frame rate and timing output after each change, then save the profile you want to keep. Diagnostics can add work, so turn them off after measuring.

Target FPS and VSync

Target FPS controls pacing of the overlay frame loop. Positive values request that rate, subject to rendering cost and display behavior.

During active game rendering, 0 uses the selected monitor's reported refresh rate when available. It is not an unconditional unlimited setting, despite the current tooltip. If the monitor rate is unavailable, 0 adds no software pacing limit. The unfocused branch also passes 0 directly to the scheduler.

Enable VSync requests synchronization with presentation. The software limiter still runs, so a lower positive FPS target can also limit the result. The compositor and backend can constrain presentation independently. Compare the result on your selected backend rather than assuming the monitor rate is guaranteed.

Extrapolate View Matrix predicts view movement between updates. Compare it on and off if the overlay appears to lag or overshoot while moving. It does not change the reader's sampling intervals.

Select a GPU or monitor

In Debug, open Hardware Selection:

  • Active GPU reports the current OpenGL renderer and vendor.
  • Preferred GPU selects a GPU preference for the next launch. Save the profile, restart, and check Active GPU again.
  • Target Monitor moves the overlay immediately and updates the monitor dimensions used for projection.

Choosing a preferred GPU does not prove the driver used it. Confirm the active renderer after restarting. If the overlay moves but no longer aligns, follow Display scaling.

Tune reader intervals

Memory Reader Thread Tuning has separate intervals for Local Player, Other Players and Non-Player Entities. Values are milliseconds, and the UI clamps each interval to 1-100 ms.

A smaller interval requests more frequent reads and increases polling work. It does not guarantee fresh game state at that rate. The EST rate comes from the requested interval, while ACT reports the measured rate. Compare both before changing another interval.

Keep reader tuning separate from overlay FPS tuning. A faster draw loop can render the same snapshot more than once, while a faster reader cannot make a slow render pass finish sooner.

Interpret timings

With Timings enabled, terminal output includes averages and maximums for GPU sections such as Depth Prepass, Glow Silhouette, Glow PostProcess, Body Pass, Skeleton ESP and 2D ESP.

ObservationNext comparison
Glow sections take a large part of the measured GPU timeCompare the same scene with glow disabled.
Depth Prepass dominatesCompare map geometry and prepass settings while noting the change in occlusion behavior.
Reader ACT is below ESTCheck CPU load and compare a longer interval for that reader group.
FPS follows the monitor despite a higher targetCompare VSync and compositor presentation behavior.

The reported IPC Read Time measures copying the latest internal packet into the frame loop. It is not the duration of every process-memory read. GPU Render Time (wall-clock) and the GPU query section totals measure different parts of the pipeline. Do not treat either as total input latency or a full frame budget including pacing.

For a reproducible report, use Collect diagnostics.

Was this page helpful?

On this page