Question / Help OBS using 40% of my 1080 ti SLI setup

Osiris

Active Member
You need to check at full load, when idle your GPU has way lower clock speeds, so any minimal amount of usage will look like a lot.
The same goes for your CPU, it also usually lowers the clock speed when it's not doing much. And also check which exact process is using the CPU.
 

BK-Morpheus

Active Member
Can you show us GPU Clockspeed + load percentage in Afterburner or GPU-Z, while this happens?
Colossal CPU load from OBS, without even recording is often caused by bad/broken sources in your scene. Could be the browser source, could also be a driver of a webcam/capture card.
 

Rewire

Member
https://prnt.sc/lwmbn0

Interestingly, when OBS is opened, my second GPU goes into idle mode, and the 1st GPU takes over all the load. The spike is when I open OBS. I'm going to try reinstalling my drivers for my GPU.

EDIT:

After reinstall: http://prntscr.com/lwmwoi

No longer down clocking, but the program ups my usage on average about 15% on CPU and 35% on my GPU.

What could be the problem?
 
Last edited:

Rewire

Member
I haven't but wouldn't this kind of ruin things? I mean, I couldn't play games at 165 hz and stream, although I suppose I'm already not doing that.

Perhaps it's noteworthy that shadowplay has zero issues giving me a good stream experience? Great framerates and great quality, but there's no customization options.
 

BK-Morpheus

Active Member
Shadowsplay is not introducing massive increased PCI-e bandwidth load. The NVENC chip can directly access the frames on the GPU, and then send the encoded (so already compressed data rate) data over PCI-e to the software.

OBS has to access the framebuffer, composit your scene, maybe even resize+filter it, then render that composition (which needs to be done with GPU power, instead of NVENC chip) and then finally encode the frames into a video by using NVENC or whatever you prefer.
If you want to use streaming software, to capture stuff that runs on the GTX1080TI, I would definitely reccommend to disable your "Intel(R) UHD Graphics 630" completely (in BIOS).
 

Rewire

Member
So further testing reveals the problem definitely has to do with something in OBS.

http://prntscr.com/lxd2r3

As you can see here, in BF V before closing OBS i'm getting 65-100 FPS, but after closing OBS I'm getting about 140-165 fps.

Is there an option for a FULL reset of OBS to to attempt to fix this problem? Could this be an issue with the SLI/Slow Mode Compatibility? I have to use this for my SLI set up to capture games.
 
Capturing games with SLI setup & SLI compatibility mode will allways have a great impact in your system. And that's not only because OBS, is because how SLI works. I'll try to explain from my own researching and testing. And sorry for the long post incoming and for my English, is not my first language.

In SLI, one GPU works as "master" and the other one works as "slave". The "master" takes its own rendering workload and directs the workload of the "slave", so the frames rendered in the "slave" are returned to the "master" in order to be displayed through the same monitor connector and (usually) in alternative order (AFR) with the ones rendered in the master one. That communication is done via the SLI bridge and also takes some extra load over the PCIe Lanes of each GPU.

With the increased GPU power of Pascal, NVIDIA lauched SLI HB bridge, that went up from 400Mhz to 650Mhz bridge clocks and SLI bridge bandwidth went up to 2 GB/s. That was needed because of GPU rendering power reaching high enough to saturate communications between both GPUs. But we still have 3.0 PCI Lanes with 1 GB/sec bandwidth per lane, that are used for GPUs to communicate with your CPU.

For each frame that a GPU renders, it needs communication with CPU (drawcalls, etc.). So the more frames rendered in a second, the more data per second is needed between GPU and CPU. When talking about SLI, that's the same for each GPU: the higher framerates you're playing, the higher bandwidth for CPU communication is needed for each GPU (drawcalls, etc.) and also even between both GPUs due to the master-slave working mode and SLI bridge bandwidth.

