Math for Memory - knowing how much memory you need and how to optimize
From ZoneMinder Wiki
Jump to navigationJump to search
It's very easy to underestimate how much memory you need to capture HD streams from cameras. When I first started, I assumed 2GB memory was sufficient to capture 5 HD cameras, as long as I reduce frame rate a bit. I never really did the math, but very soon I noticed that ZM was reporting all sorts of errors, cameras kept failing and all sorts of errors.
So I asked for help here and user knnniggett offered excellent sage advice.
So do yourself a favor and do this math: (and please read this for a better understanding)
Min Memory = 1.2 * ((image-width*image-height*image buffer size*target color space*number of cameras/8/1024/1024 )
Where:
- image-width and image-height are the width and height of images that your camera is configured for (in my case, 1280x960). This value is in the Source tab for each monitor
- image buffer size is the # of images ZM will keep in memory (this is used by ZM to make sure it has pre and post images before detecting an alarm - very useful because by the time an alarm is detected, the reason for the alarm may move out of view and a buffer is really useful for this, including for analyzing stats/scores). This value is in the buffers tab for each monitor
- target color space is the color depth - 8bit, 24bit or 32bit. It's again in the source tab of each monitor
- The 1.2 at the start is basically adding 20% on top of the calculation to account for image/stream overheads (this is an estimate)
So let's do the math. I have 4 cameras running at 1280x960 with 32bit color space. I have one camera running at 640x480 with 8bit greyscale color space
So, my system would require:
1.2 * ((1280*960*50*32*4/8/1024/1024 ) + (640 *480 *50*8/8 /1024/1024))
Or, around 900MB of memory.