2010/11/3 Sherif Nagy <sherif.nagy(a)gmail.com>:
Dear All,
I would like to know what functions and classes are implemented in the
ESX(i) driver ? i am trying to use virsh to retrieve some simple information
such as vcpuinfo domain, but it is not working, so I would like to know what
functions are implemented in libvirt ESX(i) driver. Also i checked the
http://libvirt.org/drvesx.html and nothing is mentioned there.
Sorry for the late response.
This site [1] is intended to show what's supported for each
hypervisor, but unfortunately it's not very well maintained :(
vcpuinfo is currently not implemented for the ESX driver as I don't
see a way how to do it. To support it the ESX driver has to fill out
this struct.
struct _virVcpuInfo {
unsigned int number; /* virtual CPU number */
int state; /* value from virVcpuState */
unsigned long long cpuTime; /* CPU time used, in nanoseconds */
int cpu; /* real CPU number, or -1 if offline */
};
There are several problems with it. ESX doesn't allow to specify or
lookup a virtual CPU to physical CPU mapping (you can restrict the
physical CPUs allowed for a guest). Therefore, the number and cpu
members cannot be filled. The state member would always be
VIR_VCPU_RUNNING, as there is no way to set single cores to offline
and ESX doesn't tell you if a virtual CPU is blocked. The cpuTime
member is another problem. libvirt exposes this as an absolute value
since boot of the domain. ESX exposes this information relative in 20
seconds slots with 1 hour history. There is no way to get the absolute
used CPU time from this. There might be possibilities to estimate
values for this that are good enough for virt-top's CPU usage
calculations.
[1]
http://libvirt.org/hvsupport.html
Matthias