What VMS Hardware Do I Need For 16 2MP H.264 Cameras?

Hi All,

I would like to start a discussion about recommendation on building a windows PC based CCTV surveillance that can support 16 channels of H.264 2MP camera. Is it possible to build a i7 Intel PC that can handle 16 channels of H.264 camera? I have looked up 2 different VMS hardware requirements both VMSes are showing that I need 2 units of i7 Intel PC in order to handle peform the task adequately. Do I need to build a server PC hardware for achieving the goal of having 1 surveillance to support 16 channels of H.264 camera? On another question does running a Linux VMS based system can support even higher channels like 32 of H.264 cameras.

Thank you.

[IPVM UPDATE: Here's our analysis of what happened on the calculator:


They are saying you need "2 units of i7 Intel PC" for 16 channels of H.264 2MP cameras? As in 2 physical machines with i7s? That sounds like overkill.

Who are the VMSes specifically that are recommending this?

For background, we cover this in our Specifying VMS Server Size tutorial.

The key driver typically in specifying VMS hardware is throughput. Let's be conservative and say you need 6Mb/s for each H.264 2MP camera - I am assuming here 30fps so this number may be too high.

Say 6Mb/s multiplied by 16 gives you ~100Mb/s.

Even at a 100Mb/s, it still should not be too much for a single server.

Questions:

  • What's the fps you plan to use? What are you estimating the bitrate to be?
  • Are you planning on using server side motion detection?
  • Do you need to do local viewing (i.e., the server doubles as a workstation for clients to monitor the video live)?

Hi John, thank you for comment and advice. As a matter of fact, actually the 2 different VMSes that I referred earlier, after doing another round of calculation for the 2nd time, my colleague did find that an Intel i7 CPU was enough to support 16 2MP resolution H.264 cameras @25fps in VMS A, however VMS B's calculator showed that I need 4 PCs running i5 CPU. Which is I think is really strange. May be the calculator is flawed or something. I double checked the settings on the calculator, still showing the same result.

If that is the case, does that means VMS B is less CPU efficient that VMS A?

To answer your question:

1) fps = 25, estimated bitrate = 5Mbps, so bandwidth = 16 cameras x 5Mbps = 80mbps

2) Assuming using software detection on the VMS server PC.

3) VMS server will be acting Server + Client on the same PC.

Thank you.

Milestone says you can run that setup on a pentium 4 machine with 2GB of Ram. I wouldn't try it because I feel the performance would not be good enough for my liking. Avigilon which in terms of pure size in MB is smaller than Milestone and they show these stats for a Server workstation configuration (local view). The link indicates an Intel quad core xeon 2.0Ghz with 2 Gb of RAM. Those stats will run up to 64 cameras. I run a workstation on an Intel i5 at 3.2 Ghz with 8 GB of RAM and a 2GB video card. A mid level consumer system by todays standards. I havent tried this yet but I planned on running 16 cameras on my system with little worry. I can't imagine requiring dual servers unless you were looking for failover protection. I looked at a ton of VMS recently before purchasing and not a single one required two physical servers. Now maybe your getting confused with dual core processors or the other possible scenario a server specification that says it needs dual processors. In the world of IT that could mean two physical processors on one board. Just FYI an Intel Core i7 entry level is a quad core processor. Four processor cores on one physical chip. The question about linux versus windows you ask if you can run 32 cameras. Short answer yes. Linux systems can run 32 cameras, but you asked it in the context of the above discussion which you limited your windows system to 16 cameras. If you are thinking that you can double your camera count and all you are changing is the operating system I would say no that won't happen. I will venture out here and say camera counts rely on hardware more than software to achieve their camera count goals. As an example if you ran a supercomputer with a VMS and an old windows computer from say even five years ago with the same VMS side by side the supercomputer would run more camera count hands down. It is all based on the level of hardware available. With that in mind I would like to see the specifications from the place where you got your information to verify what I believe is happening here. I think there might be some confusion in what you are reading or the specification from this company has a major typographical error.

Hi Rob, thanks for your concern and feedback, may be you should check out the screen capture below. :-)

Did I set something wrong in the calculator? Or if it is buggy?

