Question / Help Elgato hd 60 pro 100% cpu usage

Orzanel

New Member
Hi there.I currently have an issue with the elgato hd 60 pro.I am running a dual pc build for streaming.The streaming pc is rocking a i7 4790k that's not overclocked.The issue is as follows.When i stream at 720p 60 fps the cpu usage sits around 35%. If i want to switch to 1080p 60 fps it jumps straight at 100% and i get that message with encoding overloaded.I have tried numerous things, like allowing the gpu to do the encoding, lowering the quality in the elgato settings but nothing works.Any ideas?

I also added a log file of the last recording i did https://gist.github.com/421d731bdb66ad438788988682ac4c68
 

SumDim

Member
You are using a NVIDIA GeForce GTX 560 Ti card. That card doesn't have NVENC h264 support.
Only Nvidia GTX 600 and higher cards have NVENC support.

So you need to get a higher end GTX 10XX card. Since its on a dedicated streaming PC, you can get by with the lower end. I'd suggest just getting a GTX 1050 in that case. Their cheap, around $100.

You shouldn't see your CPU at the 35% level when using NVENC. When I stream at 1080@60fps using NVENC, my CPU usage is anywhere between 5-15% which is desirable on a dedicated streaming PC.
 
Last edited:

SumDim

Member
With NVENC, the GPU does all the encoding relieving the CPU of doing that work. Think of it as "encoding on a chip". That chip sits on the Nvidia card.

What's likely happening is that OBS Studio switches to x264 after finding your GPU doesn't support it. .Your CPU usage is very high at 35%. That tells me this is what's going on.

But again, your GPU card does not support NVENC. You need to get a higher end card that supports it.
 

Orzanel

New Member
But i use x264 encoding in obs anyway.I don't use nvenc.And even so shouldnt a i7 4790k handle 1080p 60 fps anyway? i mean i got the same processor on the gaming pc and i can do 1080, ofc with worse performance in games.
 

SumDim

Member
Just because you got an i7 doesn't necessarily meant that translates to doing 1080@60fps. There are a ton of factors involved in order to do that kind of resolution and FPS.

Most of the problems not being able to do 1080@60fps lie in the networking area:
- Too many local devices using your local network (smartphones, tablets, computers, etc.)
- Slow upload bandwidth (my experience shows you need at least 10+ Mbps minimum)
- Using wireless (not recommended) instead of hard wired Gigabit Ethernet (highly recommended)
- Wrong router equipment and hubs. You need Gigabit router and hubs for high speed Gigabit local network.
- Wrong cabling. You need Cat 5e/6 cable.
- Poor connection to ingest servers
- Ingest server problems

Outside networking issues, there are things like not setting up OBS properly
- Wrong keyframe interval
- Wrong bitrate (very important)
- Wrong CPU preset
- Etc.

The Internet is a public network. It is not like a dedicated leased line where the provider can guarantee you high quality. You have to be flexible in your approach and tweak stuff because nothing is static. That means you always have to be on your toes before going live in your stream. You may have to tweak a lot of stuff to get it just right.

For example, a few days ago I was using NVENC at a 9800Kbps for doing 1080@60fps. That stream worked out fine and final product was very good. Then, a day after I had problems with the ISP network dropping my upload speed down. A 1Mbps difference affected my whole approach to doing NVENC encoding. I had to switch to x264 and lower the bitrate and tweak settings. That final product was very good too. So its not always a "set this and let her rip" approach. Having the ability to do both NVENC and x264 gives you the flexibility to switch gears if you have to.

Nobody is going to be able to say "Use these settings" if that is what you are looking for here. You have to be able to test and experiment to see what works and what doesn't.

I seriously doubt Elgato HD60 Pro is the problem here. I have the same card. I never have 100% CPU usage in either x264 or h264 NVENC streaming at 1080@60fps. You got something else clogging up your streaming PC's processor. Bring up task manager and make sure the only thing running is OBS Studio and a browser window to look at your stream. That is all that should be running. Disable Elgato Sound Capture. You don't need it. Use OBS mixer instead.
 
Last edited:

SumDim

Member
Reboot Windows. Do the test again.

