
Below is a summation of the "hard" information I have gleaned from my searches. I am compiling it here in hopes of helping others with similar questions, and with the hope that some of the gurus that visit here might be able to answer some of the questions raised by the information, as enumerated further down. If you can provide any information about your specific ZoneMinder setup that might help further refine this post, please do so. Be as specific as possible with respect to things like image resolution, framerate, custom optimizations, etc. so we can try to compare as many apples to apples as possible. Right now this list mainly compares just fruit to fruit...
Methodology: I'm attempting to quantify the approximate number of bogomips required per camera, as this seems the simplest way of relating camera load to processor specs. At this point, the information I have collected is fairly general. Hopefully with more information from other posters, we can narrow this down by camera type (analog/IP), resolution, framerates, etc. I'll summarize specific posts or Wiki entries, and my presumptions based on them, first before compiling a simple chart for quick reference.
At the very low-end of things, the Wiki states that an "ancient Pentium II PC" should be able to track one camera per device at 25fps. Multiple cameras on the same device (capture card, presumably) take a substantial FPS hit, but the Wiki seems to suggest that single cameras on multiple devices would not suffer the same performance hit. It's a little unclear, so to be safe, I'm going to presume that an "ancient Pentium II" can safely handle one analog camera. Specs were not mentioned, so I'm going to presume a black and white image with a 320x240 resolution. A bit of Googling reveals that the most powerful Pentium II (450mhz) was capable of ~ 900 bogomips.
In the middle of the scale, one poster questioned whether an Atom D510 dual-core processor would be sufficient to handle 2 IP cameras with color images at 640x480, 30fps, for motion detect and record. A responder did a bit of investigation and reported that the processor performed about 3325 bogomips per core, and noted that a dual-core version of that processor should be sufficient.
At the upper end of the scale, one poster reported successfully running 33 IP cameras on a single HP ML115 server, consisting of 2gb RAM and an AMD quad-core processor capable of ~ 18,000 bogomips. Of these 33 cameras, 20 were set to record only and, of these, 10 were greyscale and 10 were color, all at 640x480 and 1.25fps. The remaining 13 cameras did single-zone motion detection, with "best, most sensitive" settings, and all were color, 640x480, and 3fps. The OP reported the 20 record-only cameras resulted in system loads between .1 to .2 before the motion-detect cameras were added, and afterwards the system load went up as high as .21. Looking at the graphs he kindly posted I'm not sure the latter .21 load number is entirely accurate, but I'm not great at reading these kind of things so you may want to investigate yourself if interested.
Code: Select all
No. of Cams/type No. of Bogomips
1 analog/BW/320/25fps 900
2 IP/color/640/30fps 6650
33 IP/mixed/640/~2fps 18,000
These figures do not take into consideration other hardware factors like RAM or system optimization, as noted above, because most posters did not provide this information. Also not considered is whether ZoneMinder imposes any minimum bogomip overhead that would make the addition of more cameras less expensive in bogomip terms than the initial camera.
Using this information: My initial thought was "Great! Just multiply the number of cameras by the bogomips required for that camera type and you'll know what processor to start looking at." I soon realized this might work great in the world of single-core processors, but most servers recently utilized multiple cores or threads and I question whether simple multiplication will accurately determine bogomip requirements for these processors because I am unsure how effectively the system can split the load between cores or threads. Here's an example:
Assume 4 cameras that require 1000 bogomips each, for a total of 4000 bogomips. A single-core processor capable of 4000 bogomips would presumably be sufficient. So would a quad-core processor that provided 1000 bogomips per core, as each camera thread could be offloaded to a single core or thread. But what about a tri-core processor capable of 4000 bogomips? You have 3 cores at 1333 bogomips per core... You could run 3 of the cameras without difficulty, as each could run on a core with more than ample processing power. But what happens to the fourth camera's thread? To my limited knowledge, modern OSs cannot split a single thread among multiple cores (or we wouldn't need multi-threaded apps in the first place, and AMD's Bulldozer line wouldn't be such a benchmark disaster). So this means one core winds up with two threads, each starved for about 350 bogomips. 2 cameras would operate in real-time without trouble, but 2 cameras would start to generate a backlog. Whether this would become significant or not depends a lot on how the OS rotates the load between cores, which is something entirely out of my realm of technical knowledge. Hopefully another poster can enlighten us on how this might work. For the moment, however, it would appear you need to consider the number of cores/threads and the number of cameras, in addition to the system's overall bogomip capability.
Obviously this is all very simplistic and generalized information at this point. I hope other posters can help us narrow things down substantially so some useful guidance can be provided to new ZoneMinders trying to determine their hardware requirements. As those of you new to ZoneMinder can see from this post alone, things like framerate and resolution can make a huge difference in the processing power required per camera. If you need to ask for advice in the forums, try to specify as much of that information as possible so other posters can realistically answer your question. I'd suggest reading up on framerates first--my initial assumption was something around 30fps would be ideal. Big mistake. These aren't movies, just security footage, as many other posters have pointed out. Often 5fps or less is more than ample.
I hope this helps, and I hope other posters add their own experiences so this list can grow and become more precise. I will try to edit this post as necessary to keep it updated as well.