- Nov 1, 2011
- 2,605
- 6
- 81
Introduction
SLI and CF are plagued by so called microstuttering. It is inherently bound to the AFR rendering technique that todays multi-GPU setups are using. Microstuttering occurs mostly and most notably when the GPU load is very high (aka deep GPU bottleneck). This usually is tied to low fps (of course, there are exceptions).
It all depends on the game engine, driver and probably many other different factors. However, it can (very roughly) be condensed in something like this:

From left to right (every box equals 10ms):
My system:
2600K@4300
GTX580 3GB SLI
16GB DDR3-1333
Win7x64


At 4300MHz we have a GPU bottleneck. At only 1600MHz, the bottleneck is slowly shifted towards the CPU, thus significantly lessening microstutter.
Workaround solution
Underclocking the CPU is obviously a stupid solution, no one would do that. There is a better way: The use of a fps limiter that caps fps to a certain fixed value. Programs that can be used to that extent are:
1. Crysis 2

There are less spikes when a limiter is used. Standard frametime deviation is reduced considerably.
WIP, more examples will be added soon.
SLI and CF are plagued by so called microstuttering. It is inherently bound to the AFR rendering technique that todays multi-GPU setups are using. Microstuttering occurs mostly and most notably when the GPU load is very high (aka deep GPU bottleneck). This usually is tied to low fps (of course, there are exceptions).
It all depends on the game engine, driver and probably many other different factors. However, it can (very roughly) be condensed in something like this:





From left to right (every box equals 10ms):
- Perfect synchronization between CPU and GPUs. No component has to wait for the other, the frames are displayed evenly. 33fps. You could say there are both, a CPU and a GPU bottleneck - or no bottlenecks at all. I guess it's a matter of how you look at it.
- CPU bottleneck. 1 GPU could render 1 frame in 60ms, 2 GPUs could render 2 frames in 60ms (parallel), effectively putting out 1 frame every 30ms if their work was synced perfectly. That would be again 33fps. However, the CPU is so slow that GPU 2 can only begin its work when GPU 1 is almost finished. The CPU limits the effective framerate to 20fps, 1 frame is displayed every 50ms
- Heavy GPU bottleneck. The majority of the time it takes to prepare a frame for display, the GPUs are at work. Instead of beginning in the middle of GPU 1's cycle, GPU 2 can begin much earlier since it gets its data from the CPU so quickly. The timing of the frames displayed (in ms) is 10-50-10-50...it is uneven and perceived as microstutter.
- Lighter GPU bottleneck. The CPU takes a bit longer (in relative terms) each frame, so the stutter is lessened
- Even lighter GPU bottleneck. Still, the GPU is the dominating factor for performance here, but we're slowly approaching the situation described in 1. Less microstutter than in 4. or 3.
My system:
2600K@4300
GTX580 3GB SLI
16GB DDR3-1333
Win7x64


At 4300MHz we have a GPU bottleneck. At only 1600MHz, the bottleneck is slowly shifted towards the CPU, thus significantly lessening microstutter.
Workaround solution
Underclocking the CPU is obviously a stupid solution, no one would do that. There is a better way: The use of a fps limiter that caps fps to a certain fixed value. Programs that can be used to that extent are:
- Dxtory (a video capturing program, that includes a fps limiter).
http://dxtory.com/v2-home-en.html
Trial restrictions:
The logo goes into the file generated by capture.
The logo is displayed in the DirectShow output.
A license purchase site is displayed, when a program is terminated. - Bandicam (same as Dxtory, freeware)
- There is a fps limiter in the Nvidia drivers, starting with Forceware 280.26. Accessible via Nvidia Inspector. Later maybe via the control panel as well
1. Crysis 2



There are less spikes when a limiter is used. Standard frametime deviation is reduced considerably.
WIP, more examples will be added soon.
Last edited: