Virtual Machine Memory - vCenter graphs or Windows performance charts for showing accurate Memory utilisation.


In my organisation I'm looking at scaling down some virtual machines due to a high cluster memory utilisation.

We use SCOM and have the veeam management pack for VMware which allows the running of reports on oversized and undersized VMs. After running this certain VM's I would expect to be reporting as oversized are not showing and in fact only 3 VM's are reporting as oversized..

When I go into the vCenter performance charts on certain VMs I get an active memory usage of under 50% but within windows performance charts I get a memory usage of around 90% utilisation. Due to this saying to a system admin I want to take memory away from their VM's is not welcomed as they are just seeing high memory utilisation within their windows OS.

Is there a tool or accurate way of determining this? I've looked in ESXTOP but this doesn't really show me much.

I am using vCenter 5.5 Update 3 and ESXi 5.5 Update 3.

Any help or guidance on this will be appreciated.



0 Kudos
1 Reply

This will not always same on vCenter report vs guest os report. Because the one reported on vCenter are included memory overhead  video memory, PCI space memory which stats vCenter is fetching from database. It also depends on where the vCenter database held, on vCenter server itself or separate.

For better reporting, utilization and recommendation of resources you can use  vRealize Operations IT Operations Management

Use below script to get average memory, disk and cpu usage per VM. This will give you average utilization report of VMs since last 30 days with 5 minutes interval. You can modify 'since last X days' and interval minutes.

Get-VM | Where {$_.PowerState -eq "PoweredOn"} | Select Name, Host, NumCpu, MemoryMB, `

@{N="CPU Usage (Average), Mhz" ; E={[Math]::Round((($_ | Get-Stat -Stat cpu.usagemhz.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}}, `

@{N="Memory Usage (Average), %" ; E={[Math]::Round((($_ | Get-Stat -Stat mem.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , `

@{N="Network Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat net.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} , `

@{N="Disk Usage (Average), KBps" ; E={[Math]::Round((($_ | Get-Stat -Stat disk.usage.average -Start (Get-Date).AddDays(-30) -IntervalMins 5 | Measure-Object Value -Average).Average),2)}} |`

Export-Csv -Path D:\resourcesusage.csv

0 Kudos