Memory Utilization on VM

there is a VM that we have running in one of our clusters in vCenter.  we have solarwinds monitoring the VMs and we have the Solarwinds virtualization manager plug-in.  Solarwinds reports that a single VM is utilizing 98% of the 8 GB of memory and when you log onto the VM's operating system performance monitor, it reports the same statistics

When you view the performance for that VM in vSphere, it reports that the active memory is approximately 3.5 GB of memory but the Consumed memory counter does state that it is using close to all of the 8 GB.    i'm curious why there is such a huge difference between what vSphere is reporting and what the VM and the monitoring software Solarwinds reports.

no end users are reporting any performance issues with that VM but that is not to say that there aren't any.  

Who is Participating?
David Johnson, CD, MVPOwnerCommented:
Active memory
Amount of memory that is actively used, as estimated by VMkernel based on recently touched memory pages.
Consumed Memory
Virtual machine:   Amount of guest physical memory consumed by the virtual machine for guest memory. Consumed memory does not include overhead memory. It includes shared memory and memory that might be reserved, but not actually used. Use this metric for charge-back purposes.
I'm disappointed to learn that SolarWinds doesn't do a better job of reporting this situation. I support David's explanation.

One of the things I liked most about VMware reporting was that it showed quite well how much or how little memory a VM needed to run properly, putting the lie to much rule-of-thumb sizing advice. If you see that a VM guest is consistently showing an "active memory" amount that is well below the amount of memory you've allocated, you're generally justified in trying the experiment of reducing its memory allocation.

Presented with "extra" memory, an OS or application (like SQL Server for a prime example) will "consume" it on the theory that some of the things it saves in memory will perhaps be useful in the future. That theory is okay when there's no other potential use for the memory, but the observation you can make with VMware's performance monitoring is that the memory is basically being wasted and you should consider making it available to some other VM whose workload will make more effective use of it.

For VM guests that are actively using all of their allocated memory, you can experiment with giving them more, but to perform the experiment properly, you'll need to have some way of measuring the workload's effective performance. Some workloads will use all available memory actively, but will have their actual performance limited by some other factor such as available disk IOPs - increasing the size of the working set might not increase performance at all.
jdilleyAuthor Commented:
thanks for the feedback David and jmcq. have some additional information that was just sent to me.  please see the latest attachment.  thanks

the text in the e-mail that accompanied the attachment is as follows:

This is what I find so odd. *** is showing memory pegged. And we have had a ton of conversations about that….  But look at the bottom of this screen grab. It looks like only  a few CPU’s are being leveraged. In my mind, that is a problem. If the CPU’s were all hammered, then memory would be the next place for resources to be consumed? It is also odd that only two CPU’s show significant usage. Is there some way to spread this usage over the total amount of CPU’s?
That 95% on one CPU is a sign that one of your workloads has a single-threaded task, not something that can easily be spread to multiple CPUs. The hypervisor is going to keep that single-threaded task running on just one vCPU because that limits the amount of cache thrashing that would occur if the task were to be switched among the underlying real cores or CPUs.

You should be able to identify the process that is CPU-limited, perhaps with Task Manager, perhaps better with Process Explorer. Once you've identified it, you may be able to search for information about why it's behaving this way.

To my eye, everything looks like it may be operating as designed. Consuming all available memory is a behavior we understand, coming from an application that expects to have an entire physical server to itself. One of the graphs shows what may be occasional flurries of page faults, but the low Commit Charge indicates that the page faults are probably not thrashing to the pagefile. Single-threaded tasks are also pretty common, since turning them into multi-processor tasks can take significant effort and testing.
jdilleyAuthor Commented:
thanks again for your response. I've recently learned that the virtualization manager plug-in may not be in use after all which may explain the disparity between what we're seeing in solarwinds and what's reported in vsphere.  I know that the virtualization manager plug in gets the information directly from virtual center as opposed to the agent on the VM itself.  i'll post again once I've been able to verify that fact.  thanks to all
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.