NVIDIA had a workaround for this issue with Turing by introducing the NVLINK to RTX cards. NVLINK could reach from 160 to 300 GB/sec (150 GB/sec in + 150 GB/sec out) bandwitdth in Quadro cards, where with such communication speed there's no master-slave configuration and both cards can even share their VRAM with each other, making double of VRAM for each card. But in RTX cards, NVLINK bandwidth is reduced to 50 GB/sec in + 50 GB/sec out, higher than previous Pascal's SLI HB bandwidth and maybe enough to remove that PCIe bandwidth needed between SLI cards before... but definitely not enough to share resources at Quadro's level, so no VRAM sharing between RTX cards and still "master-slave" mode (at least for now... unless NVIDIA changes something in RTX NVLINK in the future).

But, in Pascal cards, we're still limited to SLI HB + PCIe bandwidth for each SLI's graphic card to take all the communication workload between GPU(s) and CPU + between GPUs.

Your 8086K has only 16 PCIe Lanes. So each of your 1080Ti will have 8 PCIe Lanes. So each of your 1080Ti will have a total of 8 GB/sec of bandwidth to communicate with your CPU (draw calls, etc.) and even also between both GPUs.

That could be enough for your normal use in games... depending on your framerate.

If you play a game with a decent SLI profile, you will find that you can reach higher framerates with two cards than with only one. Sometimes it could be "close" to double framerates... but not always. Even in the same game you'll find that dual-GPU SLI performance scalation over mono-GPU can be very different depending on the resolution you are playing: if you play games at 1080p and low graphic settings, you'll find that your current setup has worse SLI performance scallation (less % framerate increase from using one to using two cards, and both cards running at less % load each) that if you go to 4K and/or ultra graphic settings.

That can be manually measured. If you set your game to 4k maximum details, you'll see the better SLI scaling of your system as the limiting components will be your GPUs, both running at 99% of load (or close to it, depending on how good is SLI profile for that game). As you lower your resolution (or graphic settings), you will se that your GPUs maintain their workload and your CPU load increases somehow with your increased framerates. That will happen when lowering resolution until you reach a point where GPUs are not the limiting component, their load becomes to go down, and that could happen because of your CPU (or the master thread) being 100% loaded (so you have a CPU bottleneck at that resollution), but it could also happen with CPU load not being at 100%... In the second case, if you continue lowering resolution, you'll see almost no increase in your framerates, decrease in your GPUs load and almost the same CPU load. And when that occurs, the liminting component of your system is not your CPU neither your GPUs, is the PCIe bandwidth between them. It is not your CPU making bottleneck to your GPUs, is your CPU's limited number PCIe lanes for each one.

With higher framerates, the % of extra performance received from having one to having two GPUs in SLI will be worse than with lower framerates in your system because, the higher frames per seccond an SLI need to render, the higher bandwidth is needed. So using SLI of less powerful GPUs will make harder to reach that PCIe Lanes maximum bandwidth due to lower FPS numbers. Playing in higher resolutions will also make harder to reach maximum bandwidth because the same reason. And also having a CPU with more 3.0 PCIe Lanes will make harder to reach that limitation due to the increased bandwidth.

But as you go with more powerful GPUs in SLI and lower resolution (so higher FPS numbers) and less PCIe 3.0 Lanes, you'll find easier to need more bandwidth for your GPUs SLI and/or your CPU to take a workload of 100% of its capacity. And that's even worse with CPU demanding games, as Battlefield V.

2 x8 3.0 PCIe Lanes bandwidth can result in a bottleneck at higher framerates to your CPU and extreme powerful GPUs in SLI system by itself, only playing games.

Now, with OBS' SLI compatibility mode, you're struggling that bandwidth even more.

As far as I understood, OBS normal work mode takes what it needs to capture your game from the shared VRAM resources. That's different from how NVIDIAs own Shadowplay works, they use their own toy to play their own game. But the way OBS capture woks is a very efficient one, more than many other capture softwares. And that's what makes OBS able to take only half of the frames rendered in an SLI: OBS can only access to the ones being rendered in only one GPU, the same GPU that OBS ir running on (the "master" one).

