[libvirt-users] ESX(i) implemented functions

Matthias Bolte matthias.bolte at googlemail.com
Sun Nov 14 23:02:56 UTC 2010

2010/11/3 Sherif Nagy <sherif.nagy at 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

[1] http://libvirt.org/hvsupport.html


More information about the libvirt-users mailing list