I have a VMware ESXi 3.5 hypervisor host with a bunch of guest VMs on it. I am looking to add more VMs but would like to reclaim some RAM from some linux guests, without having to install vmtools to obtain the balloon driver, (which steals memory from running VMs when the host needs it, possibly for higher priority VMs).
Anyway on CentOS 5.5 x86 how can I tell how much ram a running machine actually needs?
I've spotted one particular machine I'll use as an example. This one has 1GB of RAM allocated to it, however it is doing very little, it does not have a gui, web server, database, bind, or dhcpd. It's only running sshd and openvpn to route about 1mbps of traffic.
So I run the free -t -m command with the below results
Quote:
# free -t -m
total used free shared buffers cached
Mem: 1010 731 279 0 168 513
-/+ buffers/cache: 49 961
Swap: 2055 0 2055
Total: 3065 731 2334
|
Do you think the 49 listed as used on the buffers/cache line is indicative of how much memory is actually needed?
Looking at the ESXi monitoring charts the "Memory Usage (Average)" fluctuates from about 40~60MB
On the surface this sounds like I can safely cut the ram allocated to the VM down to 64MB. However, I'm wondering how much of the buffers and cache can be dropped before performance is impacted? On other workstation systems and higher load servers I normally find that having about 50% ram used for cache provides good performance. However that's assuming that the server does frequent file io, this server does not have much file io either. Over the last hour it has not done any disk reads, every 5mins it does about 20KB/s disk writes.
Also, importantly, how low can I go and have CentOS 5.5 still boot?