[SOLVED] Any way to cap FPS without reducing GPU load? (in hopes of better frame stability)

Nantes

Distinguished
Jan 4, 2012
70
0
18,630
I have a 120 Hz monitor without G-sync/freesync. I'm playing Control at Ultra-like settings right now and the FPS fluctuates around 70, causing stuttering. Since the game does not seem to have a FPS cap toggle, I used Rivatuner to cap the game to 60 FPS in hopes of making the framerate more stable. However, this makes my RTX 2070's GPU load cap at around 80%, and there are still sudden framerate dips below 60 which cause very noticeable stutters.

I was wondering if there was a way to cap the framerate at 60, but make the GPU render the extra 10 or so frames, but they are just not shown. My hopes is that this would act as a buffer against framerate dips (i.e. instead of using 80% power to render exactly 60 FPS, with dips to 55 FPS, it would use 100% power to render 70 FPS, which would dip to 65 FPS, which would be imperceptible to me because it's still above the fixed FPS cap. Those extra frames would obviously be discarded by the FPS capping mechanism).

I realize I'm probably very ignorant about how frame rendering works. Thanks for your insight.
 
Solution
No, I use Core Temp which gives the utilization per core. In one of those games for instance, with fast sync at 60 FPS cap, all cores were at 50%.
Core temp, just as task manager, gives you an average usage over time.
You need a tool that will show you what each thread of an app does, like here you can see task manager reporting 56% usage but you see that one thread is using ~50% of two cores, so ~100% of one core.
6uO0lZM.jpg
Go to Nvidia control panel, go to manage 3D settings, and set vertical sync to "fast." The click on "max frame rate" and set it to 60. This will allow your GPU to render frames unconstrained by the refresh rate and frames over 60 fps will be dropped.
 
Thank you. Nvidia's own description of what Fast Vsync matches what you say, however, I tested it with several applications and the GPU utilization also becomes lower in tandem with the lower FPS, so it doesn't seem to work in practice for some reason. Any idea why?

It sounds to me like you might be CPU limited. That would cause drops in both fps and GPU utilization at the same time. What are your PC specs?
 

Nantes

Distinguished
Jan 4, 2012
70
0
18,630
It sounds to me like you might be CPU limited. That would cause drops in both fps and GPU utilization at the same time. What are your PC specs?

A core i7 3770k OC'ed to 4.3 GHz, 16 GB RAM. However, the is CPU barely even 50% utilized. Doesn't CPU limiting occur when it's being used 100%?

I also read that fast sync only works when FPS is above your monitor's refresh rate (only then does it kick in to discard extra frames), so I changed the monitor mode within Windows from 120 Hz to 60 Hz, but it didn't change anything. But I guess that's to be expected: since FPS is being artificially limited anyway, I don't think the monitor's refresh rate is taken into account.
 
Your GPU is being underutilized and your CPU/RAM are both older/slower than recommend, both for a RTX 2070 and for modern games in general.

I believe you will continue to have this problem until you upgrade to a new 6 core / 12 thread CPU and DDR4 RAM. Your CPU is 4 cores / 8 threads (limiting in many modern games) and has low IPC compared to modern CPUs. You don't necessarily have to have high CPU utilization to have a CPU bottleneck.
 
A core i7 3770k OC'ed to 4.3 GHz, 16 GB RAM. However, the is CPU barely even 50% utilized. Doesn't CPU limiting occur when it's being used 100%?
At least two cores and their hyperthreads are used 100% which is why you have 50% usage.
I also read that fast sync only works when FPS is above your monitor's refresh rate (only then does it kick in to discard extra frames),
Fast sync doesn't discard any frames, it just waits for a full frame to be finished rendering and throws it to the display in time for the next refresh of the monitor.
So yes when the monitor reaches the maximum FPS frames will start to be dropped but that is not the reason fastsync was made, its job is to get frames to the display as fast as possible but not that fast that it only sends parts of an image, it's to prevent tearing but at the highest possible framerate.

Control is a very heavy game and the fact that you get 60FPS at 80% usage in one point of the game doesn't mean that your card is good enough to give 60FPS at every point of the game not with 20% more maybe not even with 50% or even more.

The drops could be caused by anything really.
 
No, I use Core Temp which gives the utilization per core. In one of those games for instance, with fast sync at 60 FPS cap, all cores were at 50%.
Core temp, just as task manager, gives you an average usage over time.
You need a tool that will show you what each thread of an app does, like here you can see task manager reporting 56% usage but you see that one thread is using ~50% of two cores, so ~100% of one core.
6uO0lZM.jpg
 
Solution