[libvirt] [PATCH v3 06/10] Add capability to fetch balloon stats

John Ferlan jferlan at redhat.com
Fri Jul 12 14:41:18 UTC 2013


On 07/12/2013 08:42 AM, Daniel P. Berrange wrote:
> On Thu, Jul 11, 2013 at 07:55:56PM -0400, John Ferlan wrote:
>> This patch will add the qemuMonitorJSONGetMemoryStats() to execute a
>> "guest-stats" on the balloonpath using "get-qom" replacing the former
>> mechanism which looked through the "query-ballon" returned data for
>> the fields.  The "query-balloon" code only returns 'actual' memory.
>> Rather than duplicating the existing code, have the JSON API use the
>> GetBalloonInfo API.
>>
>> A check in the qemuMonitorGetMemoryStats() will be made to ensure the
>> balloon driver path has been set.  Since the underlying JSON code can
>> return data not associated with the balloon driver, we don't fail on
>> a failure to get the balloonpath.  Of course since we've made the check,
>> we can then set the ballooninit flag.  Getting the path here is primarily
>> due to the process reconnect path which doesn't attempt to set the
>> collection period.
>> ---
>>  src/qemu/qemu_monitor.c      |  10 ++-
>>  src/qemu/qemu_monitor_json.c | 190 ++++++++++++++++++++-----------------------
>>  src/qemu/qemu_monitor_json.h |   1 +
>>  3 files changed, 95 insertions(+), 106 deletions(-)
> 
> Can you also extend qemumonitorjsontest.c to cover the new
> code in  qemuMonitorJSONGetMemoryStats.
> 
>>
>> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
>> index a3e250c..14b80e3 100644
>> --- a/src/qemu/qemu_monitor.c
>> +++ b/src/qemu/qemu_monitor.c
>> @@ -1483,10 +1483,14 @@ int qemuMonitorGetMemoryStats(qemuMonitorPtr mon,
>>          return -1;
>>      }
>>  
>> -    if (mon->json)
>> -        ret = qemuMonitorJSONGetMemoryStats(mon, stats, nr_stats);
>> -    else
>> +    if (mon->json) {
>> +        ignore_value(qemuMonitorFindBalloonObjectPath(mon, mon->vm, "/"));
>> +        mon->ballooninit = true;
> 
> Hmm, I think that qemuMonitorFindBalloonObjectPath ought to be
> setting 'mon->ballooninit = true' itself, rather than expecting
> all the callers to do it.
> 
> Actually I should have mentioned this against the previous patch.
> 

Was the previous explanation "good enough"?  Since it's recursive I see
no where in the function that one could safely set the value.

John

>> +        ret = qemuMonitorJSONGetMemoryStats(mon, mon->balloonpath,
>> +                                            stats, nr_stats);
>> +    } else {
>>          ret = qemuMonitorTextGetMemoryStats(mon, stats, nr_stats);
>> +    }
>>      return ret;
>>  }
>>  
> 
> Daniel
> 




More information about the libvir-list mailing list