High CPU Utilization

jgray99

BIT Beta Team
Sep 18, 2017
18
16
BI Machine details
i7-6950x, 16GB Ram, 500 GB SSD
28 cameras, continuous recording, no motion detection, no overlays
I have made all of the listed tweaks here Optimizing Blue Iris's CPU Usage | IP Cam Talk

When I have 24 cameras enabled the system runs at about 40-50% CPU. As I enable another camera it goes to about 65%, another to 85%, and another to 100%. It doesn't seem to matter which cameras I disable/enable. Any thoughts as to why the CPU jumps up so wildly for the last few cameras?
 
That processor doesn't have quick sync (neeed for hardware acceleration).

Also you need to provide more info than just '28 cameras'
What is the MP of each cam?
What FPS is each cam set to?

That way you can calculate the total MP/s
 
  • Like
Reactions: SouthernYankee
Sorry, I guess I wasn't thinking that was necessary but happy to provide the info. I expected the CPU utilization to be high, it just seems really odd to me to go from 40-50% for the first 24, then to 100% for 3-4 more.

14 @ 4MP, 15 fps each
12 @ 5MP, 15 fps each
2 @ 3MP, 15 fps
 
I have adjusted all the camera outputs as follows for a total of 1,419 MP/s to see if that would make a difference. Unfortunately it does not. The last few cameras still push the CPU the 100%.

14 @ 2.9MP, 15 fps each
12 @ 4MP, 15 fps each
2 @ 3MP, 15 fps
 
I don't think I can do that because I have to have the console open and full screen at all times plus remote viewing periodically. It sounds like my only option is the i9.

James
 
Yup, that would peg the CPU again.

A different option would be adding a video card to make use of NVIDIA CUDA. But it looks like it needs to be more than a GT 1030 with 2GB ram, @bp2008 ran a test here with one and it maxed out at 13 cameras:
4.7.8 - August 28, 2018 - Support for the Nvidia CUDA hardware decoding

A GTX 1050 ti 4GB would probably do well, and be much cheaper than replacing your CPU with an I9, which requires a new motherboard as well.
 
  • Like
Reactions: TL1096r and bp2008
Performance limits can be very complex.

To confuse matters, there are different ways of measuring CPU usage. For example, right now on my BI system, Task manager's Processes tab is showing 59% average overall CPU. Same on Performance tab. However if I go over to the Details tab, System Idle Process is averaging about 55%, indicating an overall CPU load of just 45%. The lower number is what Blue Iris itself reports at the bottom of its local console, and is what a Performance Counter would measure. Why the big difference? I have no idea.

There are also a lot of ways to use Blue Iris that require different amounts of CPU time. Like on my system, I render the local console on about 80% of a 4K monitor with the live preview frame rate uncapped, and that doubles my CPU usage just by having the console open. This is having the monitor connected to a small Nvidia graphics card. Without that card, the CPU usage would almost triple instead of just double. So some people see hardware acceleration cut their CPU load in half, while others see it make a tiny difference because most of their CPU load was not video decoding in the first place (or they configured hardware acceleration only on a few cameras by accident). When I wrote my "rule of thumb" in the wiki describing MP/s ranges and appropriate CPUs, realize I do not own all those CPUs, and I have not personally configured Blue Iris on most of them. I am only guessing on performance limits based on how I would configure and run things typically, and based on benchmark scores, and reports from other users.

There's also a possibility that you are running into memory bandwidth limits. Or you could be not even close. I don't know a good way to measure that. As you are on an HEDT platform there's a good chance you are using quad channel memory already and have more than the usual amount of memory bandwidth to work with.

There's also Hyper-Threading to worry about. It makes your 10 core CPU pretend to be a 20 core CPU. The performance gain from hyper-threading is a lot closer to 15% (workload-dependent) than it is to 100%, and I don't honestly know how well Windows can measure your CPU load with hyperthreading enabled. It could be that when it shows 50% load, it is actually close to the limit and Windows just doesn't realize it because it assumes too much of the virtual hyper-thread cores.

It is surprising that cutting a megapixel off most of the camera resolutions didn't have an effect. You could try reducing bit rates too/instead to see if that makes the difference.

If you move from i7-6950X to i9-9900K, you will be gaining H.264 decoding hardware acceleration and probably losing some memory bandwidth. But otherwise the two CPUs measure almost exactly the same in multi-threaded benchmarks. I wouldn't bother spending that kind of money. I'd work on reducing Blue Iris's workload further instead.
 
  • Like
Reactions: TL1096r
Yeah, like @Walrus said, a GTX 1050 ti 4 GB could be a viable way to reduce CPU load. It won't be very energy-efficient of course, but it can do hardware acceleration of H.264 and H.265 decoding and that could be just what you need to keep the CPU from pegging.

I don't think you've told us what GPU you have in that system already. Maybe it is already capable of hardware acceleration in BI?
 
  • Like
Reactions: TL1096r and Walrus
Data point: I run my 13 camera system (1035 MP/s), on an i7-6700 with ~45% CPU usage. I have a second license of BI and tried the same on my i9-9900K with identical config. CPU was around 15%.

The i9 is a beast!
 
i5-8500 / 16GB RAM - 4700 kB/s 325MP/s and computer is always at 28-38%. Sometimes idles at 45% if I have 2 IU3 running. No idea. I try to play back 1 video and it normally works but sometimes BI will freeze without any CPU spike just freeze up.
5.0.4.5 - W10 PRO / 1903 / Latest updates as of 10/5. I always feel people have much lower CPU usage.

Walrus/bp2008 - thanks for GPU info. I updated my newb thread to have more details on when you should install a GPU to take stress off the CPU.
 
Thank you for all the input. Actually this is for a client and it turns out they already have the I9 proc and board. So I'm heading that way, at least for now.