If we want OBS to capture frames from both GPUs, we can use that SLI compatibility mode. And, as far as I understood, that makes OBS to download resources from shared VRAMs of both graphic cards to your RAM only for the capture process. That's what makes that process slower and far less efficient than the normal capture mode.

But the collateral issue that this mode introduce is that OBS needs to use a lot of PCIe bandwidth to make that resources download just for the capture process.

That higher bandwidth needed, as far as I tested, could be too much even for a system with two x16 3.0 PCIe Lanes, one for each graphic card (40 PCIe Lanes CPU, 2 x16 3.0 PCIe motherboard with PCIe Lanes directed to CPU, both cards running in x16 3.0 mode checked with GPU-Z).

So... increasing that much the PCIe bandwidth in your system with only x8 lanes to each GPU is more than enough to bottleneck all your system in the PCIe Lanes. And that's why you go from about 140-165 fps to 65-100 FPS when running OBS Studio.

Streaming while gaming in the same PC is allways a demading task for the PC. OBS needs to take some part of the GPU power to render all the sources in the scene together, so it is a bad idea to have your game eating more than 80% of your GPU power, you shall need to cap your framerates to leave spare power for OBS. Encoding that rendered image can be very demanding too... it can be done by graphics card own video encoding chip (what it is transparent to system gaming performance because is happening in a dedicated circuitiry) or it can be done by your CPU with x.264 (what can affect a lot your system gaming performance because CPU taking both workloads, the gaming part and the encoding part). So you can stream with OBS from the PC you are using to play games only if you accept to loose some gaming performance (how much of that will depend on your system specs and your OBS configuration).

If you add to all this mess a system with SLI... well, it won't be easy.

If you want to use SLI compatibility mode and capture frames from both cards, you can try to cap your framerate, and even to increase your game's resolution and graphic details to use the "spare power" until a point where both graphic cards are using 80% load each but without your PCIe lanes bottlenecking your system due to low capped framerates. Maybe that framerate is too low... you'll need to try it in your system to see how much it needs to be.

Or you can accept that half of your frames won't be captured, use OBS without SLI compatibility mode and cap your framerate at a higher number (but capping it anyway so you leave PCIe bandwidth and GPU rendering power enough for OBS to work). If you can reach double framerates than you want to stream, maybe it is a good math, but you'll need to try it and watch your stream playback in the streaming platform to see if it is good and stutter free for you.

You can also disable SLI in NVIDIA Control Panel and play games with only one GPU while streaming. That will make your second GPU useless while streaming, and will affect your "SLI system" gaming performance.

Any of that sollutions is far away from being perfect. And maybe from being a decent one. So, if you want to play with an SLI system and stream all the same that you're watching in your screen, you need to do that by using that PC as a dedicated gaming PC and using a streaming dedicadted second PC and a capture card.

That's allways the more efficient way to capture your game, as it won't affect your system gaming performance at all and also you can use dedicated power to encode with even better quality your stream. And maybe the only decent sollution if you want to play in a SLI setup and stream.

SLI has some good advantages for gaming. Even still today, with SLI support not being on its best moment. But streaming is definitely not one.
 
Last edited:

Rewire

Member
I actually have a second PC I'm using for streaming, but even previewing in OBS uses so much GPU it makes it impossible to play. I'm using the trick where you send the preview to the capture card in fullscreen projection mode and then streaming from a 2700x.

So my only real solution is either:

Cut down to one card

OR

Get a HEDT platform with 16 lanes per PCIE slot and more cores to keep using SLI?

EDIT: Here's a question for the OBS developers then, can we add a feature to the program to be able to select the GPU used for compositing? If I was able to set the program to use EXCLUSIVELY the Intel GPU for rendering and compositing, this might help SLI users that have an iGPU with streaming allowing them to remove load from their PCIE lanes?

EDIT 2: So if I run OBS on my main screen minimized, the problem disappears, it's only when I run on something other than my main screen, which I had been doing to be able to see OBS at all times to make sure the stream was working properly. Turns out I might of been causing the problem all along. Derp.
 
