[PATCH v2 3/3] qemu: Introduce qemuDomainGetStatsCpuHaltPollTime

Yang Fei yangfei85 at huawei.com
Thu Jul 15 13:41:56 UTC 2021



On 2021/7/14 22:17, Michal Prívozník wrote:
> On 7/14/21 2:28 PM, Yang Fei wrote:
>> This function is used to obtain the halt polling time. The kernel
>> provides statistics about haltpollsuccess.time and
>> haltpollfail.time. We add it in domstats, so that we can use
>> command 'virsh domstats VM' to get it if system support.
>>
>> Signed-off-by: Yang Fei <yangfei85 at huawei.com>
>> ---
>>  src/qemu/qemu_driver.c | 28 ++++++++++++++++++++++++++++
>>  1 file changed, 28 insertions(+)
>>
>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> index 235f575901..6163037ec3 100644
>> --- a/src/qemu/qemu_driver.c
>> +++ b/src/qemu/qemu_driver.c
>> @@ -17839,6 +17839,31 @@ qemuDomainGetStatsCpuCgroup(virDomainObj *dom,
>>      return 0;
>>  }
>>  
>> +#ifdef __linux__
>> +static int
>> +qemuDomainGetStatsCpuHaltPollTime(virDomainObj *dom,
>> +                                 virTypedParamList *params)
>> +{
>> +    unsigned long long haltPollSuccess = 0;
>> +    unsigned long long haltPollFail = 0;
>> +    pid_t pid = dom->pid;
>> +    int err = 0;
>> +
>> +    err = virGetCpuHaltPollTime(pid, &haltPollSuccess, &haltPollFail);
>> +    if (!err && virTypedParamListAddULLong(params, haltPollSuccess, "haltpollsuccess.time") < 0)
>> +        return -1;
>> +    if (!err && virTypedParamListAddULLong(params, haltPollFail, "haltpollfail.time") < 0)
>> +        return -1;
> 
> I know you copied this pattern from qemuDomainGetStatsCpuCgroup() but
> it's not as appealing is it could be. How about:
> 
> if (virGetCpuHaltPollTime() < 0)
>   return 0;
> 
> if (virTypedParamListAddULLong() < 0 ||
>     virTypedParamListAddULLong() < 0)
>     return -1;
> 
> return 0;
> 
> 
> Also, please document these new parameters in src/libvirt-domain.c just
> like every other parameter is (look around line 11626).
> 

OK, I'll add it in next version.

>> +    return 0;
>> +}
>> +#else
>> +static int
>> +qemuDomainGetStatsCpuHaltPollTime(virDomainObj *dom,
>> +                                 virTypedParamList *params)
>> +{
>> +    return 0;
>> +}
>> +#endif
> 
> Once my suggestions from previous patches are worked in, this non-Linux
> variant won't be necessary.
> 
>>  
>>  static int
>>  qemuDomainGetStatsCpu(virQEMUDriver *driver,
>> @@ -17852,6 +17877,9 @@ qemuDomainGetStatsCpu(virQEMUDriver *driver,
>>      if (qemuDomainGetStatsCpuCache(driver, dom, params) < 0)
>>          return -1;
>>  
>> +    if (qemuDomainGetStatsCpuHaltPollTime(dom, params) < 0)
>> +        return -1;
>> +
>>      return 0;
>>  }
>>  
>>
> 
> Michal
> 
> .
> 





More information about the libvir-list mailing list