Question / Help Dual Xeons Problems with Encoding Utilizing ALL Cores

ip3ngi

New Member
Hello OBS Users/Developers,

I am a streamer on twitch.tv I stream only Battlefield. I was the first streamer on twitch that I know of to utilize dual Xeon CPUS to encode my video, then several others followed suit. At the time I was utilizing 16 cores to do so and was encoding at 1920x1080 @ 60 fps using Xsplit with the medium preset. My CPU on the streaming PC would never go above 70% so this was an ideal setup.

I recently upgraded my CPUS and I am now running 24 cores total. Please see my complete specs with click-able links Here under streaming PC. I purchased these new CPUS in the hopes that I would finally be able to encode @ a slow preset using Xsplit with the same settings as before Note: If I would have tried this with my old Xeons the CPU would spike to 100% it was just unachievable even with the DUAL Xeons with 16 cores.

I just assembled the new build this week and I have been doing some testing primarily with Xsplit and I have run into some problems which eventually has brought me over to OBS to test as well. The issues that I am having with Xsplit are the following.

Using their latest build of 1.3.1403.1202 when I encode at 1920x1080 @ 60 fps using the slow or medium preset Xsplit does not maintain 60 FPS, in the preview screen on the streaming pc the video looks smooth but when I look at the streaming recorded video and Local recordings with media info they both show 20-40 fps and never 60 fps resulting in the video playback looking choppy.

Here is an example of a recording I did tonight on slow that exhibits this problem with Xsplit; again this is all background to why I am here. The good news is that with Xpslit I CAN encode @ the slow preset with my new CPUS’s the only problem I have is that the software is not maintaining 60 FPS. The CPU in the bottom left hand corner is the CPU of only the streaming PC with the DUAL Xeons.

I came over to OBS to test if I could do it with your software and the problem I have with OBS is that on the slow preset the software barks that there is HIGH ENCODING in RED! When this happens the frames drop and the video skips however at the same time when I am looking at my CPU utilization on my streaming PC when the HIGH ENCODING in RED message comes up the CPU drops to 15-30% and then back up to 40-60 then back to 15-30%.

OBS does maintain 60 FPS during the time that it is encoding without the message of HIGH ENCODING in RED. I did a quick test tonight with OBS and it seems to work as expected on medium, so I am wondering if OBS can encode on the slow preset and if it is utilizing the 24 cores correctly?

In summary Xsplit encodes correctly on slow and utilizes all CPU cores correctly but cannot maintain 60 FPS. OBS seems to not utilize all CPU cores consistently but it can maintain 60 FPS when it is utilizing the cores adequately.

Here
is my local recording tonight with OBS on slow and Here is the log during the recording, the reason I never used OBS is because you cannot adjust the color on the capture card like you can in Xsplit, but at the same time you seem to have much better log and debug system. The CPU in the bottom left hand corner is the CPU of only the streaming PC with the DUAL Xeons.

I am hoping you guys can see what is occurring here and why the software is behaving like this. I would expect OBS to encode on slow just like Xsplit does and maintain 60 FPS @ 1080p From all my testing I have concluded that these cpus can encode high motion on the slow preset.

I posted a thread in the Xsplit forum for the problem I have with their software.

Thanks in advance,

ip3ngi

www.twitch.tv/ipengineer78
 
Last edited:

Muf

Forum Moderator
Video encoding is a fairly linear workload that doesn't lend itself well to parallelisation. 24 threads is the maximum amount of threads that x264 can use, and it can't always use all of them fully unless there is complex motion going on. In other words, you've run into a hard limit.

The fact that x264 under XSplit seems to be able to use the CPU more is due to two reasons: first, XSplit uses more CPU as a baseline. Second, as you say XSplit cannot maintain 60fps, so it serves x264 with less frames per second, allowing it more time to encode, where instead OBS waits for the encoding thread to clog, and then skips frames to allow x264 to catch up, causing a lighter net workload for x264. You can think of this as a constant trickle of water (XSplit) compared to opening and closing the faucet rapidly (OBS).

I'm afraid for you that this is one of those situations where throwing more money at the problem doesn't make it go away. My only suggestion would be to go with a CPU that has less cores, but more overclocking headroom, and overclock it so each thread can encode faster.
 

ip3ngi

New Member
Ok so the slow preset is not an option for high motion games such as bf3 and bf4? There is no overclocked cpu that can handle 1080p @ 60 fps at a medium preset with a 6meg buffer I have tried them all :-) Thats why I went with the Dual Xeons which is the only setup that can touch a medium preset at 1080p 60.

I am talking xsplit medium preset only because its what I have experience with, it appears you guys have a few extra ones in there but I am not familiar with them as I am with xsplits.

If what you say is accurate then that means that there is no CPU combination that can handle slow or slower with high motion games. If x264 has a limit of 24 threads that means it cant take advantage of my 48 threads? Link

If only you could adjust the color on the capture card inputs in OBS that would be so excellent. Basically what I am trying to do with OBS is not possible?

Thanks,

ip3ngi
 

Muf

Forum Moderator
If x264 has a limit of 24 threads that means it cant take advantage of my 48 threads? Link

I remember reading/hearing the 24 thread limit somewhere, and it seems this applies to the amount of vertical lines the image gets split into, assuming 1080p:
MeWiki said:
x264 Settings - MeWiki
The speed gain should be slightly less than linear until you start using more than 1 thread per 40px of vertical video, at which point the gain from additional threads sharply decreases.
1080 / 24 = 45.
 

Videophile

Elgato
You could stay with 1080p60/medium, and then dig into the world of custom X264 options. Stuff like increasing Bframes(Which helps quality a lot).
 
Top