The number of servers to support 16 2MP cameras is to buy 4 PCs, each using Intel i5 CPUs.

If there is nothing wrong with the calculator, so can I conclude that this VMS is not very CPU efficient?

Bear in mind, the any hardware calculator given by the VMS is only an estimation.

Could the estimation is bit far off?

Thank you.

hardware calculator

Marcus, I think I figured it out - the two big drivers here are (1) server and client on the same computer and (2) server side motion detection.

Here's a video where I changed those settings on the Luxriot configurator to show the differences:

Once again John nice work. It shows where all the processing power is going when you bog down the software with additional tasks if I understand your adjustments. Makes sense. I learned something today...Thanks

eye opening... since luxriots calculation to use multiple servers based upon the cpu usage from vms driven motion detection and local viewing... what would change if you linked to two (or four) servers together to view all cameras on a single machine, single vms? seems as though if you had to go the multiple server configuration they wouldn't have to be identical, because maybe only one would be doing the displaying and the others for recording? what is the option for multiprocessing on the server as well? i find this post interesting because i previously haven't put much thought into the cpu necessary for local viewing and the effect it has on the build of the machine...

Hi John, thank you for doing tutorial on the hardware calculator.

First of all, let explain the reason of using Software Motion detection & Server + Client software running on the same PC.

1) Software Motion detection is required for this application, since some IP cameras do not support hardware motion detection on the camera itself, so unfortunately motion detection job has to be done on the server side.

2) Server + Client software running on the same PC. The reason is simply cutting cost buying another PC( Why pay more when 1 PC can do everything, I know buying a client PC with i5 CPU is very affordable in US, but is expensive based on where I came from)

Ok, just to recap it, can I conclude that Luxriot VMS is basically a Server + Client set up when using it for high camera counts of H.264 camera.

What I meant is, if you want to run Luxriot VMS successfully and stably, you need to have 2 units of PC, so that the load can be spread over 2 PCs:

1) Server PC = Software motion + recording

2) Client PC = Live viewing + playback

If not, then you have to look for other VMS software that can do Server + Client job on the same PC efficiently.

Thank you.

Marcus, I certainly can understand why you want to do server side motion detection and local viewing.

As for Luxriot, I am still surprised how conservative that calculator is for these two settings. I've asked Sarit to talk with Luxirot and ask them for feedback. Maybe the calculator is too conservative here because what it's suggesting is highly atypical.

Rob, nice post!

One thing tho im not understanding is: why is the side by side pc an 'old windows computer from 5 years ago' ?

How old is the supercomputer? Why would anyone think it would lose?

C

Chris, I simply made that comparison as a way of stating the obvious. I am new to the IP camera industry, but IT has been with me for a little bit longer. I was one of "those kids" in high school who built computers and fixed them for other people in college. I still find it amazing after all of this post that the numbers reflected in the calculator are what they are. Even after watching John's clarification video I went to the site and played with the calculator because I could not understand how an i5 processor is exponentially slower that an i7 per their recommendations. In regular computer applications I would never say that. It just opened my eyes to other computer applications and why IP cameras and software are tough on computer hardware.

Rob, I may be wrong here......from what I can understand from LuxRiot's hardware calculator is, if the user wants to run LuxRiot VMS software, it is suggesting that the user must buy 2 pieces of PC hardware. 1 for the Server (for recording purpose only) and 1 for live viewing and doing playback. Or at least 2 PCs for sharing the load. Hopefully, someone from IPVM can point out the reason WHY an Intel i7 CPU on a single PC cannot handle video recording, live viewing and playback together(supporting 16 2MP H.264 cameras @ 25fps) when LuxRiot VMS is installed. At this moment, I can only draw the conclusion that whoever design the software for LuxRiot did not write a VMS software that is not hogging on the CPU resources.

Hello Marcus, I don't see anything wrong with your inputs, but if I had a VMS telling me those requirements for hardware I would go looking somewhere else. Not very CPU efficient does not even begin to describe this situation. Like John said who are these people? I trust your imputs I just don't believe your results are accurate and I don't understand what the cause would be. Either CPU inefficientcy or a buggy calculator. Try a different calculator from someone elses VMS and I can almost asure you of better hardware utilization. Those are incredible results. Ones that I wouldn't use if I had to base my decision strictly off a calculator like the one shown in your screenshot. Good Luck

