Question / Help Offloading the GPU usage somehow?

Cryonic

Member
My main concern with OBS is: the impact on the GPU while streaming with x264. When i crank up the ingame settings on heavy titles and do not limit FPS, the preview gets choppy and the stream also gets choppy.
I still rock a highly overclocked GTX 970 with a 5820k and other stuff (no bottlenecks in the system at all besides the old and outdated midrange GPU xD ) and i cant stream modern games with high/ultra settings and unlocked framerate. Vsync is crap and i dont want to use it, G-sync is not an option so far (will be after the new GPU arrives).

But the main question is: how do i stop OBS from getting in the way of my GPU and limiting the FPS that it can grab while the GPU is at 99% usage?

This happens with NVenc too, but NVenc uses the nvidia GPU directly, why the heck would OBS do that with x264?

I have enough CPU horsepower to drive OBS with 1080p 60FPS "fast", so please let me do it without an impact on the GPU performance or the stream performance.
 

Harold

Active Member
The problem is the game and not OBS based on what you're saying.

If the GPU status is actually showing 99% usage, it's not likely OBS.
 

c3r1c3

Member
1. OBS uses your GPU to composite the scene together (and get very fast copies of the game you're playing, i.e. no CPU used, and fast copies of the Window and Display Capture). Unless you're using a ton of visual filters, OBS isn't going to use very much GPU, so make sure to leave a little bit for it.

2. You should limit the frame rate of the games to play to around the refresh rate of your computer monitor, otherwise it's a waste, and as you noted leaves no GPU left for OBS to do what it needs.

3. As to the GTX970, it has an issue so bad NVidia had to issue refunds to owners. It's memory layout is VERY asymmetrical, and that causes issues with games and other GPU using programs, esp. (but not only) in memory-constrained situations. Swapping that card out for a better one will help, in some cases a LOT.

4. In any Came Capture Source you have there is an option to limit the frame rate that OBS tries to capture (it limits it to the fps set in SETTINGS->VIDEO). This is something that you should turn on, given your performance issues.
 
Last edited:

Osiris

Active Member
NVENC uses the GPU to encode, x264 does not. This is completely seperate from the scene compositing and scaling which is done on the GPU.
I have no idea what effect doing the compositing and scaling on the cpu has on cpu performance.
 

Cryonic

Member
Well:
1) Some games dont have an option to limit FPS (none, not in the config file, not in the options menu, that does not exist), so the only way to do that is to enforce an FPS lock with third party tools, since Nvidia drivers dont have that feature out of the box. But that is possible.
2) i actually WANT to show the numbers. I stream on a russian tech channel currently and the audience is not only interested in gameplay, but also in the numbers that the game CAN produce on my current hardware (since the 970 is a pretty average and popular card that fits right into the budget for many people. i could throw in a 1080 tomorrow, but that will not represent the average consumer/streamer out there, only the big dudes who got the cash for that).
3) i know about the issue that the 970 has (3,5+0,5gb VRAM and the resulting issues). It is still a VERY popular card, people are interested in that card on the second hand market since it is highly avaliable and pretty cheap in many regions, way cheaper than comparable 480 4gb and 1060 3gb cards that come new. It is not so much the matter for me, but for my customers and viewers who also ask how to fix XYZ problem that occurs on that GPU.
4) so it is wise to use game capture above all other sources? i got lazy and i stick to monitor capture from time to time.

Like i said, once i completly overload the GPU core, OBS struggles to deliver constant 60FPS on a 1080p stream (and dont worry i stream at a high enough bitrate so that does look crisp). Thats not a CPU issue since changing the preset etc gives no effect.
I want a workaround so i can push my GPU beyond all borders and never think about the stream not keeping up with that FPS. The GPU will be replaced, but i saw similar complains on a 1070 etc, once you push the GPU to the limit, OBS cant capture stable 60FPS during that time. And i need that stressful situation, i also want to show people the performance in a synthetic benchmark etc on stream from the SAME rig, that means OBS should never touch my GPU no matter what until i tell it to do so.

I know, a possible workaround would be a capture card and a second halfway capable rig (any xeon from the past years will do the job), but i want to keep all that stuff on my main rig, i even dropped my RTMP server in favor of Xsplit when i have to do a multiplatform stream, sadly Xsplit performs worse than OBS with similar settings and same sources for no reason at all.
 

Cryonic

Member
I believe Xsplit actually does the scene compositing on the cpu.

Anyway, is there a workaround to force the streaming application to have the highest priority or ignore the GPU load completly to make sure i can stream uncapped games with 99% GPU usage?

And XSplit has a higher CPU usage. Not that it bothers me since i have 25mbit/s upload and can somewhat compensate for that. But Xsplit is even harder on the GPU, in the last 1-2 updates they added a monitor to the main window that shows you CPU and GPU usage in total/used by Xsplit and memory usage, kinda useful but i still dont get the whole idea what uses how much on the GPU side.
Thats not a huge deal, just having more options and more control over the hardware usage would be nice. I plan on building a second rig for streaming anyway and a blackmagic card is an option, but it will take time since i dont want to throw away money for minimal gains when it comes to stream quality. The 5820k is powerful, fast enough to handle 2 streams at 1080p 60 with veryfast.
 

c3r1c3

Member
Monitor Capture isn't as performant as Game Capture, so you should always use Game capture.

Make sure to limit the fps captured by OBS in the game capture source settings. (It's absolutely pointless for OBS to try to capture a game at 120fps+ if you're only streaming at 60fps or less).

Try both of those and report back to us.
 

Cryonic

Member
Monitor Capture isn't as performant as Game Capture, so you should always use Game capture.

Make sure to limit the fps captured by OBS in the game capture source settings. (It's absolutely pointless for OBS to try to capture a game at 120fps+ if you're only streaming at 60fps or less).

Try both of those and report back to us.

I did, it still does not help when i stress out the GPU to the limit (and thats on purpose since that is a part of the content that i stream or record). It helps a bit, that means i can get higher settings/FPS ingame compared to what i had before, but thats just a "meh" effect since i cant drive my hardware directly to the limit without getting a choppy stream.

And i need my monitor since i have a lot of stuff where i have to capture an overlay like the RivaTuner overlay.

Like i said, i need OBS to stop using the GPU completly or i have to build a second streaming PC and grab a capture card to offload that to a second system.
 

c3r1c3

Member
OBS will never stop using the GPU (compositing scenes on a CPU is just brain dead), so your only other option is to use a 2nd PC.
 

Cryonic

Member
OBS will never stop using the GPU (compositing scenes on a CPU is just brain dead), so your only other option is to use a 2nd PC.

That might be the better solution.

I just wanted to know if there is something that i can do to prevent OBS (or other streaming software like wirecast or xsplit) from using the GPU and dropping frames all over the place when i go all in.
This is specially interesting since i plan on moving to 4K native on that rig sooner or later and i will end up with an overloaded GPU with every modern game. Right now i can limit the FPS and graphics options, but since on 4K even a Titan XP is not capable of stable 60 FPS with cranked up settings, i need that functionality to avoid the GPU completly or offload that to a second GPU without stressing out on the bandwith to the first one (even with PCIe3.0 having way more than we need).

Since i would love to benchmark some games LIVE for the people, i need the real FPS numbers, thats just something that i would love to do. Looks like i cant avoid it and i have to put up a gaming rig with something like a 7700k and a decent GPU just for the game and leave my 5820k with my old GPU as a pure streaming PC that can actually pump out 1080p 60FPS @medium if set up right.
 
Top