We manage hypervisors (VMWare ESXi/vCenter, KVM, XEN, Hyper-V) by remote Libvirt API, in our case we need to get the host uptime via the same libvirt interface. Is there a way get this info now for all the aforementioned hypervisor types?

The APIs virConnectGetSysinfo(), virNodeGetInfo() provide host info but it doesn't include the system uptime.

The virNodeGetCPUStats() can returns CPU usage in nanosecond, can we add the user + system + idle + iowait to calculate the system uptime? Looks like the sum value has a huge gap with the real uptime value returned by "uptime" CLI.

virsh # nodecpustats
user:               2985046540000000
system:             1368209710000000
idle:             388018933920000000
iowait:               43371960000000