100% CPU with 6 x Samsung SND-6013 cams

I did a proof of concept with a couple of cameras and it worked pretty well.

Now I’ve brought the number of cameras up to 6, the CPU is maxing out at 100% all the time, and as you’d expect the recordings are missing about 90% of the frames. The CPU is an i7-3770, 4GB RAM, brand new 7200rpm hard disk and gigabit networking throughout. The disk and network is barely doing anything and there is usually about 1GB of free RAM.

The cameras are kicking out 2 megapixels at 25 fps via RTSP. When using a single camera, Netcam Studio runs fine and records fine.
Following various threads I’ve read, I have reduced the motion detection to check every 500ms, reduced the recording frame count to 15fps and reduced the quality to min. Have tried various combinations of encoder choice and multithreading. Restarted the NCS service each time.

Currently it’s a bit embarassing as the system is incapable of recording anything despite another 5 cameras still to install. The system it is replacing performed much better, albeit with lower quality images.

Is there anything I can do to the settings to improve matters? Short of reducing the quality down to 720 or lower I can’t see the system being able to support all 11 cameras. But that kind of defeats the object of having better quality cameras.

Ideally I’d like to retain the ability to record the audio from the cameras.

My guess is that it’s the motion detection that takes up a lot of CPU, is that correct? What about the speed detection, can that be turned off somehow?

I have paid for a 16 channel license.

Hi,
This is sort of the problem. The ffmpeg and some other transformations take a lot of process load. Running 11 cams at 1080p with recording 15 fps will certainly be a challenge with that processor. Video processing love to use as much cores/threads as possible. Here re some thoughts for settings:
-Client settings: disable high quality rendering. Go low on refresh rates.
-Recording settings: 10 FPS is usually enough. Use Ultrafast. Video Quality don´t do that much.
-Decoding/Encoding: Decoding Library, use Sodtware_Internal is usually the best. DXVA2 and Quicksync usually don’t do that much, but test.
-Enable Multithreaded Decoding and Encoding. That will probably do a lot for the missing frames.
-In the camera config. reduce the FPS. Constant or variable bit rate etc.
-Just for interest use MJPEG instead. It will use more bandwidth, but it should use less cpu load, but not guaranteed. Yes, no sound but interesting.
-I would go for 8 GB of RAM. Check how much NCS is using. 4GB is basic for win10. I would also check the Pagefile if it a lot of activities there. That might indicate low on RAM.

“The system it is replacing performed much better, albeit with lower quality images.” Well, that’s the difference. Higher quality images/resolution use cpu load.

Motion detection itself to not the biggest issue. It is all the decoding/encoding.

I am myself in the middle of upgrading one system where I have 21 cams running from VGA to 960p. Running on a HP server with a Xeon 4 core processor. CPU load is 95 to 100%, but it works fine. I want to increase resolution of cameras. I am looking at “old” server solutions. Many of them have single or multi processors with 8 or ever 12 cores making 16 or 24 threads. This is what video processing likes. Prices for these servers are actually very good.

Already have those client settings. Am I right in thinking with just the service running and no connected clients, these settings will have no effect anyway?

Have changed recording FPS from 15 to 10.

Already using Software_Internal decoding library, tried the others but didn’t make any noticeable difference

Have re-enabled multithreaded en/decoding (tried this before but didn’t make any noticeable difference)

Currently have 1.4GB of RAM free, with the NCS service using 1.2GB. It’s not Win10 (presumably you got that from the licence server?) but Server 2016 - but you’re right it’s pretty much the same thing. Pagefile usage runs at about 8%, which is to be expected - I would have seen excessive usage when monitoring the disk I/O.

I have a spare old ish HP Proliant 2 x Quad Core Xeon E5450 3.0Ghz with 64GB RAM and a massive SAS disk array. I wonder if that might be better. Problem is, the i7-3770 is much better than the E5450 in a straight head-to-head, it would just be the fact that there’s two of them. I don’t really want the hassle of reinstalling NCS on another machine, just to find that it still can barely handle more than 3 or 4 decent resolution cameras.

Never tested on Server 2016. I have tested some server OS and found that Server 2008R2 seems to be the most efficient OS for NCS.
As you say the Xeon E5450 is only quad core so 8 cores. If that is better that 4/8 I can’t tell.
An easy way to test do like this:
-Install NCS on the Proliant.
-go to C:\ProgramData\Moonware\Netcam Studio\Server and copy these files from i7 to Proliant
image

The license will not follow since it is based on hardware and you will have a red banner over all cams except first 2, but everything else will be as normal. So you can easily test the performance.

This one “re-enabled multithreaded en/decoding” has usually a big effect on the recorded files when many high-res cams are used and more threads are needed.

Will try that later.

I can’t figure out how to force NCS to use the MJPEG stream? I’m adding the camera using the ‘Network Camera’ tab and select SND/SNC 60xx. It works only with RTSP Profile 2 (which doesn’t change regardless of the profiles I set up on the camera - currently there are 4)

It’s an ONVIF compliant camera, but ‘Get Profiles’ on that tab never seems to do anything.

The trick is to find the correct URL. Test this.
Go to tab Custom URL.
stream type is MJPEG
Address is http://username:password@cameraIP/video?submenu=mjpg
or
http://username:password@cameraIP/cgi-bin/video.cgi?msubmenu=jpg

Here is another one for SNV-6013

http://username:password@cameraIP/stw-cgi/video.cgi?msubmenu=stream&action=view

I tried running Netcam Studio on the twin Xeon Proliant server instead, and obviously the CPU usage is less because more overall processing power is available. It’s not much less though - it still puts the server at about 70% constant load, so adding the other 5 cameras is just not an option really. I’ve dialled the recording right down to 10 fps. I can’t use MJPEG streaming on these cameras because they only support 1 fps at any reasonable resolution.

Just for comparison, I also installed Zoneminder on the same server just now, and that seems to be much more efficient CPU-wise. As a piece of software, it’s nowhere near as polished as NCS however. I think that using the same hardware, Zoneminder will handle the 11 cameras I need without any issue. Just trying to work out if I can live with it or not. If I can, I’ll have to abandon NCS unfortunately which is a shame.

Hi,
Thanks a lot for the testing. I was expecting a lower CPU load with the dual Xeon processor. Maybe I was expecting a little bit bigger difference.
Zoneminder is only for Linux and as you say it is not that “polished” :slight_smile:
Good luck,
Henrik

In case anybody is interested, I have reduced all 6 cameras to output 7 fps, and have set recording in NCS to 7 fps also.

This results in acceptable performance, live viewing and recording with no frames dropped and around 40% CPU usage on the i7 machine.

The performance even at this level on the 2 x Xeon E5450 3Ghz Proliant server was unacceptable. The later generation of Xeon CPUs have more cores, so if you’re planning on buying an off-lease server then get one of the later versions.

1 Like