Hi Rob, thanks for the advice again. I think we share the same feeling that the VMS which I consider to implement may be very inefficient in using CPU resources.

Hi all, here is another screen capture that I done.

It is showing another VMS which indicates that a single PC with i7 CPU (41% CPU usage) can handle:

1) Local Display + recording

2) Server side motion detection

3) Remote viewing or local networked Client PC remote viewing

supporting 16 2MP H.264 cameras @ 25fps @ 50% complexity (H.264 compression is based on Baseline Profile)

Perhaps, John's IPVM team should do a round of investigation in terms of testing which VMS in the market is more CPU efficient?

:-) Just to make a comparison and see why customers are paying $$$ big bucks in spending good VMS.

Nuuo_MainConsole_VMS_hardware_calculator

Such testing is already being planned out / prepared - How Should IPVM Test VMS Server Performance?

That said, NUUO's recommendations are more in line with what one would expect for a VMS. The question then becomes: Is Luxriot performance much lower or is their calculator too conservative?

Btw, one minor thing on the NUUO calculator, it is only assuming 37.6 Mb/s or about 3Mb/s per camera instead of the 4.5 M/bs on the Luxirot one.

This is really not simple question, because it depends on many technological aspects. Most simple case is just recording without server-side analytics and local viewing. In this case we don't need to decompress stream, so it is just copying stream to the disc. P4 is enough. If we need analytics or viewing, then we need to decompress the stream and this is really hard for CPU. Normally, single i7 can't decompress 16 2Mp H.264 25fps each. For such job we need 2xXeon system. But, if I have 4 layouts with 4 cameras in each, single i5/7 will be enough. What other tricks we can have to work with single CPU? VMS can support dual streaming in the way, when you switch to layout with 16cameras, it will request lower resolution streams. For analytics, some system can use only I-frames, so decompressing will be not very consuming or request lower resolution stream. And finally, system can utilize GPU for decompression, but this works only for viewing. For analytics still need to decompress to normal memory.

As for recommending hardware, we are also on conservative side when calculating. We suggest not to load CPU for more than 60%. And all our calculations based on real tests, that is why in our form we ask for camera vendor and suggest wide range of different CPU models. Click here for calculator.

Murat,

On your calculator, I cannot find options for selecting server side motion detection, analytics, or local viewing. Am I missing them? What impact would they have, everything else equal?

Press "Add configuration" and you'll get 2 columns of result: "With visualization" and "Without visualization". Numbers are very much different. "With visualization" means with decompression of all cameras for local viewing at the same layout and/or analytics. For server-side motion detector we use only I-frames, so it is very low CPU utilization and doesn't affect on results of calculation. And this calculation is for single stream without technique to optimize CPU load by using low resolution stream. We'll update calculator soon for this.

"For server-side motion detector we use only I-frames"

I wonder how this varies across VMSes. Obviously, the upside is lower CPU utilization. However, what is the typical I frame rate you use? Generally, we see VMSes using just 1 I frame per second. With that, the downside/risk is accuracy of motion detection, no?

Yes, typically it is just 1fps. When we say about motion detector (not object tracking) there is no any issues with accuracy. During 1sec any motion will be even more obvious. Slow motion can be missed when comparing frames between 40ms. That is why usually in such detectors everyone has buffer to compare with 1sec old frame and even 5sec. The only reason to compare with each frame is to detect motion earlier. But why not to setup pre-alarm recording for this second? So, if we detect motion by comparing current frame with 1sec old frame, then we start recording, but first flush 1sec from pre-alarm buffer. In this case we'll not miss any motion and save a lot of CPU resources.

Also good way is to use camera embedded detectors. Now almost every camera has and we support all of them.

Our testing has shown that i5 CPUs may have difficulty rendering high framerate/high resolution video images. We have seen issues with as few as 9 2MP cameras at 30fps. We believe this to be some sort of bottleneck in the bus structure of the chip. We recommend either i7 or E5 CPUs in our specifications.

