[libvirt] [PATCHv5 0/8] bulk stats: QEMU implementation
Li Wei
lw at cn.fujitsu.com
Thu Sep 25 09:33:39 UTC 2014
Richard,
Since this series has been applied, could you please update virt-top to use
these bulk APIs, this should fix the long update interval bug when domain
has a lot of disks.
Thanks.
On 09/15/2014 04:48 PM, Francesco Romani wrote:
> This patchset enhances the QEMU support
> for the new bulk stats API to include
> equivalents of these APIs:
>
> virDomainBlockInfo
> virDomainGetInfo - for balloon stats
> virDomainGetCPUStats
> virDomainBlockStatsFlags
> virDomainInterfaceStats
> virDomainGetVcpusFlags
> virDomainGetVcpus
>
> This subset of API is the one oVirt relies on.
> Scale/stress test on an oVirt test environment is in progress.
>
> The patchset is organized as follows:
> - the first patch enhances the internal stats gathering API
> to accomodate the needs of the groups which extract information
> using QEMU monitor jobs.
> - the next five patches implement the bulk stats groups, extracting
> helpers where do refactoring to extract internal helpers every time
> it is feasible and convenient.
> - the seventh patch enhances the virsh domstats command with options
> to use the new bulk stats.
> - the last patch enhances the block stats group adding the wr_highest_offset
> information, needed by oVirt for thin provisioned disks.
>
> ChangeLog
>
> v5: address reviewer's comment
> - Eric pointed out a possible flaw in balloon stats if QEMU monitor needs
> to be queried. A proper fix require further discussion and API changes
> (possbily just a new flag); However, since the balloon event is available
> in QEMU >= 1.2, I just dropped the query and relied on the event instead.
> Support for older QEMUs will be reintroduced, if needed, with following
> patches.
> - fix: per-domain monitor check and reporting. (pointed out by Peter)
> - reset last error when fail silently. (pointed out by Peter)
>
> v4: address reviewer's comment
> - addressed reviewers comments (Peter, Wang Rui).
> - pushed domain check into group stats functions. This follows
> the strategy to gather and report as much data as possible,
> silently skipping errors along the way.
> - moved the block allocation patch to the end of the series.
>
> v3: more polishing and fixes after first review
> - addressed Eric's comments.
> - squashed patches which extracts helpers with patches which
> use them.
> - changed gathering strategy: now code tries to reap as much
> information as possible instead to give up and bail out with
> error. Only critical errors cause the bulk stats to fail.
> - moved away from the transfer semantics. I find it error-prone
> and not flexible enough, I'd like to avoid as much as possible.
> - rearranged helpers to have one single QEMU query job with
> many monitor jobs nested inside.
> - fixed docs.
> - implemented missing virsh domstats bits.
>
> in v2: polishing and optimizations.
> - incorporated feedback from Li Wei (thanks).
> - added documentation.
> - optimized block group to gather all the information with just
> one call to QEMU monitor.
> - stripped to bare bones merged the 'block info' group into the
> 'block' group - oVirt actually needs just one stat from there.
> - reorganized the keys to be more consistent and shorter.
>
>
> Francesco Romani (8):
> qemu: bulk stats: extend internal collection API
> qemu: bulk stats: implement CPU stats group
> qemu: bulk stats: implement balloon group
> qemu: bulk stats: implement VCPU group
> qemu: bulk stats: implement interface group
> qemu: bulk stats: implement block group
> virsh: add options to query bulk stats group
> qemu: bulk stats: add block allocation information
>
> include/libvirt/libvirt.h.in | 5 +
> src/libvirt.c | 61 +++++
> src/qemu/qemu_driver.c | 530 +++++++++++++++++++++++++++++++++++++------
> src/qemu/qemu_monitor.c | 26 +++
> src/qemu/qemu_monitor.h | 21 ++
> src/qemu/qemu_monitor_json.c | 227 +++++++++++++-----
> src/qemu/qemu_monitor_json.h | 4 +
> tools/virsh-domain-monitor.c | 35 +++
> tools/virsh.pod | 4 +-
> 9 files changed, 777 insertions(+), 136 deletions(-)
>
More information about the libvir-list
mailing list