Last edited:
I actually have a second PC I'm using for streaming, but even previewing in OBS uses so much GPU it makes it impossible to play. I'm using the trick where you send the preview to the capture card in fullscreen projection mode and then streaming from a 2700x.
¿Do you run OBS on both the gaming PC and the streaming PC?.

As I tried to explain in my previous post, running OBS on the gaming PC is a demanding task, but if the gaming PC is a SLI setup, it is just an performance lost overkill for your gaming performance.

If you want to play with a SLI setup without stutter, great performance lost, etc., you need a second PC for streaming. And if you do have a decicated streaming PC, you need to capture the video and audio directly from the gaming PC output in the streaming PC with a capture card. So the gaming PC does anything but playing the game, it sends the video through HDMI to your screen, but before reaching your screen, a capture card (in your streaming PC) capture that video (of the game that was rendered in your gaming PC by both of your SLI GPUs) and also let it passthrough to your screen. And that streaming PC does the capture, image tweaking (filters, etc.), renders the sources in the scene, encodes and send to the streaming ingest server your video and audio.

If in your gaming PC you run OBS Studio with SLI Compatibility mode enabled, it doesn't matter if you are sending that preview to a dedicated streaming PC vía NDI, because you are actually overloading your gaming PC PCIe Lanes so bottlenecking your gaming performance. With dual PC setup, the streaming PC has to take all the capture (with some capture cards as the ones from Elgato, Avermeida, etc.), scene composing, encode and stream workload, and the gaming PC shall do anything but playing the game. That's allways the best streaming setup, and the only decent one if your gaming setup has SLI.

So my only real solution is either:

Cut down to one card

OR

Get a HEDT platform with 16 lanes per PCIE slot and more cores to keep using SLI?
The first option really will help due to no extra CPU load neither PCIe bandwidth needed. But even disabling SLI (or in games where SLI is not used at all due to the lack of SLI profile), you will see that there's still some communication workload with the second graphic card (second graphic card's VRAM is as loaded as the first graphic card's VRAM, GPU load in about 5 - 20% even without rendering a single frame). So the way for that first option is literally unpluging the second graphic card. And then, you will get rid of the "streaming - SLI issues" and shall stream "normally" with one GPU.

The seccond option could help, but it wont be perfect. As said before, with more PCIe Lanes you'll find more room for gaming until PCIe bandwidth botlenecks your PC, but it also can happen when using SLI compatibility mode capture (or preview) in your gaming PC. So you'll still need to cap your frames, etc.

Both options help or make it a bit easier to stream. But anyway, if you already have a dual-PC setup, don't bother with none of them, just use your gaming PC to play games and your streaming PC to capture, compose, encode and stream your video and audio.

EDIT: Here's a question for the OBS developers then, can we add a feature to the program to be able to select the GPU used for compositing? If I was able to set the program to use EXCLUSIVELY the Intel GPU for rendering and compositing, this might help SLI users that have an iGPU with streaming allowing them to remove load from their PCIE lanes?
I'm not an OBS developer and they will be the only ones to answer this question with an official statement, but from what I've researched: I'm afraid that the option to use CPU's iGPU for compositing the scene might free some PCIe bandwidth (the one used to send the sources to render the scene to the GPU), but the main problem, download all the resources needed from SLI's VRAMs to RAM in SLI Compatibility Mode, will still be slow, unefficient and requiring a lot of bandwidth of PCIe Lanes.

EDIT 2: So if I run OBS on my main screen minimized, the problem disappears, it's only when I run on something other than my main screen, which I had been doing to be able to see OBS at all times to make sure the stream was working properly. Turns out I might of been causing the problem all along. Derp.
If you have the game capture source turned off (i.e. "deactivated when not showning"), OBS shall be not using SLI Compatibility Mode, so no extra PCIe bandwidth needed.

But let me insist on this: with dual PC setup and a capture card in your streaming PC, just don't run OBS in your gaming PC, let your streaming PC to do all of the capture and streaming part and use your gaming PC only for play games. That's the only and the best way to never have any impact on your gaming performance at all and all the frames from both of your GPUs being captured.
 
Top