There's more than a dozen different i5 chips/variants. Are you saying all of them?

We have not tested every variation, however, it seems to be a recurring theme. We also had issues with a HP Z400 that met the minimum specs, and had an i7 CPU, but would not reproduce over 270 fps total. We provided HP with the VMS and some test clips and they could not determine the issue. We thought that it was a bottleneck in their motherboard bus. The end user replaced the HP machines with Dell T-3500 with the exact same CPU and video card, and had no further issues.

Are you implying the different Intel chipset on the motherboard will give different bandwidth reading. Meaning you have a higher end motherboard with latest and greatest Intel chipset, it will have higher bandwidth for the data to move around, than those cheap mirco-atx motherboards which normally use low end Intel chipset?

Not implying anything. Just reporting issues I have seen in tech support and on several jobsites. With the HP Z400, we could display nine cameras at 1.3MP/30 fps just fine. After adding a 10th camera, it looked like a time-lapse recording on all tiles. We were able to display 20+ cameras on the Dell. We put the Dell video card (Nvidia NVS295) in the HP with the same results. We put the HP video card (Nvidia Quadro 4000) in the Dell and it worked fine. Both units had the same Intel W3670 CPU and 4GB of RAM. Where was the bottleneck? We could not determine that, and frankly, it was not our responsibility to do so. We assumed it is in the motherboard.

Hmmm.....I know both the Dell T3500 and HP Z400 has the same North chipset = Intel X58, but what about the Dell? Is it using the Intel ICHI10R for its South chipset (same in HP Z400 motherboard)?

We never had issues with different chipset. In any case, when performance was lower than expected from particular CPU, the problem was with:

-insufficient memory

-graphic card

-network card

and never chipset.

Well, if it is nothing to do with the chipset, then your guess is just as good as mine. :-) I just could not see the reason what causing this to happen.

We received a response from Luxriot development. Essentialy they said the calculator is outdated by not offering higher end or more recent server options such as those with higher cores/thread counts or more chip sets in one PC, hence the reason calculator recommended 2 or more PCs to accommodate 16 cameras.

Moreover, Luxriot says they recognized the limitations of Server Side MD and local client viewing and have suggested 2 improvements (B is currently in beta testing and slated for release by EOY):

A. Use of Multistreaming. The hardware calculator does not take that into account.

B. Implemented a new motion detection mode that "..will reduce CPU load by 10x by not decompressing full video and again using sub stream for MD"

With these modifications, here is their provided new hardware requirements:

"So as an example if both options will be used (sub stream at D1@25fps for live view and new motion detection mode):
Single high performance Intel CPU (for example i7-3930K) will be able to handle 32xFullHD@25fps stream for recording by new software MD and live view (sub streams) for all streams at a time."

Hi Sarit, thank you for responding. Now that the answer is given, hopefully the future updated new release version of LuxRiot will see a drastic decrease of CPU hogging(so that an single INTEL i7 CPU can handle 2MP 16 H.264 cameras), by introducing the NEW motion detection mode(which will be less CPU intensive job) plus existing multistreaming (that will reduce a lot CPU resource by using camera sub-streaming). Your respond will draw the closure of this dicussion. I thank you again.

Since surveillance is a highly parallel process, having more physical cores is highly desirable to deal with the multiple video streams. Although an i7 performs better overall, it is also at a higher price point not only for the CPU but also for a quality motherboard that goes with it. Our favorite is the AMD FX8350, it is priced comparably to an i5 4570 at sub $200 and performs better than it. It is also a true 8 core CPU, not the same as an i7 which is really 4 cores with hyper threading to mimic 8 cores. Also notice that not all i5s are created equal, online benchmarks show a wide range of processing power within that family. We have also noticed that adding additional RAM past 8GB offered little improvement to performance if any, but RAM is pretty cheap these days.

We have done extensive PC load testing here in our company using various VMS's and basically you have to break down the functions into 3 categories.

