Math for Memory - knowing how much memory you need and how to optimize

From ZoneMinder Wiki
Revision as of 12:19, 24 March 2015 by Asker (talk | contribs)
Jump to navigationJump to search

<Home

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.