In an earlier post, see Hitchhiker’s Guide to Get-EsxTop – Part 1, I described my first experiences with the new Get-EsxTop cmdlet. While the use of the cmdlet is rather straightforward, the data it returns is not so easy to interprete. Luckily Carter intercepted a secret cable that allows us to actually use the data returned by the cmdlet.
The following is my first attempt to write a wrapper around the Get-EsxTop cmdlet. The idea is to have a script that produces statistical data similar to what resxtop produces.
The concept
The secret cable shows us how the data returned by Get-EsxTop has to be converted to resemble data we get from esxtop and resxtop.
Unfortunately the cable is a bit dated, and some of the counterfields from the cable are not present in the output from Get-EsxTop. And the other way around some of the counters and fields returned by Get-EsxTop are not described in the cable.
The CSV file from Carter’s post shows, besides the link to the Get-EsxTop counters and fields respectively in the PerfObjectType and PerfCounterName columns, the method how the data has to be interpreted in the DerivationMethod column.
For example, when the DerivationMethod column specifies “rate” for a specific field, it means that you will have to take the current value, substract the previous value and divide by the duration of the Get-EsxTop interval, which is btw 5 seconds. The value you get is a number/sec value. The NumOfSendPackets field in the NetPort counter group is such a metric. Applying the “rate” formula will give the average number of send packets per second during the measurement interval.
To use the spreadsheet in my script, I first had to update it with what is actually returned by Get-EsxTop. The following is the reviewed spreadsheet from Carter’s post.
Note that the cells marked in yellow are not present in the Get-EsxTop output, the cells marked in orange are not in the original spreadsheet.
The key concept for the function is the DerivationMethod column. This column indicates how the value is calculated.
With the name in the DerivationMethod column and a bit of reverse engineering, I was able to derive the following formulas.
In the following table I use the following variables:
- n: current sample
- n-1: previous sample
- ESX-interval: the length of the esxtop interval. This is currently 5 seconds
- 1E6: the time values are expressed in microseconds. To convert to seconds the values needs to be divided by 1E6
- Tx-n: the number of packets transmitted
- Rx-n: the number of packets received
DerivationMethod | Formula |
Sum | n – n-1 |
PercentLimit100
Percent PCPUUtil PCPUUsed |
(n – n-1) / ESX-interval / 1E6 * 100 |
PowerStatePercent | (n – n-1) / ESX-interval / 1E6 |
Rate
DiskLatency DiskAtsFailLatency DiskCloneFailLatency DiskCloneSuccLatency DiskZeroFailLatency DiskZeroSuccLatency |
(n – n-1) / ESX-interval |
RxDropRate | (n – n-1)/(Rx-n – Rx-n-1) / ESX-interval |
TxDropRate | (n – n-1)/(Tx-n – Tx-n-1) / ESX-interval |
RateByteToMb | (n – n-1) / ESX-Interval / ESX-interval / 1MB * 8 |
RateDevide1M | (n – n-1) / ESX-interval / ESX-interval / 1MB |
RateDevide1K | (n – n-1) / ESX-interval / ESX-interval / 1KB |
PageToMB | n * 4 / 1KB |
Devide100 | n / 100 |
Devide1K | n / 1KB |
Note that there quite a number of fields that do not have a DerivationMethod specified. I will try to complete these fields after further investigation.
The script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 |
#requires -version 2 #requires -pssnapin VMware.VimAutomation.Core -version 4.1 function Get-EsxTopValues{ <# .SYNOPSIS Retrieve statistical values from the esxtop engine .DESCRIPTION The function retrieves a defined number of statistical values from the esxtop engine. .NOTES Author: Luc Dekens .PARAMETER World The world for which the statistical values shall be collected. The default is to return all worlds. .PARAMETER Counter The performance counter(s) for which values will be returned. .PARAMETER Intervals The number of intervals to return. The default is 1 .PARAMETER Server Specify the vSphere servers from which you want to to retrieve the esxtop data. The default is to use all servers in $defaultVIServers .PARAMETER Delay The number of seconds to wait before the esxtop capture process starts .EXAMPLE PS> Get-EsxTopValues -World $vm.Name -Counter NetPort -Intervals 10 .EXAMPLE PS> Get-EsxTopValues -Intervals 5 -Counter "PCPU","LCPU" -Delay 300 .EXAMPLE PS> Get-EsxTopValues -Intervals 10 #> [CmdletBinding(ConfirmImpact="Low")] param( [AllowEmptyCollection()] [Alias("World")] [String[]]$Name, [parameter(Mandatory=$true)] [ValidateSet("Adapter","COS","CPUClient","CState","CStateInfo","HiddenWorld", "Interrupt","InterruptPerCPU","InterruptVector","LCPU","LCPUPower", "NetPort","NetPortSet","Nfs","NfsClient","NUMANode","Partition","Path","PCPU", "PMem","PNIC","Power","PState","PStateInfo","Sched","SchedGroup","SCSI", "SCSIDevice","Server","TState","TStateInfo","VCPU","VMem","VMNUMANodeMem", "Vscsi","VscsiDisk","VscsiGroup","WorldPerDev")] [string[]]$Counter, [int]$Intervals = 1, [VMware.VimAutomation.ViCore.Impl.V1.VIServerImpl[]]$Server, [int]$Delay ) begin{ function Update-CounterField{ param( [PSObject]$InputObject, [string]$FieldName, $FieldValue ) Add-Member -InputObject $InputObject -Name $FieldName -Value $FieldValue -MemberType NoteProperty $counterRow = $counterHash[$perfObj.Name + "-" + $field.Name] if($counterRow.ExportName){ Add-Member -InputObject $InputObject -MemberType AliasProperty ` -Name ($counterRow.ExportCategory + "\" + $counterRow.ExportName) -Value $FieldName } } function Update-CounterObject{ param( [PSObject]$InputObject, [string]$Counter, [string]$ServerName, [datetime]$Timestamp ) Add-Member -InputObject $InputObject -Name CounterName -Value $Counter -MemberType NoteProperty Add-Member -InputObject $InputObject -Name Timestamp -Value $Timestamp -MemberType NoteProperty Add-Member -InputObject $InputObject -Name Server -Value $ServerName -MemberType NoteProperty } } process{ # Time entry $entryTime = Get-Date # Are all Server(s) ESX(i) servers if(!$Server){ if((Get-PowerCLIConfiguration).DefaultVIServerMode -eq "Multiple"){ $Server = $defaultVIServers } else{ $Server = $defaultVIServer } } $Server = @($Server | where {"esx","embeddedEsx" -contains $_.ProductLine}) if($Server.Count -eq 0){ Write-Error "You need to be connected to 1 or more ESX or ESXi servers." Write-Error "As an alternative use the -Server parameter to select only ESX or ESXi servers" exit -1 } # Set up ESXCLI $esxcli = Get-EsxCli # Load the ESX counters info $ESXCounters1List = @" PerfObjectType;PerfCounterName;DisplayName;ExportCategory;ExportName;Description;RawDataType;DerivationMethod;RelatedObjType Adapter;AdapterName;ADAPTR;;;;String;; Adapter;IsValid;;;;;Boolean;; Adapter;IssueTimeInUsec;KAVG/cmd;Physical Disk Adapter;Average Kernel MilliSec/Command;DISK.COMMAND_LAT_KERNEL;Long;DiskLatency; Adapter;LayerTimeInUsec;DAVG/cmd;Physical Disk Adapter;Average Driver MilliSec/Command;DISK.COMMAND_LAT_DRIVER;Long;DiskLatency; Adapter;NumOfAborts;ABRTS/s;Physical Disk Adapter;Aborts/sec;DISK.ABORT_RATE;Long;Sum;Path Adapter;NumOfCommands;CMDS/s;Physical Disk Adapter;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency; Adapter;NumOfFailCommands;FCMDS/s;Physical Disk Adapter;Failed Commands/sec;DISK.FAIL_COMMAND;Long;Sum;Path Adapter;NumOfFailReadBytes;FMBRD/s;Physical Disk Adapter;Failed Bytes Read/sec;DISK.FAIL_READ_BPS;Long;Sum;Path Adapter;NumOfFailReads;FREAD/s;Physical Disk Adapter;Failed Reads/sec;DISK.FAIL_READ;Long;Sum;Path Adapter;NumOfFailReserves;FRESV/s;Physical Disk Adapter;Failed Reserves/sec;DISK.FAIL_RESERVE;Long;Sum;Path Adapter;NumOfFailWriteBytes;FMBWR/s;Physical Disk Adapter;Failed Bytes Written/sec;DISK.FAIL_WRITE_BPS;Long;Sum;Path Adapter;NumOfFailWrites;FWRITE/s;Physical Disk Adapter;Failed Writes/sec;DISK.FAIL_WRITE;Long;Sum;Path Adapter;NumOfPAECommands;PAECMD/s;Physical Disk Adapter;PAE Commands/sec;DISK.PAE_COMMAND;Long;Sum;Path Adapter;NumOfPAECopies;PAECP/s;Physical Disk Adapter;PAE Copies/sec;DISK.PAE_COPY;Long;Sum;Path Adapter;NumOfReadOps;READS/s;Physical Disk Adapter;Reads/sec;DISK.READ_RATE;Long;DiskLatency; Adapter;NumOfReservationConflicts;CONS/s;Physical Disk Adapter;Conflicts/sec;DISK.RESERVATION_CONFLICT;Long;Sum;Path Adapter;NumOfReserveOps;RESV/s;Physical Disk Adapter;Reserves/sec;DISK.RESERVATION_RATE;Long;Sum;Path Adapter;NumOfSplitCommands;SPLTCMD/s;Physical Disk Adapter;Split Commands/sec;DISK.SPLIT_COMMAND;Long;Sum;Path Adapter;NumOfSplitCopies;SPLTCP/s;Physical Disk Adapter;Split Copies/sec;DISK.SPLIT_COPY;Long;Sum;Path Adapter;NumOfTotalResets;RESETS/s;Physical Disk Adapter;Resets/sec;DISK.RESET_RATE;Long;Sum;Path Adapter;NumOfTotalResets;RESETS/s;Physical Disk Adapter;Resets/sec;DISK.RESET_RATE;Long;Sum;Path Adapter;NumOfWriteOps;WRITES/s;Physical Disk Adapter;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency; Adapter;QueueDepth;AQLEN;Physical Disk Adapter;Adapter Q Depth;DISK.ADAPTER_QUEUE_DEPTH;Integer;; Adapter;QueueTimeInUsec;QAVG/cmd;Physical Disk Adapter;Average Queue MilliSec/Command;DISK.COMMAND_LAT_QUEUE;Long;DiskLatency; Adapter;ReadByte;MBREAD/s;Physical Disk Adapter;MBytes Read/sec;DISK.READ_MBPS;Long;Sum;Path Adapter;ReadIssueTimeInUsec;KAVG/rd;Physical Disk Adapter;Average Kernel MilliSec/Read;DISK.READ_LAT_KERNEL;Long;DiskLatency; Adapter;ReadLayerTimeInUsec;DAVG/rd;Physical Disk Adapter;Average Driver MilliSec/Read;DISK.READ_LAT_DRIVER;Long;DiskLatency; Adapter;ReadQueueTimeInUsec;QAVG/rd;Physical Disk Adapter;Average Queue MilliSec/Read;DISK.READ_LAT_QUEUE;Long;DiskLatency; Adapter;ReadTotalTimeInUsec;GAVG/rd;Physical Disk Adapter;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency; Adapter;TotalTimeInUsec;GAVG/cmd;Physical Disk Adapter;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency; Adapter;WriteByte;MBWRTN/s;Physical Disk Adapter;MBytes Written/sec;DISK.WRITE_MBPS;Long;Sum;Path Adapter;WriteIssueTimeInUsec;KAVG/wr;Physical Disk Adapter;Average Kernel MilliSec/Write;DISK.WRITE_LAT_KERNEL;Long;DiskLatency Adapter;WriteLayerTimeInUsec;DAVG/wr;Physical Disk Adapter;Average Driver MilliSec/Write;DISK.WRITE_LAT_DRIVER;Long;DiskLatency Adapter;WriteQueueTimeInUsec;QAVG/wr;Physical Disk Adapter;Average Queue MilliSec/Write;DISK.WRITE_LAT_QUEUE;Long;DiskLatency Adapter;WriteTotalTimeInUsec;GAVG/wr;Physical Disk Adapter;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency COS;UserTimeInUsec;;;;;Integer;DiskLatency COS;NiceTimeInUsec;;;;;Integer;DiskLatency COS;SysTimeInUsec;;;;;Integer;DiskLatency COS;IdleTimeInUsec;;;;;Integer;DiskLatency COS;IOWaitTimeInUsec;;;;;Integer;DiskLatency COS;IRQTimeInUsec;;;;;Integer;DiskLatency COS;SoftIRQTimeInUsec;;;;;Integer;DiskLatency COS;NumOfCtxtSwitch;;;;;Long;Rate COS;FreeMemInKB;;;;;Integer;Devide1K COS;TotalSwapInKB;;;;;Long;Devide1K COS;FreeSwapInKB;;;;;Long;Devide1K COS;PagesSwappedIn;;;;;Integer;Rate COS;PagesSwappedOut;;;;;Integer;Rate; CPUClient;CPUClientID;;;;;Integer;; CPUClient;IsValid;;;;;Boolean;; CPUClient;NumOfVCPUs;;;;;Integer;; CState;ResidentTimeInUsec;%C;PCPU Power State;%C-State;POWER.PCPU_CSTATE;Long;PowerStatePercent; CState;StateID;;;;;Integer;; CStateAvg;ResidentTimeInUsec;%C;PCPU Power State;%C-State Average;POWER.PCPU_CSTATE;Long;Average;CState CStateAvg;StateID;;;;;Integer;; CStateInfo;StateID;;;;;Integer;; HiddenWorld;HiddenWorldID;;;;;Integer;; HiddenWorld;HiddenWorldName;;;;;String;; Interrupt;NumOfInterruptVectors;;;;;Integer;; InterruptPerCPU;Count;COUNT/s;Interrupt Vector;Interrupts/second;INTERRUPT.RATE;Long;Rate; InterruptPerCPU;CPUID;;;;;Integer;; InterruptPerCPU;SysTimeInUsec;TIME/int;Interrupt Vector;Processing Time MicroSec/Interrupt;INTERRUPT.TIME;Long;InterruptTime; InterruptVector;Count;COUNT/s;Interrupt Vector;Total Interrupts/second;INTERRUPT.RATE;Long;Sum;InterruptPerCPU InterruptVector;Devices;DEVICES;;;INTERRUPT.DEVICE;String;; InterruptVector;SysTimeInUsec;TIME/int;Interrupt Vector;Total Processing Time MicroSec/Interrupt;INTERRUPT.TIME;Long;AvgInterruptTime;InterruptPerCPU InterruptVector;VectorID;VECTOR;;;INTERRUPT.VECTOR;Long;; InterruptVector;NumOfCPUs;;;;;Integer;; LCPU;BusyWaitTimeInUsec;;;;;Long;; LCPU;CoreHaltTimeInUsec;CORE UTIL%;Physical Cpu;% Core Util Time;PCPU.CORE_UTIL;Long;PCPUUtil; LCPU;ElapsedTimeInUsec;Uptime (?);;;;Long;; LCPU;HaltTimeInUsec;PCPU UTIL%;Physical Cpu;% Util Time;PCPU.UTIL;Long;PCPUUtil; LCPU;LCPUID;ID;;;;Integer;; LCPU;UsedTimeInUsec;PCPU USED%;Physical Cpu;% Processor Time;PCPU.USED;Long;PCPUUsed; LCPU;CPUHz;;;;;Long;; LCPUPower;LCPUID;;;;;Integer;; LCPUPower;NumOfCStates;;;;;Integer;; LCPUPower;NumOfPStates;;;;;Integer;; LCPUPower;NumOfTStates;;;;;Integer;; Net;NumOfPortsets;;;;;Integer;; Net;NumOfPNICs;;;;;Integer; NetPort;ClientName;USED-BY;;;;String; NetPort;IsFullDuplex;FDUPLX;Network Port;Full Duplex?;NET.PNIC_FULL_DUPLEX;Boolean; NetPort;IsLinkUp;UP;Network Port;Link Up?;;Boolean; NetPort;IsUplink;UPLINK;;;;Boolean; NetPort;NumOfActions;ACTN/s;Network Port;Actions Posted/sec;NET.ACTION;Long;Rate NetPort;NumOfDroppedRecv;%DRPRX;Network Port;% Received Packets Dropped;NET.DROP_RX;Long;RxDropRate NetPort;NumOfDroppedSend;%DRPTX;Network Port;% Outbound Packets Dropped;NET.DROP_TX;Long;TxDropRate NetPort;NumOfRecvBytes;MbRX/s;Network Port;MBits Received/sec;NET.MB_RX;Long;RateByteToMb NetPort;NumOfRecvPackets;PKTRX/s;Network Port;Packets Received/sec;NET.PACKET_RX;Long;Rate NetPort;NumOfSendBytes;MbTX/s;Network Port;MBits Transmitted/sec;NET.MB_TX;Long;RateByteToMb NetPort;NumOfSendPackets;PKTTX/s;Network Port;Packets Transmitted/sec;NET.PACKET_TX;Long;Rate NetPort;PktsRxBroadcast;PKTRXBRD/s;Network Port;Broadcast Packets Received/sec;NET.BROADCAST_RX;Long;Rate NetPort;PktsRxMulticast;PKTRXMUL/s;Network Port;Multicast Packets Received/sec;NET.MULTICAST_RX;Long;Rate NetPort;PktsTxBroadcast;PKTTXBRD/s;Network Port;Broadcast Packets Transmitted/sec;NET.BROADCAST_TX;Long;Rate NetPort;PktsTxMulticast;PKTTXMUL/s;Network Port;Multicast Packets Transmitted/sec;NET.MULTICAST_TX;Long;Rate NetPort;PortID;PORT-ID;;;;Integer; NetPort;PortsetName;DNAME;;;;String; NetPort;SpeedInMbps;SPEED;Network Port;Link Speed (Mb/s);NET.PNIC_UPLINK_SPEED;Integer; NetPort;TeamUplink;TEAM-PNIC;;;;String; NetPort;WorldLeader;WORLD;;;;Integer; NetPort;IsValid;;;;;Boolean; NetPortSet;PortsetName;;;;;String; NetPortSet;IsValid;;;;;Boolean; NetPortSet;NumOfPorts;;;;;String; Nfs;NumOfNfsClients;;;;;Integer; NfsClient;CommandTimeInUsec;GAVG/cmd;Physical Disk NFS Volume;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency NfsClient;MountName;DEVICE;;;;String; NfsClient;NumOfAborts;ABRTS/s;Physical Disk NFS Volume;Aborts/sec;DISK.ABORT_RATE;Long;Rate NfsClient;NumOfActiveCmds;ACTV;Physical Disk NFS Volume;Active Commands;DISK.QUEUE_ACTIVE;Long; NfsClient;NumOfCommands;READS/s;Physical Disk NFS Volume;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency NfsClient;NumOfReads;READS/s;Physical Disk NFS Volume;Reads/sec;DISK.READ_RATE;Long;DiskLatency NfsClient;NumOfWrites;WRITES/s;Physical Disk NFS Volume;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency NfsClient;ReadByte;MBREAD/s;Physical Disk NFS Volume;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M NfsClient;ReadTimeInUsec;GAVG/rd;Physical Disk NFS Volume;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency NfsClient;WriteByte;MBWRTN/s;Physical Disk NFS Volume;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M NfsClient;WriteTimeInUsec;GAVG/wr;Physical Disk NFS Volume;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency NUMANode;FreeInPages;NUMA free;Numa Node;Free MBytes;NUMANODE.FREE;Integer;PageToMB NUMANode;NodeID;ID;;;;Integer; NUMANode;TotalInPages;NUMA total;Numa Node;Total MBytes;NUMANODE.TOTAL;Integer;PageToMB Partition;IssueTimeInUsec;KAVG/cmd;Physical Disk Partition;Average Kernel MilliSec/Command;DISK.COMMAND_LAT_KERNEL;Long;DiskLatency Partition;LayerTimeInUsec;DAVG/cmd;Physical Disk Partition;Average Driver MilliSec/Command;DISK.COMMAND_LAT_DRIVER;Long;DiskLatency Partition;NumOfCommands;CMDS/s;Physical Disk Partition;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency Partition;NumOfFailCommands;FCMDS/s;Physical Disk Partition;Failed Commands/sec;DISK.FAIL_COMMAND;Long;Rate Partition;NumOfFailReadBytes;FMBRD/s;Physical Disk Partition;Failed Bytes Read/sec;DISK.FAIL_READ_BPS;Long;Rate Partition;NumOfFailReads;FREAD/s;Physical Disk Partition;Failed Reads/sec;DISK.FAIL_READ;Long;Rate Partition;NumOfFailReserves;FRESV/s;Physical Disk Partition;Failed Reserves/sec;DISK.FAIL_RESERVE;Long;Rate Partition;NumOfFailWriteBytes;FMBWR/s;Physical Disk Partition;Failed Bytes Written/sec;DISK.FAIL_WRITE_BPS;Long;Rate Partition;NumOfFailWrites;FWRITE/s;Physical Disk Partition;Failed Writes/sec;DISK.FAIL_WRITE;Long;Rate Partition;NumOfReadOps;READS/s;Physical Disk Partition;Reads/sec;DISK.READ_RATE;Long;DiskLatency Partition;NumOfReservationConflicts;CONS/s;Physical Disk Partition;Conflicts/sec;DISK.RESERVATION_CONFLICT;Long;Rate Partition;NumOfReserveOps;RESV/s;Physical Disk Partition;Reserves/sec;DISK.RESERVATION_RATE;Long;Rate Partition;NumOfWriteOps;WRITES/s;Physical Disk Partition;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency Partition;PartitionID;PARTITION;;;;Integer; Partition;QueueTimeInUsec;QAVG/cmd;Physical Disk Partition;Average Queue MilliSec/Command;DISK.COMMAND_LAT_QUEUE;Long;DiskLatency Partition;ReadByte;MBREAD/s;Physical Disk Partition;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M Partition;ReadIssueTimeInUsec;KAVG/rd;Physical Disk Partition;Average Kernel MilliSec/Read;DISK.READ_LAT_KERNEL;Long;DiskLatency Partition;ReadLayerTimeInUsec;DAVG/rd;Physical Disk Partition;Average Driver MilliSec/Read;DISK.READ_LAT_DRIVER;Long;DiskLatency Partition;ReadQueueTimeInUsec;QAVG/rd;Physical Disk Partition;Average Queue MilliSec/Read;DISK.READ_LAT_QUEUE;Long;DiskLatency Partition;ReadTotalTimeInUsec;GAVG/rd;Physical Disk Partition;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency Partition;TotalTimeInUsec;GAVG/cmd;Physical Disk Partition;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency Partition;WriteByte;MBWRTN/s;Physical Disk Partition;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M Partition;WriteIssueTimeInUsec;KAVG/wr;Physical Disk Partition;Average Kernel MilliSec/Write;DISK.WRITE_LAT_KERNEL;Long;DiskLatency Partition;WriteLayerTimeInUsec;DAVG/wr;Physical Disk Partition;Average Driver MilliSec/Write;DISK.WRITE_LAT_DRIVER;Long;DiskLatency Partition;WriteQueueTimeInUsec;QAVG/wr;Physical Disk Partition;Average Queue MilliSec/Write;DISK.WRITE_LAT_QUEUE;Long;DiskLatency Partition;WriteTotalTimeInUsec;GAVG/wr;Physical Disk Partition;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency Partition;IsValid;;;;;Boolean; Partition;NumOfBlocksRead;;;;;Long;Rate Partition;NumOfBlocksWritten;;;;;Long;Rate Path;IssueTimeInUsec;KAVG/cmd;Physical Disk Path;Average Kernel MilliSec/Command;DISK.COMMAND_LAT_KERNEL;Long;DiskLatency Path;LayerTimeInUsec;DAVG/cmd;Physical Disk Path;Average Driver MilliSec/Command;DISK.COMMAND_LAT_DRIVER;Long;DiskLatency Path;NumOfAborts;ABRTS/s;Physical Disk Path;Aborts/sec;DISK.ABORT_RATE;Long;Rate Path;NumOfActiveCmds;ACTV;Physical Disk Path;Active Commands;DISK.QUEUE_ACTIVE;Integer; Path;NumOfCommands;CMDS/s;Physical Disk Path;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency Path;NumOfFailCommands;FCMDS/s;Physical Disk Path;Failed Commands/sec;DISK.FAIL_COMMAND;Long;Rate Path;NumOfFailReadBytes;FMBRD/s;Physical Disk Path;Failed Bytes Read/sec;DISK.FAIL_READ_BPS;Long;Rate Path;NumOfFailReads;FREAD/s;Physical Disk Path;Failed Reads/sec;DISK.FAIL_READ;Long;Rate Path;NumOfFailReserves;FRESV/s;Physical Disk Path;Failed Reserves/sec;DISK.FAIL_RESERVE;Long;Rate Path;NumOfFailWriteBytes;FMBWR/s;Physical Disk Path;Failed Bytes Written/sec;DISK.FAIL_WRITE_BPS;Long;Rate Path;NumOfFailWrites;FWRITE/s;Physical Disk Path;Failed Writes/sec;DISK.FAIL_WRITE;Long;Rate Path;NumOfPAECommands;PAECMD/s;Physical Disk Path;PAE Commands/sec;DISK.PAE_COMMAND;Long;Rate Path;NumOfPAECopies;PAECP/s;Physical Disk Path;PAE Copies/sec;DISK.PAE_COPY;Long;Rate Path;NumOfQueuedCmds;QUED;Physical Disk Path;Queued Commands;DISK.QUEUE_QUEUED;Integer; Path;NumOfReadOps;READS/s;Physical Disk Path;Reads/sec;DISK.READ_RATE;Long;DiskLatency Path;NumOfReservationConflicts;CONS/s;Physical Disk Path;Conflicts/sec;DISK.RESERVATION_CONFLICT;Long;Rate Path;NumOfReserveOps;RESV/s;Physical Disk Path;Reserves/sec;DISK.RESERVATION_RATE;Long;Rate Path;NumOfSplitCommands;SPLTCMD/s;Physical Disk Path;Split Commands/sec;DISK.SPLIT_COMMAND;Long;Rate Path;NumOfSplitCopies;SPLTCP/s;Physical Disk Path;Split Copies/sec;DISK.SPLIT_COPY;Long;Rate Path;NumOfTotalResets;RESETS/s;Physical Disk Path;Resets/sec;DISK.RESET_RATE;Long;Rate Path;NumOfWriteOps;WRITES/s;Physical Disk Path;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency Path;PathName;PATH;;;;String; Path;QueueTimeInUsec;QAVG/cmd;Physical Disk Path;Average Queue MilliSec/Command;DISK.COMMAND_LAT_QUEUE;Long;DiskLatency Path;ReadByte;MBREAD/s;Physical Disk Path;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M Path;ReadIssueTimeInUsec;KAVG/rd;Physical Disk Path;Average Kernel MilliSec/Read;DISK.READ_LAT_KERNEL;Long;DiskLatency Path;ReadLayerTimeInUsec;DAVG/rd;Physical Disk Path;Average Driver MilliSec/Read;DISK.READ_LAT_DRIVER;Long;DiskLatency Path;ReadQueueTimeInUsec;QAVG/rd;Physical Disk Path;Average Queue MilliSec/Read;DISK.READ_LAT_QUEUE;Long;DiskLatency Path;ReadTotalTimeInUsec;GAVG/rd;Physical Disk Path;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency Path;TotalTimeInUsec;GAVG/cmd;Physical Disk Path;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency Path;WriteByte;MBWRTN/s;Physical Disk Path;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M Path;WriteIssueTimeInUsec;KAVG/wr;Physical Disk Path;Average Kernel MilliSec/Write;DISK.WRITE_LAT_KERNEL;Long;DiskLatency Path;WriteLayerTimeInUsec;DAVG/wr;Physical Disk Path;Average Driver MilliSec/Write;DISK.WRITE_LAT_DRIVER;Long;DiskLatency Path;WriteQueueTimeInUsec;QAVG/wr;Physical Disk Path;Average Queue MilliSec/Write;DISK.WRITE_LAT_QUEUE;Long;DiskLatency Path;WriteTotalTimeInUsec;GAVG/wr;Physical Disk Path;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency Path;DeviceName;;;;;String; Path;IsValid;;;;;Boolean; Path;NumOfBlocksRead;;;;;Long;Rate Path;NumOfBlocksWritten;;;;;Long;Rate Path;NumOfVirtResets;;;;;Long;Rate Path;NumOfLunResets;;;;;Long;Rate Path;NumOfDeviceResets;;;;;Long;Rate Path;NumOfBusResets;;;;;Long;Rate Path;NumOfTotalResets;;;;;Long;Rate Path;NumOfAlignSplits;;;;;Long;Rate; Path;NumOfPAESplits;;;;;Long;Rate; Path;NumOfForcedCopySplits;;;;;Long;Rate; PCPU;CoreHaltTimeInUsec;CORE UTIL%;Physical Cpu(_Total);% Core Util Time;PCPU.CORE_UTIL;Long;Average;LCPU PCPU;HaltTimeInUsec;PCPU UTIL%;Physical Cpu(_Total);% Util Time;PCPU.UTIL;Long;Average;LCPU PCPU;NumOfCores;#Cores;;;;Integer;; PCPU;NumOfLCPUs;#PCPUs;;;PCPU;Integer;; PCPU;NumOfPackages;#Packages;;;;Integer;; PCPU;UsedTimeInUsec;PCPU USED%;Physical Cpu(_Total);% Processor Time;PCPU.USED;Long;Average;LCPU PMem;COSMemInKB;PMEM cos;Memory;Console MBytes;PMEM.COS;Integer;Devide1K; PMem;FreeMemInKB;PMEM free;Memory;Free MBytes;PMEM.FREE;Integer;Devide1K; PMem;KernelManagedInKB;PMEM vmk;Memory;Kernel MBytes;PMEM.KERNEL;Integer;PMemKernelUsed; PMem;MemCtlCurInKB;MEMCTL curr;Memory;Memctl Current MBytes;PMEM.BALLOON_CURRENT;Integer;Devide1K; PMem;MemCtlMaxInKB;MEMCTL max;Memory;Memctl Max MBytes;PMEM.BALLOON_MAX;Integer;Devide1K; PMem;MemCtlTgtInKB;MEMCTL target;Memory;Memctl Target MBytes;PMEM.BALLOON_TARGET;Integer;Devide1K; PMem;MemOvercommitInPct15Min;MEM overcommit avg (15m);Memory;Memory Overcommit (15 Minute Avg);PMEM.OVERCOMMIT_15MIN;Integer;Devide100; PMem;MemOvercommitInPct1Min;MEM overcommit avg (1m);Memory;Memory Overcommit (1 Minute Avg);PMEM.OVERCOMMIT_1MIN;Integer;Devide100; PMem;MemOvercommitInPct5Min;MEM overcommit avg (5m);Memory;Memory Overcommit (5 Minute Avg);PMEM.OVERCOMMIT_5MIN;Integer;Devide100; PMem;NonkernelUsedInKB;PMEM other;Memory;NonKernel MBytes;PMEM.NONKERNEL;Integer;Devide1K; PMem;NumOfNUMANodes;#Nodes;;;NUMANODE;Integer;; PMem;PhysicalMemInKB;PMEM total;Memory;Machine MBytes;PMEM.TOTAL;Integer;Devide1K; PMem;PShareCommonInKB;PSHARE common;Memory;PShare Common MBytes;PMEM.SHARE_COMMON;Integer;Devide1K; PMem;PShareSavedInKB;PSHARE saving;Memory;PShare Savings MBytes;PMEM.SHARE_SAVED;Integer;PShareSaved;PMem PMem;PShareSharedInKB;PSHARE shared;Memory;PShare Shared MBytes;PMEM.SHARE_SHARED;Integer;Devide1K; PMem;SchedAvailInKB;VMKMEM ursvd;Memory;Kernel Unreserved MBytes;PMEM.UNRESERVED;Integer;Devide1K; PMem;SchedManagedInKB;VMKMEM managed;Memory;Kernel Managed MBytes;PMEM.MANAGED;Integer;Devide1K; PMem;SchedMinFreeInKB;VMKMEM minfree;Memory;Kernel MinFree MBytes;PMEM.MINFREE;Integer;Devide1K; PMem;SchedReservedInKB;VMKMEM rsvd;Memory;Kernel Reserved MBytes;PMEM.RESERVED;Integer;Devide1K; PMem;SchedState;Memory State;Memory;Kernel State;PMEM.STATE;Integer;; PMem;SchedStateStr;VMKMEM state;;;PMEM.STATE;String;; PMem;SwapReadInKB;SWAP r/s;Memory;Swap MBytes Read/sec;PMEM.SWAP_READ;Integer;RateDevide1K; PMem;SwapTgtInKB;SWAP rclmtgt;Memory;Swap Target MBytes;PMEM.SWAP_TARGET;Integer;Devide1K; PMem;SwapUsedInKB;SWAP curr;Memory;Swap Used MBytes;PMEM.SWAP_CURRENT;Integer;Devide1K PMem;SwapWrtnInKB;SWAP w/s;Memory;Swap MBytes Write/sec;PMEM.SWAP_WRITE;Integer;RateDevide1K PMem;ZippedInKB;ZIP zipped;Memory;Total Compressed MBytes;PMEM.ZIP_ZIPPED;Integer;Devide1K PMem;ZipSavedInKB;ZIP saved;Memory;Total Saved By Compression MBytes;PMEM.ZIP_SAVED;Integer;Devide1K PNIC;IsFullDuplex;FDUPLX;Physical Nic;Full Duplex?;NET.PNIC_FULL_DUPLEX;Boolean; PNIC;IsLinkUp;UP;Physical Nic;Link Up?;;Boolean; PNIC;PNICName;NAME;;;;String; PNIC;SpeedInMbps;SPEED;Physical Nic;Link Speed (Mb/s);NET.PNIC_UPLINK_SPEED;Integer; PNIC;UplinkPort;PORT-ID;;;;Integer; PNIC;IsValid;;;;;Boolean; Power;UsageCapInWatt;Power Cap;Power;Power Usage Cap Watts;POWER.USAGE_CAP;Integer; Power;UsageNowInWatt;Power Usage;Power;Power Usage Now Watts;POWER.USAGE;Integer; Power;NumOfLCPUs;;;;;Integer; PState;FrequencyInMhz;PMHZ;PCPU Power State;P-State MHZ;POWER.PCPU_PSTATE_FREQ;Integer; PState;ResidentTimeInUsec;%P;PCPU Power State;%P-State;POWER.PCPU_PSTATE;Long;PowerStatePercent PState;StateID;;;;;Integer; PStateAvg;ResidentTimeInUsec;%P;PCPU Power State;%P-State Average;POWER.PCPU_PSTATE;Long;Average;PState PStateAvg;StateID;;;;;Integer;; PStateInfo;StateID;;;;;Integer;; Sched;HostCPUInPct15Min;CPU load 15-minute average;Physical Cpu Load;Cpu Load (15 Minute Avg);PCPU.LOAD;Integer;Devide100; Sched;HostCPUInPct1Min;CPU load 1-minute average;Physical Cpu Load;Cpu Load (1 Minute Avg);PCPU.LOAD;Integer;Devide100; Sched;HostCPUInPct5Min;CPU load 5-minute average;Physical Cpu Load;Cpu Load (5 Minute Avg);PCPU.LOAD;Integer;Devide100; Sched;NumOfSchedGroups;;;;;Integer;; SchedGroup;CoStopTimeInUsec;%CSTP;Group Cpu;% CoStop;VCPU.COSTOP;Long;Sum;VCPU SchedGroup;CPUAllocMax;AMAX;Group Cpu;Alloc Max;VCPU.ALLOC_MAX;Integer;; SchedGroup;CPUAllocMin;AMIN;Group Cpu;Alloc Min;VCPU.ALLOC_MIN;Integer;; SchedGroup;CPUAllocMinLimit;AMLMT;Group Cpu;Alloc Min Limited;VCPU.ALLOC_MINLIMT;Integer;; SchedGroup;CPUAllocShares;ASHRS;Group Cpu;Alloc Shares;VCPU.ALLOC_SHARES;Integer;; SchedGroup;CPUAllocUnitsStr;AUNITS;;;;String;; SchedGroup;CpuDemandInPct;%DMD;Group Cpu;% Demand;VCPU.DEMAND;Integer;Sum;VCPU SchedGroup;CpuLatencyInUsec;%LAT_C;Group Cpu;% CPU Latency;VCPU.CPU_LATENCY;Long;Sum;VCPU SchedGroup;EffectiveMin;EMIN;Group Cpu;Effective Min (MHz);VCPU.EFFECTIVE_MIN;Integer;Sum;VCPU SchedGroup;GroupID;GID;;;;Integer;; SchedGroup;GroupLeaderID;LWID;;;;Integer;; SchedGroup;GroupName;NAME;;;;String;; SchedGroup;HasMemClient;;;;;Boolean;; SchedGroup;HomeNodeOld;NHN(Deprecated);Group Memory;Numa Home Node;VMEM.NUMA_HOMENODE;Long;; SchedGroup;HomeNodes;NHN;Group Memory;Numa Home Nodes;VMEM.NUMA_HOMENODE;Long;; SchedGroup;IdleTimeInUsec;%IDLE;Group Cpu;% Idle;VCPU.IDLE;Long;Sum;VCPU SchedGroup;IsVM;VM;;;;Boolean;; SchedGroup;LocalityPct;N%L;Group Memory;Numa % Local;VMEM.NUMA_LOCAL_PCT;Integer;; SchedGroup;LocalMemoryInKB;NLMEM;Group Memory;Numa Local Memory MBytes;VMEM.NUMA_LOCAL;Integer;Devide1K; SchedGroup;MaxLimitedTimeInUsec;%MLMTD;Group Cpu;% Max Limited;VCPU.MAX_LIMITED;Long;Sum;VCPU SchedGroup;MemAllocMax;AMAX;Group Memory;Alloc Max;VMEM.ALLOC_MAX;Integer;; SchedGroup;MemAllocMin;AMIN;Group Memory;Alloc Min;VMEM.ALLOC_MIN;Integer;; SchedGroup;MemAllocMinLimit;AMLMT;Group Memory;Alloc Min Limited;VMEM.ALLOC_MINLIMT;Integer;; SchedGroup;MemAllocShares;ASHRS;Group Memory;Alloc Shares;VMEM.ALLOC_SHARES;Integer;; SchedGroup;MemAllocUnitsStr;AUNITS;;;;String;; SchedGroup;MemLatencyInUsec;%LAT_M;Group Cpu;% Memory Latency;VCPU.MEM_LATENCY;Long;Sum;VCPU SchedGroup;NumOfInterCoreMigrations;PMIG/s;Group Cpu;Processor Migrations/sec;VCPU.MIGRATION_INTER_CORE;Integer;Sum;VCPU SchedGroup;NumOfMigrationsOnWakeup;WMIGI/s;Group Cpu;Wakeup Migrate Idle/sec;VCPU.MIGRATION_ON_WAKEUP;Integer;Sum;VCPU SchedGroup;NumOfNumaMigrations;NMIG;Group Memory;Numa Rebalance Count Delta;VMEM.NUMA_MIG;Long;Delta; SchedGroup;NumOfQuantumExpires;QEXP/s;Group Cpu;Quantum Expires/sec;VCPU.QUANTUM_EXPIRE;Integer;Sum;VCPU SchedGroup;NumOfTotalMigrations;MIG/s;Group Cpu;Migrates/sec;VCPU.TOTAL_MIGRATION;Integer;Sum;VCPU SchedGroup;NumOfWakeups;WAKE/s;Group Cpu;Wakeups/sec;VCPU.WAKEUP;Integer;Sum;VCPU SchedGroup;NumOfWorlds;NWLD;Group Cpu;Members;;Integer;Count;VCPU SchedGroup;NumOfWorldSwitches;SWTCH/s;Group Cpu;Switches/sec;VCPU.WORLD_SWITCH;Integer;Sum;VCPU SchedGroup;PowerInWatt;POWER;Group Cpu;Power Usage Watts;VM.POWER;Long;; SchedGroup;ReadyTimeInUsec;%RDY;Group Cpu;% Ready;VCPU.READY;Long;Sum;VCPU SchedGroup;RemoteMemoryInKB;NRMEM;Group Memory;Numa Remote Memory MBytes;VMEM.NUMA_REMOTE;Integer;Devide1K; SchedGroup;RunTimeInUsec;%RUN;Group Cpu;% Run;VCPU.RUN;Long;Sum;VCPU SchedGroup;SwapWaitTimeInUsec;%SWPWT;Group Cpu;% Swap Wait;VCPU.SWAP_WAIT;Long;Sum;VCPU SchedGroup;SysOverlapTimeInUsec;%OVRLP;Group Cpu;% Overlap;VCPU.SYS_OVERLAP;Long;Sum;VCPU SchedGroup;SysTimeInUsec;%SYS;Group Cpu;% System;VCPU.SYS;Long;Sum;VCPU SchedGroup;TimerRate;TIMER/s;Group Cpu;Timers/sec;VM.TIMER_RATE;Float;; SchedGroup;TotalWaitTimeInUsec;%WAIT;Group Cpu;% Wait;VCPU.WAIT;Long;Sum;VCPU SchedGroup;UsedTimeInUsec;%USED;Group Cpu;% Used;VCPU.USED;Long;Sum;VCPU SchedGroup;VMName;VMNAME;;;;String;; SchedGroup;IsValid;;;;;Boolean;; SchedGroup;TimerPeriod;;;;;Integer;; SchedGroup;CPUAllocUnits;;;;;String;; SchedGroup;MemAllocUnits;;;;;String;; SchedGroup;IsNUMAValid;;;;;Boolean;; SchedGroup;NumOfBalanceMigrations;;;;;Integer;; SchedGroup;NumOfLocalitySwap;;;;;Integer;; SchedGroup;NumOfLoadSwap;;;;;Integer;; SchedGroup;NumOfCPUClients;;;;;Integer;; SchedGroup;NumOfHiddenWorlds;;;;;Integer;; SchedGroup;NumOfNUMANodes;;;;;Integer;; SchedGroup;HasMemClient;;;;;Boolean;; SCSI;DurationInUsec;SCSI stats: usec/cmd;Physical Disk;SCSI Reservation Duration usec/Command;SCSI.RESERVATION_DURATION;Long;Rate SCSI;NumOfConflicts;SCSI stats: conflicts/sec;Physical Disk;SCSI Conflicts/sec;SCSI.CONFLICTS_RATE;Long;Rate SCSI;NumOfReservations;SCSI stats: resv/sec;Physical Disk;SCSI Reservation/sec;SCSI.RESERVATION_RATE;Long;Rate SCSI;VALUEMISSING;SCSI stats: queue depth;Physical Disk;Queue Depth;DISK.WORLD_QUEUE_DEPTH;Long; SCSI;ConfigNumOfOutstandingRequests;;;;;Integer;Rate SCSI;NumOfAdapters;;;;;Integer; SCSI;NumOfDevices;;;;;Integer; SCSI;NumOfPaths;;;;;Integer; SCSIDevice;AtsFailureTimeInUsec;AAVG/f;Physical Disk SCSI Device;Average Failure Latency ms/ATS;DISK.VAAI_LAT_ATS_FAIL;Long;DiskAtsFailLatency SCSIDevice;AtsSuccessTimeInUsec;AAVG/suc;Physical Disk SCSI Device;Average Success Latency ms/ATS;DISK.VAAI_LAT_ATS_SUCC;Long;DiskAtsSuccLatency SCSIDevice;BlockSizeInBytes;BLKSZ;;;DISK.BLOCK_SIZE;Integer; SCSIDevice;CloneFailureTimeInUsec;CAVG/f;Physical Disk SCSI Device;Average Failure Latency ms/Clone;DISK.VAAI_LAT_CLONE_FAIL;Long;DiskCloneFailLatency SCSIDevice;CloneReadByte;MBC_RD/s;Physical Disk SCSI Device;MBytes CReads/sec;DISK.VAAI_CLONE_READ_MBPS;Long;RateDevide1M SCSIDevice;CloneSuccessTimeInUsec;CAVG/suc;Physical Disk SCSI Device;Average Success Latency ms/Clone;DISK.VAAI_LAT_CLONE_SUCC;Long;DiskCloneSuccLatency SCSIDevice;CloneWriteByte;MBC_WR/s;Physical Disk SCSI Device;MBytes CWrites/sec;DISK.VAAI_CLONE_WRITE_MBPS;Long;RateDevide1M SCSIDevice;DeviceName;DEVICE;;;;String; SCSIDevice;IssueTimeInUsec;KAVG/cmd;Physical Disk SCSI Device;Average Kernel MilliSec/Command;DISK.COMMAND_LAT_KERNEL;Long;DiskLatency SCSIDevice;LayerTimeInUsec;DAVG/cmd;Physical Disk SCSI Device;Average Driver MilliSec/Command;DISK.COMMAND_LAT_DRIVER;Long;DiskLatency SCSIDevice;NumOfAborts;ABRTS/s;Physical Disk SCSI Device;Aborts/sec;DISK.ABORT_RATE;Long;Rate SCSIDevice;NumOfActiveCommands;ACTV;Physical Disk SCSI Device;Active Commands;DISK.QUEUE_ACTIVE;Integer; SCSIDevice;NumOfAtsOps;ATS;Physical Disk SCSI Device;ATS;DISK.VAAI_ATS;Long; SCSIDevice;NumOfBlocks;NUMBLKS;;;DISK.NUM_BLOCKS;Integer; SCSIDevice;NumOfCloneReadOps;CLONE_RD;Physical Disk SCSI Device;CReads;DISK.VAAI_CLONE_READ;Long; SCSIDevice;NumOfCloneWriteOps;CLONE_WR;Physical Disk SCSI Device;CWrites;DISK.VAAI_CLONE_WRITE;Long; SCSIDevice;NumOfCommands;CMDS/s;Physical Disk SCSI Device;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency SCSIDevice;NumOfFailCommands;FCMDS/s;Physical Disk SCSI Device;Failed Commands/sec;DISK.FAIL_COMMAND;Long;Rate SCSIDevice;NumOfFailedAtsOps;ATSF;Physical Disk SCSI Device;ATS Failed;DISK.VAAI_ATS_FAIL;Long; SCSIDevice;NumOfFailedCloneOps;CLONE_F;Physical Disk SCSI Device;CFailed;DISK.VAAI_CLONE_FAIL;Long; SCSIDevice;NumOfFailedZeroOps;ZERO_F;Physical Disk SCSI Device;Zeros Failed;DISK.VAAI_ZERO_FAIL;Long; SCSIDevice;NumOfFailReadBytes;FMBRD/s;Physical Disk SCSI Device;Failed Bytes Read/sec;DISK.FAIL_READ_BPS;Long;Rate SCSIDevice;NumOfFailReads;FREAD/s;Physical Disk SCSI Device;Failed Reads/sec;DISK.FAIL_READ;Long;Rate SCSIDevice;NumOfFailReserves;FRESV/s;Physical Disk SCSI Device;Failed Reserves/sec;DISK.FAIL_RESERVE;Long;Rate SCSIDevice;NumOfFailWriteBytes;FMBWR/s;Physical Disk SCSI Device;Failed Bytes Written/sec;DISK.FAIL_WRITE_BPS;Long;Rate SCSIDevice;NumOfFailWrites;FWRITE/s;Physical Disk SCSI Device;Failed Writes/sec;DISK.FAIL_WRITE;Long;Rate SCSIDevice;NumOfQueuedCommands;QUED;Physical Disk SCSI Device;Queued Commands;DISK.QUEUE_QUEUED;Integer; SCSIDevice;NumOfReadOps;READS/s;Physical Disk SCSI Device;Reads/sec;DISK.READ_RATE;Long;DiskLatency SCSIDevice;NumOfReservationConflicts;CONS/s;Physical Disk SCSI Device;Conflicts/sec;DISK.RESERVATION_CONFLICT;Long;Rate SCSIDevice;NumOfReserveOps;RESV/s;Physical Disk SCSI Device;Reserves/sec;DISK.RESERVATION_RATE;Long;Rate SCSIDevice;NumOfTotalResets;RESETS/s;Physical Disk SCSI Device;Resets/sec;DISK.RESET_RATE;Long;Rate SCSIDevice;NumOfWriteOps;WRITES/s;Physical Disk SCSI Device;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency SCSIDevice;NumOfZeroOps;ZERO;Physical Disk SCSI Device;Zeros;DISK.VAAI_ZERO;Long; SCSIDevice;QueueDepth;DQLEN;Physical Disk SCSI Device;Device Q Depth;DISK.DEVICE_QUEUE_DEPTH;Integer; SCSIDevice;QueueLoad;LOAD;Physical Disk SCSI Device;Load;DISK.QUEUE_LOAD;Double; SCSIDevice;QueueTimeInUsec;QAVG/cmd;Physical Disk SCSI Device;Average Queue MilliSec/Command;DISK.COMMAND_LAT_QUEUE;Long;DiskLatency SCSIDevice;QueueUsed;%USD;Physical Disk SCSI Device;% Used;DISK.QUEUE_USED;Double; SCSIDevice;ReadByte;MBREAD/s;Physical Disk SCSI Device;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M SCSIDevice;ReadIssueTimeInUsec;KAVG/rd;Physical Disk SCSI Device;Average Kernel MilliSec/Read;DISK.READ_LAT_KERNEL;Long;DiskLatency SCSIDevice;ReadLayerTimeInUsec;DAVG/rd;Physical Disk SCSI Device;Average Driver MilliSec/Read;DISK.READ_LAT_DRIVER;Long;DiskLatency SCSIDevice;ReadQueueTimeInUsec;QAVG/rd;Physical Disk SCSI Device;Average Queue MilliSec/Read;DISK.READ_LAT_QUEUE;Long;DiskLatency SCSIDevice;ReadTotalTimeInUsec;GAVG/rd;Physical Disk SCSI Device;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency SCSIDevice;TotalTimeInUsec;GAVG/cmd;Physical Disk SCSI Device;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency SCSIDevice;WorldQueueDepth;WQLEN;Physical Disk SCSI Device;World Q Depth;DISK.WORLD_QUEUE_DEPTH;Integer; SCSIDevice;WriteByte;MBWRTN/s;Physical Disk SCSI Device;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M SCSIDevice;WriteIssueTimeInUsec;KAVG/wr;Physical Disk SCSI Device;Average Kernel MilliSec/Write;DISK.WRITE_LAT_KERNEL;Long;DiskLatency SCSIDevice;WriteLayerTimeInUsec;DAVG/wr;Physical Disk SCSI Device;Average Driver MilliSec/Write;DISK.WRITE_LAT_DRIVER;Long;DiskLatency SCSIDevice;WriteQueueTimeInUsec;QAVG/wr;Physical Disk SCSI Device;Average Queue MilliSec/Write;DISK.WRITE_LAT_QUEUE;Long;DiskLatency SCSIDevice;WriteTotalTimeInUsec;GAVG/wr;Physical Disk SCSI Device;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency SCSIDevice;ZeroedByte;MBZERO/s;Physical Disk SCSI Device;MBytes Zeroed/sec;DISK.VAAI_ZERO_MBPS;Long;RateDevide1M SCSIDevice;ZeroFailureTimeInUsec;ZAVG/f;Physical Disk SCSI Device;Average Failure Latency ms/Zero;DISK.VAAI_LAT_ZERO_FAIL;Long;DiskZeroFailLatency SCSIDevice;ZeroSuccessTimeInUsec;ZAVG/suc;Physical Disk SCSI Device;Average Success Latency ms/Zero;DISK.VAAI_LAT_ZERO_SUCC;Long;DiskZeroSuccLatency SCSIDevice;IsValid;;;;;Boolean; SCSIDevice;NumOfBlocksRead;;;;;Long;Rate SCSIDevice;NumOfBlocksWritten;;;;;Long;Rate SCSIDevice;NumOfVirtResets;;;;;Long;Rate SCSIDevice;NumOfLunResets;;;;;Long;Rate; SCSIDevice;NumOfDeviceResets;;;;;Long;Rate; SCSIDevice;NumOfBusResets;;;;;Long;Rate; SCSIDevice;NumOfBlocksZeroed;;;;;Long;Rate; SCSIDevice;NumOfWorlds;;;;;Integer;; SCSIDevice;NumOfPartitions;;;;;Integer;; Server;MinFetchIntervalInUsec;;;;;Long;; Server;IsVMVisor;;;;;Boolean;; Server;TimeStampInUsec;;;;;Long;; Server;Time;;;;;String;; TState;ResidentTimeInUsec;%T;PCPU Power State;%T-State;POWER.PCPU_TSTATE;Long;PowerStatePercent; TState;StateID;;;;;Integer;; TStateAvg;ResidentTimeInUsec;%T;PCPU Power State;%T-State Average;POWER.PCPU_TSTATE;Long;Average;TState TStateAvg;StateID;;;;;Integer;; TStateInfo;StateID;;;;;Integer;; VCPU;AffinityStr;AFFINITY_BIT_MASK;;;;String;; VCPU;AllocMax;AMAX;Vcpu;Alloc Max;VCPU.ALLOC_MAX;Integer; VCPU;AllocMin;AMIN;Vcpu;Alloc Min;VCPU.ALLOC_MIN;Integer; VCPU;AllocMinLimit;AMLMT;Vcpu;Alloc Min Limited;VCPU.ALLOC_MINLIMT;Integer; VCPU;AllocShares;ASHRS;Vcpu;Alloc Shares;VCPU.ALLOC_SHARES;Integer; VCPU;AllocUnitStr;AUNITS;;;;String; VCPU;CoStopTimeInUsec;%CSTP;Vcpu;% CoStop;VCPU.COSTOP;Long;PercentLimit100 VCPU;CpuDemandInPct;%DMD;Vcpu;% Demand;VCPU.DEMAND;Integer; VCPU;CpuLatencyInUsec;%LAT_C;Vcpu;% CPU Latency;VCPU.CPU_LATENCY;Long;PercentLimit100 VCPU;EffectiveMin;EMIN;Vcpu;Effective Min (MHz);VCPU.EFFECTIVE_MIN;Integer; VCPU;EffectiveMinOld;EMIN(Deprecated);Vcpu;Effective Min;VCPU.EFFECTIVE_MIN;Integer; VCPU;HTSharingStr;HTSHARING;;;;String; VCPU;IdleTimeInUsec;%IDLE;Vcpu;% Idle;VCPU.IDLE;Long;PercentLimit100 VCPU;IsHTQuarantine;HTQ;Vcpu;HT Quarantine;VCPU.HT_QUARANTINE;Boolean; VCPU;LCPU;CPU;Vcpu;Physical Cpu;VCPU.PCPU;Integer; VCPU;MaxLimitedTimeInUsec;%MLMTD;Vcpu;% Max Limited;VCPU.MAX_LIMITED;Long;PercentLimit100 VCPU;MemLatencyInUsec;%LAT_M;Vcpu;% Memory Latency;VCPU.MEM_LATENCY;Long;PercentLimit100 VCPU;NumOfInterCoreMigrations;PMIG/s;Vcpu;Processor Migrations/sec;VCPU.MIGRATION_INTER_CORE;Integer;Rate VCPU;NumOfMigrationsOnWakeup;WMIGI/s;Vcpu;Wakeup Migrate Idle/sec;VCPU.MIGRATION_ON_WAKEUP;Integer;Rate VCPU;NumOfQuantumExpires;QEXP/s;Vcpu;Quantum Expires/sec;VCPU.QUANTUM_EXPIRE;Integer;Rate VCPU;NumOfTotalMigrations;MIG/s;Vcpu;Migrates/sec;VCPU.TOTAL_MIGRATION;Integer;Rate VCPU;NumOfWakeups;WAKE/s;Vcpu;Wakeups/sec;VCPU.WAKEUP;Integer;Rate VCPU;NumOfWorldSwitches;SWTCH/s;Vcpu;Switches/sec;VCPU.WORLD_SWITCH;Integer;Rate VCPU;ReadyTimeInUsec;%RDY;Vcpu;% Ready;VCPU.READY;Long;PercentLimit100 VCPU;RunTimeInUsec;%RUN;Vcpu;% Run;VCPU.RUN;Long;PercentLimit100 VCPU;SwapWaitTimeInUsec;%SWPWT;Vcpu;% Swap Wait;VCPU.SWAP_WAIT;Long;PercentLimit100 VCPU;SysOverlapTimeInUsec;%OVRLP;Vcpu;% Overlap;VCPU.SYS_OVERLAP;Long;PercentLimit100 VCPU;SysTimeInUsec;%SYS;Vcpu;% System;VCPU.SYS;Long;PercentLimit100 VCPU;TotalWaitTimeInUsec;%WAIT;Vcpu;% Wait;VCPU.WAIT;Long;PercentLimit100 VCPU;UsedTimeInUsec;%USED;Vcpu;% Used;VCPU.USED;Long;Percent VCPU;VCPUID;ID;;;;Integer; VCPU;WorldName;NAME;;;;String; VCPU;IsValid;;;;;Boolean; VCPU;UpTimeInUsec;;;;;Long;PercentLimit100 VCPU;WaitTimeInUsec;;;;;Long;PercentLimit100 VCPU;BusyWaitTimeInUsec;;;;;Long;PercentLimit100 VMem;BalloonMaxInKB;MCTLMAX;Group Memory;Memctl Max MBytes;VMEM.MEMCTL_MAX;Integer;Devide1K VMem;BalloonSizeInKB;MCTLSZ;Group Memory;Memctl MBytes;VMEM.MEMCTL_SIZE;Integer;Devide1K VMem;BalloonTargetInKB;MCTLTGT;Group Memory;Memctl Target MBytes;VMEM.MEMCTL_TARGET;Integer;Devide1K VMem;CacheSizeInKB;CACHESZ;Group Memory;Compressed Memory MBytes;VMEM.CACHE_SIZE;Integer;Devide1K VMem;CheckpointReadInKB;CPTRD;Group Memory;Checkpoint Read MBytes;VMEM.CHECKPOINT_READ;Integer;Devide1K VMem;CheckpointTargetInKB;CPTTGT;Group Memory;Checkpoint Target MBytes;VMEM.CHECKPOINT_TARGET;Integer;Devide1K VMem;ClientSizeInKB;MEMSZ;Group Memory;Memory Size MBytes;VMEM.SIZE_CLIENT;Integer;Devide1K VMem;ClientTargetInKB;SZTGT;Group Memory;Target Size MBytes;VMEM.SIZE_TARGET;Integer;Devide1K VMem;ClientTouchedInKB;TCHD;Group Memory;Touched MBytes;VMEM.TOUCHED;Integer;Devide1K VMem;ClientTouchedWriteInKB;TCHD_W;Group Memory;Touched Write MBytes;VMEM.TOUCHED_WRITE;Integer;Devide1K VMem;CommitChargedInKB;CMTCHRG;Group Memory;Commit Charged MBytes;VMEM.COMMIT_CHARGED;Integer;Devide1K VMem;CommitTargetInKB;CMTTGT;Group Memory;Commit Target MBytes;VMEM.COMMIT_TARGET;Integer;Devide1K VMem;CompressedInKB;ZIP/s;Group Memory;Compression MBytes/sec;VMEM.ZIP_RATE;Long;RateDevide1K VMem;COWHintInKB;COWH;Group Memory;Copy On Write Hint MBytes;VMEM.COW_HINT;Integer;Devide1K VMem;CurrentOverheadInKB;OVHD;Group Memory;Overhead MBytes;VMEM.OVERHEAD;Integer;Devide1K VMem;CurrentSwapInKB;SWCUR;Group Memory;Swapped MBytes;VMEM.SWAP_CUR;Integer;Devide1K VMem;DecompressedInKB;UNZIP/s;Group Memory;Decompression MBytes/sec;VMEM.UNZIP_RATE;Long;RateDevide1K VMem;EstimateActiveInPct;%ACTV;Group Memory;% Active Estimate;VMEM.ACTIVE;Integer; VMem;EstimateFastInPct;%ACTVF;Group Memory;% Active Fast Estimate;VMEM.ACTIVE_FAST;Integer; VMem;EstimateNextAvgInPct;%ACTVN;Group Memory;% Active Next Estimate;VMEM.ACTIVE_NEXT;Integer; VMem;EstimateSlowInPct;%ACTVS;Group Memory;% Active Slow Estimate;VMEM.ACTIVE_SLOW;Integer; VMem;IsBalloonActive;MCTL?;Group Memory;Memctl?;VMEM.MEMCTL_ISACTIVE;Boolean; VMem;IsResponsive;RESP?(Deprecated);Group Memory;Client Responsive?;;Boolean; VMem;MappedInKB;GRANT;Group Memory;Memory Granted Size MBytes;VMEM.SIZE_GRANT;Integer;Devide1K VMem;MaxOverheadInKB;OVHDMAX;Group Memory;Overhead Max MBytes;VMEM.OVERHEAD_MAX;Integer;Devide1K VMem;MemClientID;GID;;;;Integer; VMem;MinCommitTargetInKB;MCMTTGT;Group Memory;Min Commit Target MBytes;VMEM.COMMIT_TARGET_MIN;Integer;Devide1K VMem;NumWorlds;NWLD;Group Memory;Members;;Integer; VMem;PagesPerShare;CMTPPS;Group Memory;Commit Pages Per Share;VMEM.COMMIT_PPS;Long; VMem;SavedBySharingInKB;SHRDSVD;Group Memory;Shared Saved MBytes;VMEM.COW_SAVED;Integer;Devide1K VMem;SharedInKB;SHRD;Group Memory;Shared MBytes;VMEM.COW_SHARED;Integer;Devide1K VMem;SwapReadInKB;SWR/s;Group Memory;Swap Read MBytes/sec;VMEM.SWAP_READ;Long;RateDevide1K VMem;SwapWriteInKB;SWW/s;Group Memory;Swap Written MBytes/sec;VMEM.SWAP_WRITE;Long;RateDevide1K VMem;ToBeSwappedInKB;SWTGT;Group Memory;Swap Target MBytes;VMEM.SWAP_TARGET;Integer;Devide1K VMem;UsedCacheInKB;CACHEUSD;Group Memory;Used Compressed Memory MBytes;VMEM.CACHE_USED;Integer;Devide1K VMem;UWOverheadInKB;OVHDUW;Group Memory;Overhead UW MBytes;VMEM.OVERHEAD_UW;Integer;Devide1K VMem;ZeroInKB;ZERO;Group Memory;Zero MBytes;VMEM.COW_ZERO;Integer;Devide1K VMem;IsValid;;;;;Boolean; VMNUMANodeMem;GuestMemInKB;GST_ND;Group Memory on Numa Node;Guest Memory;VMEM.NODE_GUEST;Integer;Devide1K VMNUMANodeMem;NodeID;;;;;Integer; VMNUMANodeMem;OverheadMemInKB;OVD_ND;Group Memory on Numa Node;VMM Overhead Memory;VMEM.NODE_OVERHEAD;Integer;Devide1K VMNUMANodeMem;IsValid;;;;;Boolean; Vscsi;NumOfVscsiGroups;;;;;Integer; VscsiDisk;ID;ID;;;;Integer; VscsiDisk;LatencyReads;LAT/rd;Virtual Disk;Average MilliSec/Read;DISK.READ_LAT_VSCSI;Long;DiskLatency VscsiDisk;LatencyWrites;LAT/wr;Virtual Disk;Average MilliSec/Write;DISK.WRITE_LAT_VSCSI;Long;DiskLatency; VscsiDisk;Name;VSCSINAME;;;;String;; VscsiDisk;NumOfCommands;CMDS/s;Virtual Disk;Commands/sec;DISK.COMMAND_RATE;Long;Rate; VscsiDisk;NumOfReads;READS/s;Virtual Disk;Reads/sec;DISK.READ_RATE;Long;DiskLatency; VscsiDisk;NumOfWrites;WRITES/s;Virtual Disk;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency; VscsiDisk;ReadByte;MBREAD/s;Virtual Disk;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M; VscsiDisk;WriteByte;MBWRTN/s;Virtual Disk;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M; VscsiGroup;GroupId;GID;;;;Integer;; VscsiGroup;LatencyReads;LAT/rd;Virtual Disk Per VM;Average MilliSec/Read;DISK.READ_LAT_VSCSI;Long;DiskLatency; VscsiGroup;LatencyWrites;LAT/wr;Virtual Disk Per VM;Average MilliSec/Write;DISK.WRITE_LAT_VSCSI;Long;DiskLatency; VscsiGroup;Name;VMNAME;;;;String;; VscsiGroup;NumOfCommands;CMDS/s;Virtual Disk Per VM;Commands/sec;DISK.COMMAND_RATE;Long;Sum;VscsiDisk VscsiGroup;NumOfReads;READS/s;Virtual Disk Per VM;Reads/sec;DISK.READ_RATE;Long;DiskLatency; VscsiGroup;NumOfVscsiDisks;NDK;;;;Integer;; VscsiGroup;NumOfWrites;WRITES/s;Virtual Disk Per VM;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency; VscsiGroup;ReadByte;MBREAD/s;Virtual Disk Per VM;MBytes Read/sec;DISK.READ_MBPS;Long;Sum;VscsiDisk VscsiGroup;WriteByte;MBWRTN/s;Virtual Disk Per VM;MBytes Written/sec;DISK.WRITE_MBPS;Long;Sum;VscsiDisk WorldPerDev;DeviceQueueDepth;DQLEN;Physical Disk Per-Device-Per-World;Device Q Depth;DISK.DEVICE_QUEUE_DEPTH;Integer;; WorldPerDev;IssueTimeInUsec;KAVG/cmd;Physical Disk Per-Device-Per-World;Average Kernel MilliSec/Command;DISK.COMMAND_LAT_KERNEL;Long;DiskLatency; WorldPerDev;LayerTimeInUsec;DAVG/cmd;Physical Disk Per-Device-Per-World;Average Driver MilliSec/Command;DISK.COMMAND_LAT_DRIVER;Long;DiskLatency; WorldPerDev;NumOfAborts;ABRTS/s;Physical Disk Per-Device-Per-World;Aborts/sec;DISK.ABORT_RATE;Long;Rate; WorldPerDev;NumOfActiveCmds;ACTV;Physical Disk Per-Device-Per-World;Active Commands;DISK.QUEUE_ACTIVE;Integer;; WorldPerDev;NumOfCommands;CMDS/s;Physical Disk Per-Device-Per-World;Commands/sec;DISK.COMMAND_RATE;Long;DiskLatency; WorldPerDev;NumOfFailCommands;FCMDS/s;Physical Disk Per-Device-Per-World;Failed Commands/sec;DISK.FAIL_COMMAND;Long;Rate; WorldPerDev;NumOfFailReadBytes;FMBRD/s;Physical Disk Per-Device-Per-World;Failed Bytes Read/sec;DISK.FAIL_READ_BPS;Long;Rate; WorldPerDev;NumOfFailReads;FREAD/s;Physical Disk Per-Device-Per-World;Failed Reads/sec;DISK.FAIL_READ;Long;Rate; WorldPerDev;NumOfFailReserves;FRESV/s;Physical Disk Per-Device-Per-World;Failed Reserves/sec;DISK.FAIL_RESERVE;Long;Rate; WorldPerDev;NumOfFailWriteBytes;FMBWR/s;Physical Disk Per-Device-Per-World;Failed Bytes Written/sec;DISK.FAIL_WRITE_BPS;Long;Rate; WorldPerDev;NumOfFailWrites;FWRITE/s;Physical Disk Per-Device-Per-World;Failed Writes/sec;DISK.FAIL_WRITE;Long;Rate; WorldPerDev;NumOfQueuedCmds;QUED;Physical Disk Per-Device-Per-World;Queued Commands;DISK.QUEUE_QUEUED;Integer;; WorldPerDev;NumOfReadOps;READS/s;Physical Disk Per-Device-Per-World;Reads/sec;DISK.READ_RATE;Long;DiskLatency; WorldPerDev;NumOfReservationConflicts;CONS/s;Physical Disk Per-Device-Per-World;Conflicts/sec;DISK.RESERVATION_CONFLICT;Long;Rate; WorldPerDev;NumOfReserveOps;RESV/s;Physical Disk Per-Device-Per-World;Reserves/sec;DISK.RESERVATION_RATE;Long;Rate WorldPerDev;NumOfTotalResets;RESETS/s;Physical Disk Per-Device-Per-World;Resets/sec;DISK.RESET_RATE;Long;Rate WorldPerDev;NumOfWriteOps;WRITES/s;Physical Disk Per-Device-Per-World;Writes/sec;DISK.WRITE_RATE;Long;DiskLatency WorldPerDev;QueueDepth;WQLEN;Physical Disk Per-Device-Per-World;World Q Depth;DISK.WORLD_QUEUE_DEPTH;Integer; WorldPerDev;QueueLoad;LOAD;Physical Disk Per-Device-Per-World;Load;DISK.QUEUE_LOAD;Double; WorldPerDev;QueueTimeInUsec;QAVG/cmd;Physical Disk Per-Device-Per-World;Average Queue MilliSec/Command;DISK.COMMAND_LAT_QUEUE;Long;DiskLatency WorldPerDev;QueueUsed;%USD;Physical Disk Per-Device-Per-World;% Used;DISK.QUEUE_USED;Double; WorldPerDev;ReadByte;MBREAD/s;Physical Disk Per-Device-Per-World;MBytes Read/sec;DISK.READ_MBPS;Long;RateDevide1M WorldPerDev;ReadIssueTimeInUsec;KAVG/rd;Physical Disk Per-Device-Per-World;Average Kernel MilliSec/Read;DISK.READ_LAT_KERNEL;Long;DiskLatency WorldPerDev;ReadLayerTimeInUsec;DAVG/rd;Physical Disk Per-Device-Per-World;Average Driver MilliSec/Read;DISK.READ_LAT_DRIVER;Long;DiskLatency WorldPerDev;ReadQueueTimeInUsec;QAVG/rd;Physical Disk Per-Device-Per-World;Average Queue MilliSec/Read;DISK.READ_LAT_QUEUE;Long;DiskLatency WorldPerDev;ReadTotalTimeInUsec;GAVG/rd;Physical Disk Per-Device-Per-World;Average Guest MilliSec/Read;DISK.READ_LAT_GUEST;Long;DiskLatency WorldPerDev;Shares;SHARES;Physical Disk Per-Device-Per-World;Shares;DISK.SHARES;Integer; WorldPerDev;TotalTimeInUsec;GAVG/cmd;Physical Disk Per-Device-Per-World;Average Guest MilliSec/Command;DISK.COMMAND_LAT_GUEST;Long;DiskLatency WorldPerDev;WorldID;WORLD;;;;Integer; WorldPerDev;WriteByte;MBWRTN/s;Physical Disk Per-Device-Per-World;MBytes Written/sec;DISK.WRITE_MBPS;Long;RateDevide1M WorldPerDev;WriteIssueTimeInUsec;KAVG/wr;Physical Disk Per-Device-Per-World;Average Kernel MilliSec/Write;DISK.WRITE_LAT_KERNEL;Long;DiskLatency WorldPerDev;WriteLayerTimeInUsec;DAVG/wr;Physical Disk Per-Device-Per-World;Average Driver MilliSec/Write;DISK.WRITE_LAT_DRIVER;Long;DiskLatency WorldPerDev;WriteQueueTimeInUsec;QAVG/wr;Physical Disk Per-Device-Per-World;Average Queue MilliSec/Write;DISK.WRITE_LAT_QUEUE;Long;DiskLatency WorldPerDev;WriteTotalTimeInUsec;GAVG/wr;Physical Disk Per-Device-Per-World;Average Guest MilliSec/Write;DISK.WRITE_LAT_GUEST;Long;DiskLatency WorldPerDev;IsValid;;;;;Boolean; WorldPerDev;NumOfBlocksRead;;;;;Long;Rate WorldPerDev;NumOfBlocksWritten;;;;;Long;Rate WorldPerDev;NumOfVirtResets;;;;;Long;Rate WorldPerDev;NumOfLunResets;;;;;Long;Rate WorldPerDev;NumOfDeviceResets;;;;;Long;Rate WorldPerDev;NumOfBusResets;;;;;Long;Rate "@ $ESXCounters1 = ConvertFrom-Csv -InputObject $ESXCounters1List -Delimiter ';' $esxtopInterval = 5 $intervalCount = $Intervals + 1 $values = @() $samples = @() # Populate the lookup table $counterHash = @{} $ESXCounters1 | %{ $counterHash[$_.PerfObjectType + "-" + $_.PerfCounterName] = $_ } # Populate the Name field lookup table $filterHash = @{ "Adapter" = "AdapterName" "COS" = "" "CPUClient" = "" "CState" = "StateID" "CStateAvg" = "StateID" "CStateInfo" = "" "HiddenWorld" = "" "Interrupt" = "" "InterruptPerCPU" = "CPUID" "InterruptVector" = "VectorID" "LCPU" = "LCPUID" "LCPUPower" = "" "NetPort" = "ClientName" "NetPortSet" = "" "Nfs" = "" "NfsClient" = "MountName" "NUMANode" = "NodeID" "Partition" = "PartitionID" "Path" = "PathName" "PCPU" = "" "PMem" = "" "PNIC" = "PNICName" "Power" = "" "PState" = "StateID" "PStateAvg" = "StateID" "PStateInfo" = "" "Sched" = "" "SchedGroup" = "VMName" "SCSI" = "" "SCSIDevice" = "DeviceName" "Server" = "" "TState" = "StateID" "TStateAvg" = "StateID" "TStateInfo" = "" "VCPU" = "VCPUID" "VMem" = "MemClientID" "VMNUMANodeMem" = "NodeID" "Vscsi" = "" "VscsiDisk" = "Name" "VscsiGroup" = "Name" "WorldPerDev" = "WorldID" } # Get the fields for all requested counters if($Server.GetType().IsArray){ $fldServer = $Server[0] } else{ $fldServer = $Server } $fields = Get-EsxTop -Counter -Server $fldServer | where {$counter -contains $_.Name} # Complete dealy time if($Delay){ sleep ([math]::Max(0, [int]($entryTime.AddSeconds($Delay) - (Get-Date)).TotalSeconds)) } # Capture the required number of samples for($i = 0; $i -lt $intervalCount; $i++){ $samples += New-Object PSObject -Property @{ timestamp = Get-Date samples = Get-EsxTop -CounterName $Counter -Server $Server IDs = &{ $hash = @{} $esxcli.vms.vm.list() | where {$Name -contains $_.DisplayName} | %{ $hash[$_.VMXCartelID] = $_.DisplayName } $hash } } $timeLeft = [math]::Max(0,[int]($samples[-1].timestamp.AddSeconds($esxtopInterval) - (Get-Date)).TotalSeconds) sleep $timeLeft } # Process the captured samples # Get-ChildItem -Path "Variable:\top-*" | Remove-Item foreach($entry in $samples){ foreach($sample in $entry.Samples){ if(!$Name -or ($Name -and ($Name -contains $sample.($filterHash[$sample.Counter]) -or $entry.IDs.Keys -contains $sample.($filterHash[$sample.Counter])))){ $perfObj = $fields | where {$_.Name -eq $sample.Counter} $prefix = "top" + "_" + $sample.Server.Name + "_" + $sample.Counter + "_" + $sample.($filterHash[$sample.Counter]) if(!(Test-Path -Path ("Variable:" + $prefix))){ $counterObj = New-Object PSObject foreach($field in $perfObj.fields){ Update-CounterField -InputObject $counterObj -FieldName $field.Name -FieldValue $sample.($field.Name) } Update-CounterObject -InputObject $counterObj ` -Counter $perfObj.Name -ServerName $sample.Server.Name -Timestamp $entry.timestamp if("VMem","VCPU" -contains $sample.Counter){ Add-Member -InputObject $counterObj -Name DisplayName -Value $entry.IDs[[string]$sample.($filterHash[$sample.Counter])] -MemberType NoteProperty } New-Variable -Name $prefix -Value $counterObj } else{ $row = New-Object PSObject $counterObj = New-Object PSObject foreach($field in $perfObj.fields){ switch ($counterHash[$perfObj.Name + "-" + $field.Name].DerivationMethod){ {"Sum" -contains $_} { $val = [long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name) break } {"PercentLimit100","Percent","PCPUUtil","PCPUUsed" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $esxtopinterval / 1000000 * 100 break } {"PowerStatePercent" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) /1000000 / $esxtopinterval break } {"Rate","DiskLatency","DiskAtsFailLatency","DiskAtsSuccLatency","DiskCloneFailLatency","DiskCloneSuccLatency","DiskZeroFailLatency","DiskZeroSuccLatency" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $esxtopInterval break } {"RxDropRate" -contains $_} { $RxPackets = $sample.NumOfRecvPackets - (Get-Variable -Name $prefix).Value.NumOfRecvPackets if($RxPackets -ne 0){ $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $RxPackets } else{$val = 0} break } {"TxDropRate" -contains $_} { $TxPackets = $sample.NumOfSendPackets - (Get-Variable -Name $prefix).Value.NumOfSendPackets if($TxPackets -ne 0){ $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $TxPackets } else{$val = 0} break } {"RateByteToMb" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $esxtopInterval /1MB * 8 break } {"RateDevide1M" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $esxtopInterval / 1MB break } {"RateDevide1K" -contains $_} { $val = ([long]$sample.($field.Name) - (Get-Variable -Name $prefix).Value.($field.Name)) / $esxtopInterval / 1KB break } {"PageToMB" -contains $_} { $val = $sample.($field.Name) * 4 / 1KB break } {"Devide100" -contains $_} { $val = $sample.($field.Name) / 100 break } {"Devide1K","PMemKernelUsed" -contains $_} { $val = $sample.($field.Name) / 1KB break } Default{ $val = $sample.($field.Name) } } (Get-Variable -Name $prefix).Value.($field.Name) = $val Update-CounterField -InputObject $counterObj -FieldName $field.Name -FieldValue $sample.($field.Name) } Update-CounterObject -InputObject $counterObj ` -Counter $perfObj.Name -ServerName $sample.Server.Name -Timestamp $entry.timestamp if("VMem","VCPU" -contains $sample.Counter){ Add-Member -InputObject $counterObj -Name DisplayName -Value $entry.IDs[[string]$sample.($filterHash[$sample.Counter])] -MemberType NoteProperty } $values += (Get-Variable -Name $prefix).Value (Get-Variable -Name $prefix).Value = $counterObj } } } } $values } } |
Annotations
Line 43-48: The accepted counter names
Line 56-70: An internal helper function that is used to update field values on the object
Line 67: As you can determine from the ESXCounters1 list, the properties that are returned by resxtop have different names than the counter properties that are returned by Get-EsxTop. For that reason the function creates an alias property similar to the resxtop names. Note that the Export-Csv cmdlet doesn’t make a distinction between a noteproperty and an aliasproperty, both properties will be exported as two separate columns in the CSV !
Line 72-83: An internal helper function that is used to add additional properties to an object
Line 88: To accommodate the Delay parameter, the date/time of entry in the function is captured
Line 90-103: To function accepts one or more ESX(i) servers via the Server parameter. If there is no Server parameter, the function uses the current connection, in case PowerCLI is used in ‘single‘ mode, or extracts all ESX(i) servers from the connected servers, in case PowerCLI is used in ‘multi‘ mode.
Line 106: an instance of esxcli is opened. This is used to map display names to world IDs later on in the script.
Line 109-633: This is the updated ESXCounters1 spreadsheet, from the cable, provided as inline code. My reason for doing this with inline code, is that the entire function can be handled as 1 file. There are some alternatives available, you can import the ESXCounters1-present.csv file with an Import-Csv cmdlet or you can store the lines in another .ps1 file and dot-source them.
Line 635: The inline CSV data is converted to an array. Note that the Delimiter is specified, this to avoid problem should the script be run in another ‘culture’.
Line 638: Since we calculate the actual values from two consecutive samples, we increase the number of requested samples by 1.
Line 643-646: The ESXCounters1 array is converted into a hash table. This will allow us to do key lookups later on in the script.
Line 649-691: Some counters produce samples for each of their instances. This hash table maps those counters to the property that distinguishes a specific instance. For example, with the SchedGroup counter, the VMName property identifies specific instances.
Line 694-700: For each of the requested counters, the function collects all fields (properties) and stores them in an array.
Line 703-705: If the function is called with the Delay parameter, these lines will force a sleep till the delay is passed.
Line 707-722: This loops captures the required number of samples.
Line 711-717: For the VMem and VCPU counters the function will add the Display Name to the object that is returned. These lines use the esxcli object to get a list of all running worlds and their corresponding VMXCartelID
Line 720-721: Sleep what remains of the esxtop interval (5 seconds).
Line 725-821: This loop calculates the values from the 2 consecutive samples.
Line 727-728: This test handles the Name parameter when specific instances are requested.
Line 731: Since we need 2 consecutive measurements to calculate the values, the code distinguishes between the first sample and all following samples.
Line 732-742: For the first sample, the values of the counters are stored in specific variables.
Line 738-740, 813-815: When the Counter parameter contains VMem and/or VCPU, the function adds the Displayname to the returned object.
Line 747-807: The switch statement uses the DerivationMethod column from the ESXCounters1 list to calculate the value as it would be returned by resxtop. If there is no derivation method present, the function returns that raw value of the property.
Line 816: The object with the calculated values is stored in the Values array.
Example usage
The simplest way to call the function is like this
1 |
$report = Get-EsxTopValues |
This will return one measurement for all available counters for all available instances.
To specify a specific counter use the Counter parameter
1 |
$report = Get-EsxTopValues -Counter "PCPU" |
The number of intervals is specified with the Intervals parameter
1 |
$report = Get-EsxTopValues -Counter "PCPU" -Intervals 5 |
It will take more than 25 seconds before the function returns the objects. The function will take 6 samples and the esxtop interval between each sample is 5 seconds. The calculation of the values takes some time as well.
To specify more counters use the Counter parameter
1 |
$report = Get-EsxTopValues -Counter "VCPU","VMem" -Intervals 5 |
If you want to capture one or more specific instances, use the Name parameter.
1 |
$report = Get-EsxTopValues -Counter "VCPU","VMem" -Intervals 5 -Name "Srv1","Srv2" |
In this case the function will return 20 objects; 2 counters x 2 instances x 5 intervals.
And finally, with the Server parameter, you tell the function to get the samples from one or more specific ESX(i) servers.
1 |
$report = Get-EsxTopValues -Counter "VCPU","VMem" -Intervals 5 -Name "Srv1","Srv2" -Server $esx1,$esx2 |
The connection to the server(s) must be made before you call the function.
In a next post I will show samples of how the returned data can be used.
Trung Tran
Hi Luc,
I am trying to get the PCPU values from esxtop command using powerCLI. Could you please show how to do it. Thanks.
Ken
Hi Luc,
As always, excellent work. I need this script specifically to track copy-on-write hints (COWH). My concern is that we run DRS in our environment. I could use the help from the community to vet my thinking here.
I would think that if the script were running against a cluster of, say, 6 hosts (A-F) and collected get-esxtop stats from host A, then DRS migrates a VM from host A to host E *before* the script executes against host E, then the COWH stats would be skewed because it would have collected stats on the same VM twice, on two different hosts.
Any thoughts on this issue? Is it a “red-herring?”
Thanks!
LucD
Hi Ken, with the Get-EsxTop cmdlet you can use the Server parameter to pass 1 or more servers against which to run the cmdlet.
I would try collecting the esxtop data from all servers in 1 call to the cmdlet, and then use PowerShell to split out the results per Server (with the Group-Object cmdlet for example).