On 1/17/23 15:15, Martin Kletzander wrote:
On Tue, Jan 17, 2023 at 01:44:44PM +0100, Michal Privoznik wrote:
> We have virDomainGetCPUStats() API which offers querying
> statistics on host CPU usage by given guest. And it works in two
> modes: getting overall stats (@start_cpu == -1, @ncpus == 1) or
> getting per host CPU usage.
>
> For the QEMU driver it is implemented by looking into values
> stored in corresponding cpuacct CGroup controller. Well, this
> works for system instances, where libvirt has permissions to
> create CGroups and place QEMU process into them. But it does not
> fly for session connection, where no CGroups are set up.
>
> Fortunately, we can do something similar to v8.8.0-rc1~95 and use
> virProcessGetStatInfo() to fill the overall stats. Unfortunately,
> I haven't found any source of per host CPU usage, so we just
> continue throwing an error in that case.
>
Looks ok, but there's one thing that's bothering me a bit. On non-Linux
platforms this API would start to work and returning zeros. Could that
be fixed somehow in a nice fashion or should I treat that as a non-issue?
Good point, I've never realized that non-Linux version of
virProcessGetStatInfo() doesn't fail. Let me post a v2 in which I'll
change the function to return error followed by this patch.
Michal