Linux Gaming Repair Center

Distinguish shader compilation from other stutter

Compare repeatable frame-time spikes with compiler activity, CPU work, memory pressure and storage activity.

On this page
  1. Frame times show what averages hide
  2. Use compiler activity as supporting evidence
  3. Compare the competing resource limits
  4. Gather evidence
  5. A controlled test
  6. Related diagnostics
  7. Sources & limitations

Frame times show what averages hide

Average FPS can remain high while a few frames take hundreds of milliseconds. At 60 FPS a regular frame takes about 16.7 ms; compare the graph and spike duration, not just the average. First-time effects, objects or areas that pause once and become smoother on repetition support a compilation or warm-cache hypothesis. They do not prove it: asset caching and background work can improve on a second pass too. Use a fixed route, identical settings and a recorded game and driver build, with a separate first-pass and repeated-pass observation.

Use compiler activity as supporting evidence

On a DXVK-rendered game, the compiler HUD can help associate visible spikes with compilation activity. Pipeline-library support can move compilation earlier, but cannot promise that every game avoids stutter. Direct3D 12 games use a different translation and pipeline path; a DXVK HUD is not their compiler monitor. A cache belongs to particular game, translation-layer and driver inputs, so updates can change its usefulness. Deleting caches before every test destroys the warm-run comparison and can deliberately recreate first-pass pauses.

Compare the competing resource limits

If reducing render resolution improves frame times with the GPU previously near full utilization, a graphics-work limit becomes more plausible. One busy CPU core can limit a game while total CPU usage stays moderate. A GPU utilization drop during a long stall may mean that it is waiting for the CPU or storage. VRAM near capacity needs allocation and eviction context; a used-memory number alone is not proof of exhaustion. Inspect I/O and memory pressure for repeated movement pauses. Under sustained load, pair temperatures with clock and throttling observations rather than applying a universal temperature threshold. Record VSync, frame caps, FSR and gamescope settings, since each can alter pacing and the workload measured.

Gather evidence before changing the system

Run one command at a time in the relevant host or game environment. Read its requirements and interpretation first. The website displays commands and never runs them.

Temporary diagnostic environment

MANGOHUD=1 %command%

Requirements: MangoHud installed in the applicable Vulkan runtime and architecture. OpenGL needs its wrapper; gamescope uses mangoapp instead of regular MangoHud.

For a Vulkan path, observe frame times alongside GPU, CPU and memory metrics. Confirm the overlay actually loaded; absent or unsupported counters are not zero workload.

Temporary diagnostic environment

DXVK_HUD=frametimes,compiler %command%

Requirements: A DXVK game in Steam; not the VKD3D-Proton Direct3D 12 path.

For Direct3D through DXVK, compare compiler activity with visible frame-time spikes. The graph supports correlation, not a confirmed root cause.

Read-only observation

cat /proc/pressure/memory /proc/pressure/io

Requirements: Linux with PSI support; missing files mean the interface is unavailable.

Read host-wide stalled-task pressure. Compare samples around the route; a single sample cannot attribute all pressure to the game.

A controlled test with a way back

Run the same short route twice without deleting caches or changing settings. Compare spike count and duration, compiler activity and resource pressure. Then, if needed, change just resolution for a separate GPU-work comparison.

Rollback: Remove the overlay options and restore the original resolution. Leave the original caches intact so no recovery download or recompilation is required.

What this test cannot establish: Overlay sampling can miss short events and can alter performance. A smoother second pass also fits asset caching; repeated stalls with storage or GPU errors need those separate branches.

Sources and scope

This editorial review uses primary project and distribution references. It does not establish that a fix has been reproduced on your hardware. Installed versions, the game runtime and the selected graphics API can change the result.