When I am not streaming, OBS Studio idles at around 1.5% taking up around 350MB of memory. I ran a test stream to YouTube just now. CPU usage goes to no more than 35%. This based on x264 at 8500 bitrate on medium CPU usage preset.
 
Last edited:

Orzanel

New Member
Yes i rebooted a million times its always the same thing.I even tried getting the latest beta driver and still the same.Not to mention i also tried installing a gtx 970 in the streaming pc and it did not help at all, still same 100% cpu usage when doing 1080p. The odd thing is when i use elgato game capture to capture 1080p 60 fps the usage barely hits 20%.So it must have something to do with obs i guess.Also if i just choose to stream without the elgato at 1080p the cpu usage is at 30%.
 
Last edited:

SumDim

Member
What are your exact settings in Advanced Output Mode

Audio Track
Encoder
Enforce streaming servince encoder settings
Rescale Output
Rate Control
Bitrate
Use Custom Buffer Size
Keyframe Interval
CPU Usage
Profile
Tune
Variable Framerate (VFR)
x264 Options

And what are your settings for Video

Base Canvas resolution
Output scaled resolution
Downscale Filter
Common FPS Value

Run three Speed Tests and list the up/down
Run #1
Run #2
Run #3
 
Last edited:

Boildown

Active Member
20:29:39.251: [DShow Device: 'cam'] settings updated:
20:29:39.251: video device: Logitech HD Pro Webcam C920
20:29:39.251: video path: \\?\usb#vid_046d&pid_082d&mi_00#6&2b5f9825&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{bbefb6c7-2fc4-4139-bb8b-a58bba724083}
20:29:39.251: resolution: 1920x1080
20:29:39.251: fps: 30.00 (interval: 333333)
20:29:39.251: format: I42

Don't run your webcam at 1080p, try 540p instead. Unless you're one of those cleavage girl streamers or something (lol), its a waste of precious USB bandwidth and can cause what you're seeing.
 

Orzanel

New Member
Webcam or overlays have nothing to do with it as i tried with just elgato on and it does the same.Also neither does my bitrate that i usually have is 6k i tried with 2.5k and its same, in case you guys are gonna think that's causing it.
As for settings
-audio track 1
x264 encoder
enfore streaming service is unchecked
rescale output is unchecked
rate control cbr
bitrate 6000
customn buffer size unchecked
keyframe interval 2
veryfast cpu preset
no profile
no tune
variable framerate unchecked
x264 options nothing there

Video settings
base resolution 1920x1080
output 1920x1080
downscale filter bicubic
60 fps

Internet speed
#1
48.32 Mbps UPLOAD 27.57 Mbps
#2
45.39 Mbps UPLOAD 26.79 Mbps
#3
45.25 Mbps UPLOAD 28.64 Mbps
 

SumDim

Member
Ok so we know you dont have hardware encoding on board through NVENC. So you are forced to use x264.

You use a i7-4790K. Thats a decent CPU perfectly capable of doing 720@60fps. But my hunch is, its not strong enough to do very good quality 1080@60fps. I base this on the other systems I have here. Looking at the Passmark ratings, its well under what I use to do 1080@60fps by about 30-40%.

My suggestion is to fiddle with these two:
- Bitrate
- CPU Usage Preset

I think whats going on here is that you got a funky bitrate to cpu usage setting combination thats screwing things up.
Best thing to do is use Auto Configuration Wizard.

Starting with a CPU Usage setting of faster
Get a baseline bitrate setting from you to YouTube using Auto Config Wizard
Note what bitrate is suggested and how much CPU usage is being told from Task Manager

Change the CPU Usage setting to veryfast
Close down OBS Studio and restart again after you save
Stream with the bitrate
Note the CPU usage

Change the CPU Usage to superfast
Close down OBS Studio and restart again after you save
Stream with the bitrate
Note the CPU usage

When the CPU usage starts to go down on a particular setting, increase the bitrate in increments of 1000. You got plenty of upload speed to do 1000 increments. Don't forget to always close down OBS and restart again after you save. Keep tweaking in smaller increments until you find a good spot.
 

Boildown

Active Member
Don't look at CPU usage, x264 opens up 12 threads on a CPU with 4C/8T, so it may always look high. Instead do 5 minute (minimum) length test encodes/streams with the settings you're trying, and then look at the OBS log file to see how many dropped/skipped/whatevered frames there were.

