
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