1. Recording: This is very easy for the PC to do, all it does is take data received from the network card and write it on to the HDD. So most of the work is not done by the CPU but by the storage and network subsystems. We were able to achieve up to 500 Mbit/s throughput using the AMD CPU and onboard sata drives. That's only 50 MByte/s of writing speed which is nothing to brag about considering there are performance HDD's out there with more than 100 MByte/s sustained random write speed.

2. Viewing / Playback: This requires the PC to decompress the H.264 data as well as displaying it on the monitor. This is the part that kills the CPU and also requires a separate mid range video card. Using 10 cameras at 1080p / 30 FPS at around 5mbps each will fully saturate the performance of the above CPU. So that's only about 50 mbps of throughput of video stream viewing. However there is a trick for getting acceptable performance without breaking the bank to be discussed below.

3. Analytics: This part varied wildly between different VMS's, the kind of analytics, how it was implemented and most importantly the scene. We are skeptical for any calculator to provide a reasonable estimate and our advices is to only use the motion detection buit-in to the cameras. Any other analytics will have to be evaluated on a case by case basis.

Now the viewing trick. Since most PCs aren't connected to 16 individual monitors, all of the VMSs offers some kind of matrix viewing. So essentially you are dividing up your 1080p monitor into a minimum of 4 views. This lowers the resolution of each view to a bit more than VGA resolutions (960 * 540). Although not all VMS supports this function, those that do, can display secondary streams from the cameras while recording the primary stream.

You can further reduce the CPU usage by lowering the Compression Quality settings for secondary streams and it's not very noticeable in a high count matrix view. The result, even when using the PCs that we built/sell which supports 4 monitors simultaneously, you are still only viewing 16 VGA resolutions and this mid-range PC is well able to handle the task. For higher count matrixes you can lower the resolution and quality of the secondary stream even further to around CIF and still present a reasonable picture to the viewer.

Wanchai, thorough explanation and very helpful, thanks!

Hi Wanchai, thank you for your feedback and sharing your personal experience.

I am glad to see someone out there is will to give AMD CPU a test run in doing CCTV surveillance, instead of blindly follow the common trend of using INTEL CPU as the prefer choice.

Quote: " 2. Viewing / Playback: This requires the PC to decompress the H.264 data as well as displaying it on the monitor. This is the part that kills the CPU and also requires a separate mid range video card. Using 10 cameras at 1080p / 30 FPS at around 5mbps each will fully saturate the performance of the above CPU. So that's only about 50 mbps of throughput of video stream viewing."

If the CPU that you are referring to is FX8350 which it is 8 core CPU, struggling to peform in displaying live view 10 units of 2MP of H.264 camera on the monitor, then what is the hope of having an Intel i7 CPU (which has only got 4 real cores + 4 HT) of peforming a better job than the FX8350 CPU? Would mind telling which VMS system you are using to test?

Having more CPU cores simply means there is less context switching to remove unnecessary overhead. More info on it here.

That being said, the performance of each core is different among CPU models and most newer i7s trumps the 8350 in raw calculation power per core. Here is a good reference chart on CPU performance.

Our goal was to find a PC that gives a good performance / cost ratio for small/medium sized systems in the current market and we found the AMD CPU served this purpose well. You also have to consider the price of Intel vs AMD motherboards.

Our tests has been done using the below VMS's:

1. Our in house VMS PowerVideo+

2. NUUO Main Console

3. ExacqVision Pro

4. Milestone Xprotect Corporate

5. AxxonSoft Next Trial

6. GVD

The results are similar because everyone has to decode H.264 pretty much the same way. Some VMS even use the same open source decoder FFMPEG. The smart solution is to look for a software that is capable of viewing the secondary stream. Some VMS even does this automatically.

To expand on Wanchai's 'secondary stream' point, we covered this in our multistreaming VMS comparison test. Not only does a secondary, lower resolution stream reduce CPU use in decoding, it reduces bandwidth for remote viewing as well (often a critical consideration).

Thanks again for your valuable input. Now I have some idea of how an AMD CPU FX8350 can perform by referring to the chart on the link given. As I have learned that having more cores, e.g. 8 cores in a CPU does not equate to higher performance than say, having a 4 cores CPU. Referring to the chart will give a better picture in peformance comparsion amongst other CPU manufacturers.