So put it on SuperFast preset and make sure the content is high action (playing the game, not just standing still, for example), do a 5 minute recording or stream, and post the OBS log from that test, here.

Do that again for UltraFast and VeryFast.

Then we can talk more.
 

SumDim

Member
I dont think thats correct. x264 wont be able to efficiently use 12 threads on a four core with 8 threads in total. x264 shouldn't use anywhere near the maximum number of threads available to the entire system. You have to leave threads available for system services.

This is how I think it works...

By default, x264 creates 1.5 times the number of cores to be the number of threads it uses in the system. I've seen this 1.5 multiplier thrown out in some forums (I could very well check the open source but am too lazy). Assuming this multiplier, on a 4 core CPU, up to 6 threads can be used for x264 processing. The two thread slack is so that other services like O/S and your application can run beside it.

Assuming the 1.5 multiplier, this leaves x264 devoting these number of threads from the CPU limitation:
1 core, 1 thread max out of 1
2 cores, 3 threads max out of 4
3 cores, 4 threads max out of 4 (rounding down)
4 cores, 6 threads max out of 8
5 cores, 7 threads max out of 10 (rounding down)
6 cores, 9 threads max out of 12
7 cores, 10 threads max out of 14
8 cores, 12 threads max out of 16

BUT, this depends on what else is running on your system

If you are playing a game that needs 2 threads minimum on a CPU that only has 8 total threads, you devote 2 threads to the game, at least 2 threads to the O/S services and OBS studio, and the rest to x264. That leaves you with 3-4 threads to be used for x264 processing.

What those 3-4 thread setting is will depend on what alias named (faster, veryfast, etc) you choose.

The higher you move up in the OBS drop down box, the less threads are used for x264. Consequently, when you run your other applications like a game, they get the remainder. This may seem to imply that you should load all your applications up first before launching OBS Studio....

In a dedicated PC streaming box, there is nothing wrong with having high CPU usage utility - you want that. Conversely, if you are getting 50% CPU usage and getting the right results, you got an overkill of a CPU.

What you are probably afraid of is that a high CPU usage means your system is overheating. It will generate more heat, but thats where you need to monitor it and put on appropriate cooling apparatus.

If you are concerned about high CPU usage, you have two choices:
1) Buy a higher end CPU with more cores and threads
2) Fiddle with the CPU preset and bitrate

If #2 doesn't work, you have to do #1.

Also, in your particular case, you don't have NVENC on your GPU. You can buy a GTX 1050 to avoid having to worry about CPU usage because all of the encoding will be done on the GPU encoder chip. That will leave all 4 cores/8 threads for you streaming PC to utillize and you should see the CPU usage drop.
 
Last edited:

Boildown

Active Member

"Threads" can be slang for "logical cores": http://forum.doom9.org/archive/index.php/t-165040.html in the context of CPUs and hyperthreading.

And Hyperthreading does result in more logical cores, and logical cores is what x264 uses to determine how many threads are created. So a 4C / 8 "logical" CPU (because of Hyperthreading) will spawn 12 threads even though (and I agree) that's "too many". I had a previous observation of this here: https://obsproject.com/forum/threads/for-video-encoding-more-cores-or-more-ghz.10722/#post-60264

But its kinda nit-picky and confusing so I only mention it to technically proficient people (or those who appear that way) who've done all the hard stuff to tweak their settings first and who want to tweak things a bit more.

Its up to the OS to effectively balance all the threads that are spawned, including the ones from the OS and game. Its no coincidence that i5 CPUs that used to be able to game and stream well are having trouble with newer games, as newer games are better threaded, leaving less left over for OBS (x264).

In most games you can't tell it how many threads to use, but you can tell x264 with the threads=X command. So if setting the process priority is ineffective at stopping OBS from hogging up the CPU needed by the game, you can use threads=[something less than LogicalCores x 1.5] as a custom command.

But that doesn't apply to this OBS user, at least not yet. He needs more OBS performance, not less, so I wouldn't touch the threads setting until we've picked the low-hanging fruit first.
 
Last edited:
Top