I am trying to monitor memory usage for my server, but to be honest I am at a bit of a loss as to what I should monitor.
I have reviewed
http://www.redhat.com/advice/tips/meminfo.html for answers but I am still confused. Can someone please tell me if I am correct in the following statements, or correct me if I am wrong.
When I run free -m I get 6 parameters:
Total: Total memory installed in the server in MB (as per the -m flag)
Used: Total memory used by the server
Free: Memory sitting Unused on the server
Now this is where I get a little confused, and am unsure of the specifications:
Shared: pointless entry as it is always 0
Buffers: I have no Idea but not overly concerned as it is low
Cached: This is memory where the OS is caching often used Disk Data Blocks.
The big one I am interested in is Cached. Am I correct in the assumption that this is used by the OS automatically just becuase it is there. Since unused memory is essentially useless the OS automatically tuning for performance by caching disk data in RAM. I understand that it is faster to read from memory then from disk, so it is better to store often used data blocks in RAM.
However does the OS release this memory to applications should the need arise?
The reason I am asking this is sever monitoring. I want to monitor my server for available free memory. However as my server sits now it has 3 gigs of ram allocated with only 59 Megs listed as 'free' when checked with free -m.
However free -m has 1.4Gigs (almost half of my RAM) used by cached. The server runs fine, I have no problems with it. However I am trying to set this server up for monitoring and need to specify a value to check against.
If my assumptions regarding cached memory being released to processes should the need arise then I would guess I should add the Cached and free memory when querying for how much memory the server has available to it.
I am monitoring my server with Nagios. If all my assumptions about memory are correct, does anyone know of a pre-existing plugin that takes these 'things' when calculating memory utilization.