HD60 uses extreme CPU when active, OBS cannot render scene well

mastermind6000

New Member
I have this issues on two different machines recently. If the HD60 card is inactive, everything is fine. Frame render time is like 2-3ms, but as soon a PS4 turns on, for example, and the card starts working, that time jumps to 10ms (which should still be fine) but CPU load doubles and it starts dropping over 10% of frames to rendering lag.

NVENC encoding is fine. that works. it skips the exact number of frames that rendering skips. Task manager shows GPU using like 20% video encoding and that never waivers. It's only when the capture card is running, that CPU goes off. It never used to be this severe until pretty recently.

In addition, if I open a browser or anything the cards output becomes garbled and laggy, needing to be reset, if anything takes CPU away from it.

I've turned off extra sources, background tasks, etc. Even an empty OBS scene with just the HD60 running, jumps up to like 75% CPU by itself. I thought I may have found some help in changing resample rate to a faster one, but it's a trivial difference.

canvas 1080 -> 936p, 5900kbps NVENC, 320 audio, nothing that should be a problem
one machine is AMD FX4300 with Geforce 730
the other machine is i7-770HQ and Geforce 1050

The question is why OBS having such a hard time rendering the card's output? The elgato HD60's own software works fine; it only renders the scene, and encodes the whole thing afterward, not on the fly. Which indicates normal CPU operation when rendering the card output. It's doing so in OBS that has become an issue. THe card itself does its own video encoding, because it's USB 2.0 and can't send raw video. There used to be almost no issue it's performance.
 

Attachments

  • 2021-02-28 22-43-55.txt
    47.3 KB · Views: 12

koala

Active Member
You attached heavy filters to your capture card. They consume much GPU resources. As test, remove them.
And you have very many sources. Try to reduce the workload.

In your log the profile tells:
10:50:42 PM.533: ┃ ┃ ┣render_main_texture: min=0.003 ms, median=0.152 ms, max=162.994 ms, 99th percentile=30.385 ms
and
10:50:42 PM.533: ┗render_displays: min=0 ms, median=4.774 ms, max=1549.67 ms, 99th percentile=22.789 ms

Look at the 99th percentile values. Their sum has to be lower than 16.6 ms, because 16.6 ms is the allowed time for one frame at 60 ms (1/60 = 16.6). You have over 50.
The time for render_main_texture is extremely high, as far as I know it is what OBS takes to read and overlay every source into its own framebuffer.
The time for render_displays is also much too high. I don't know what this part does, from the name I guess it might be rendering the preview image in OBS or perhaps the virtual webcam within OBS.
 

mastermind6000

New Member
You attached heavy filters to your capture card. They consume much GPU resources. As test, remove them.
And you have very many sources. Try to reduce the workload.

In your log the profile tells:
10:50:42 PM.533: ┃ ┃ ┣render_main_texture: min=0.003 ms, median=0.152 ms, max=162.994 ms, 99th percentile=30.385 ms
and
10:50:42 PM.533: ┗render_displays: min=0 ms, median=4.774 ms, max=1549.67 ms, 99th percentile=22.789 ms

Look at the 99th percentile values. Their sum has to be lower than 16.6 ms, because 16.6 ms is the allowed time for one frame at 60 ms (1/60 = 16.6). You have over 50.
The time for render_main_texture is extremely high, as far as I know it is what OBS takes to read and overlay every source into its own framebuffer.
The time for render_displays is also much too high. I don't know what this part does, from the name I guess it might be rendering the preview image in OBS or perhaps the virtual webcam within OBS.

there are no filters on the card, besides that new audio monitor, and I don't have that installed on the other machine that exhibits the same phenomenon.
the workload should not be a problem. it never was before. an empty scene with just the capture card running has the same issue (i think there's a portion of that in the log. maybe different log.)
I know the render time needs to get under 16ms, but I can't find an explanation why the scene composition is so difficult suddenly. teh HD60 is skyrocketing the load. one overlay image, a tiny browser and a webcam are not overloading anything. there's a problem somewhere.
 

koala

Active Member
You have 20 scenes! Gigantic number of included images! And webcams with delay filters! This is quite a thing. All existing scenes are always rendered internally, not only the visible scenes.
 

mastermind6000

New Member
You have 20 scenes! Gigantic number of included images! And webcams with delay filters! This is quite a thing. All existing scenes are always rendered internally, not only the visible scenes.

that's always been there. existing scene can't be rendered internally, if all the images and videos therein are "unloaded when not active". that has always been the environment. used to be more cameras and there used to be a group of 30 extra overlay images. this behavior is new. don't know if it's the card, or an OBS that changed a particular method, or a windows update or what. it's not "workload". it should not require 40-50% of an i7 7700HQ to render that capture card.
 
Top