When your (VMware) consolidation ratios are becoming high, it might be smart to keep an eye on your vm’s CPU Ready Times. Unfortunately, by default, the VI Client will only show realtime ready time statistics. Plus you’d have to look at each vm individually. Thank God VMware for the PowerCLI! Read this document for more information on how to interpret the results.

# Variables
$OutFile = "D:\Scripts\ReadyTimes.csv"
$VIServer = "MyVIServer.domain.local"
 
# Connect to Virtual Center
$VI = Connect-VIServer $VIServer
 
$myCol = @()
ForEach ($VMHost in (Get-VMHost | Sort Name))
	{
	ForEach ($VM in ($VMHost | Get-VM | Sort Name))
		{
		# Gather Stats
		$Ready = $VM | Get-Stat -Stat Cpu.Ready.Summation -RealTime
		$Used = $VM | Get-Stat -Stat Cpu.Used.Summation -RealTime
		$Wait = $VM | Get-Stat -Stat Cpu.Wait.Summation -RealTime
		For ($a = 0; $a -lt $VM.NumCpu; $a++)
			{
			$myObj = "" | Select VMHost, VM, Instance, %RDY, %USED, %WAIT
			$myObj.VMHost = $VMHost.Name
			$myObj.VM = $VM.Name
			$myObj.Instance = $a
			$myObj."%RDY" = [Math]::Round((($Ready | Where {$_.Instance -eq $a} | Measure-Object -Property Value -Average).Average)/200,1)
			$myObj."%USED" = [Math]::Round((($Used | Where {$_.Instance -eq $a} | Measure-Object -Property Value -Average).Average)/200,1)
			$myObj."%WAIT" = [Math]::Round((($Wait | Where {$_.Instance -eq $a} | Measure-Object -Property Value -Average).Average)/200,1)
			$myCol += $myObj
			}
		Clear-Variable Ready -ErrorAction SilentlyContinue 
		Clear-Variable Wait -ErrorAction SilentlyContinue 
		Clear-Variable Used -ErrorAction SilentlyContinue 
		Clear-Variable myObj -ErrorAction SilentlyContinue
		}
	}
 
Disconnect-VIServer -Confirm:$false
 
# Export and launch output
$myCol | Export-Csv $OutFile
Invoke-Item $OutFile

»crosslinked«

Related posts:

  1. Remove vmware memory limits with Powershell
  2. Calculate vSphere 5 Licenses with Powershell (UPDATED)

  8 Responses to “Examine VMware CPU Ready Times with Powershell”

  1. thx! this is really powerful and useful for my environment!
    -ja

  2. [...] (By the way, here is a nice Powershell script that will grab CPU Ready stats for all of your VMs!) [...]

  3. Thanks — I was looking at trying to write something like this myself – Now I get the credit without the work :-)

  4. would be nice if the script would exclude powerd off vm’s

    -Sven

  5. That’s rather easy. Simply replace this line:
    ForEach ($VM in ($VMHost | Get-VM | Sort Name))
    With this:
    ForEach ($VM in ($VMHost | Get-VM | Where {$_.PowerState -ne “PoweredOff”} | Sort Name))

    Hugo

  6. Nice script, but when running in a 1500 VM enviroment it takes a long time for the script to finish.

  7. [...] времени, чтобы написать эту статью Источник <http://www.peetersonline.nl/index.php/vmware/examine-vmware-cpu-ready-times-with-powershell/&gt; wpa2a.script_load(); Categories: vmware, Виртуализация Tags: CPU Ready, PowerCLI, [...]

  8. [...] Examine VMware CPU Ready Times with Powershell Categories: Uncategorized Tags: Comments (0) Trackbacks (0) Leave a comment Trackback [...]

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

   
© 2012 PeetersOnline Suffusion theme by Sayontan Sinha