I'm using a pre-built Wowza Streaming Engine AMI (c3.large instance - 3.75GB RAM) on Amazon EC2. Only 8 channels or streams are configured on this server but the RAM utilization is already at 95%. It has no transcoding; distribution is thru Amazon Cloudfront; live broadcast and VOD playback are very rare as the videos on each channel/stream are played thru stream scheduler; each channel/stream has its own streamschedule.smil that resides on Amazon S3; videos also reside on Amazon S3. Since I'm worrying due to very high RAM utilization, I launched another instance (c3.2xlarge - 15GB RAM) and duplicated the configuration to this new server. However, the RAM utilization of this new server is also very high; it reaches 70%. What could be the possible cause/s of this very high RAM utilization?
The memory usage is really misrepresented. Just like the Linux 'top' and 'free' commands, total memory usage is combined Physical Memory, Virtual memory and buffers / cache.
If you look at the output of the 'top' command you'll see Res, Virt, and buffers/cache for each process. The one that indicates actual memory usage is Res. as that is physical memory used by a process.
The virtual memory and buffers can be freed at any time for other application use. You'll find that the Res. figures from the 'top' command, for each Java process, are close to what you would actually expect.
So the graphs show all memory usage, but do not represent what portions can be made available by the OS.