Currently VMware statistics (performance counters) are retrieved and stored together with the rest of VMware data - events, hypervisors and virtual machines (see vmware-current.png). On large installations this can take a lot of time (10+ minutes). As the result the statistics are refreshed only in 10 (or more) minute intervals.
This can be solved by separating performance counter processing and storage from the retrieval of the VMware event, hypervisor and virtual machine data (see vmware-new.png). It would also allow to retrieve performance counters for all monitored entities (hypervisors, virtual machines) with a single request. To further improve statistics gathering some data (like cpu usage) must also be monitored with performance counters (currently performance counters are used to monitor only network, disk and datastore statistics).
It would also allow to easily implement user defined items to monitor hypervisor, virtual machine performance counters - for example:
vmware.vm.perfcounter[{$URL},{HOST.HOST},"cpu/usagemhz[average]"] key could be used to monitor virtual machine cpu usage (see the patch).
The attached graph (vmware-cpu-statistics.jpg) illustrates the difference between the current cpu usage statistics (retrieved with 5 minute interval) and performance counter cpu usage statistics (retrieved with 30 second interval).