[libvirt] [PATCHv3 0/6] Use query-cpus-fast instead of query-cpus

John Ferlan jferlan at redhat.com
Thu Apr 12 15:52:55 UTC 2018



On 04/04/2018 10:45 AM, Viktor Mihajlovski wrote:
> The QEMU monitor commmand query-cpus is deprecated starting
> with QEMU 2.12.0 because it can adversely affect the performance of
> a running virtual machine.
> 
> This series enables libvirt to use the new query-cpus-fast interface
> if supported by the local QEMU instance and is required in order
> to support QEMU once the interface has been removed.
> 
> query-cpus-fast doesn't return the halted state for a virtual CPU,
> meaning that the vcpu.<n>.halted value won't be reported with
> 'virsh domstats' anymore. This is OK, as stats values are not
> guaranteed to be reported under all circumstances and on all
> architectures.
> 
> Upstream discussion consensus was that the halted state was
> problematic anyway, as it had different semantics per architecture.
> The only known exploitation happened for s390, for this architecture
> the halted state will be computed based on an architecture-specific
> cpu value returned in query-cpus-fast.
> 
> v2 -> v3:
> =========
>   Patch changes:
>   1/6:
>   - formatting changes as requested by John Ferlan
>   - updated the qemucapabilitiestest XML files
>   - dropped A/R-bys (due to change above)
>   
>   2/6:
>   - fixed comment to also account for query-cpus-fast
> 
>   3/6:
>   - updated json monitor tests to account for props returned by
>     query-cpus and query-cpus-fast
>   - updated json monitor tests to handle the halted property
>     (moved here from patch 5)
> 
>   4/6:
>   - removed stale text (about callbacks) from commit message 
>   - simplified qemuMonitorJSONExtractCPUArchInfo call
>   - enhanced sample JSON response in comment
>   - fixed inter-function spacing
> 
>   5/6:
>   - kept s390-specific tests and moved the rest to patch 3
>   - reformatted the JSON responses (indented "props")
>   - dropped R-b
> 
> v1 -> v2:
> =========
>   Patch changes:
>   1/6:
>   - add Acked-by: Peter Krempa  
> 
>   2/6:
>   - evaluate capability outside of monitor code (changes signatures
>     of qemuMonitorGetCPUInfo and qemuMonitorGetCpuHalted)
>   - remove ternary expressions as requested by review
>   - remove Reviewed-bys due to code changes
> 
>   3/6 
>   - adapt test cases to changes above
>   - remove Reviewed-bys due to code changes
> 
>   4/6
>   - replace callbacks for architecture data extraction with direct
>     function calls
>   - remove Reviewed-bys due to code changes
> 
> Viktor Mihajlovski (6):
>   qemu: add capability detection for query-cpus-fast
>   qemu: use query-cpus-fast in JSON monitor
>   tests: add qemumonitorjson tests for query-cpus-fast
>   qemu: add architecture-specific CPU info handling
>   tests: add testcase for s390 query-cpus-fast
>   qemu: refresh vcpu halted state only via query-cpus-fast
> 
>  src/qemu/qemu_capabilities.c                       |   2 +
>  src/qemu/qemu_capabilities.h                       |   1 +
>  src/qemu/qemu_domain.c                             |  23 +++-
>  src/qemu/qemu_monitor.c                            |  30 +++--
>  src/qemu/qemu_monitor.h                            |   7 +-
>  src/qemu/qemu_monitor_json.c                       | 133 +++++++++++++++++++--
>  src/qemu/qemu_monitor_json.h                       |   3 +-
>  tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml |   1 +
>  tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml   |   1 +
>  tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml   |   1 +
>  tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml  |   1 +
>  .../qemumonitorjson-cpuinfo-ppc64-hotplug-4.data   |   8 ++
>  .../qemumonitorjson-cpuinfo-s390-fast-cpus.json    |  25 ++++
>  .../qemumonitorjson-cpuinfo-s390-fast-hotplug.json |  21 ++++
>  .../qemumonitorjson-cpuinfo-s390-fast.data         |  19 +++
>  ...emumonitorjson-cpuinfo-x86-basic-pluggable.data |   5 +
>  ...qemumonitorjson-cpuinfo-x86-full-fast-cpus.json | 126 +++++++++++++++++++
>  ...umonitorjson-cpuinfo-x86-full-fast-hotplug.json | 115 ++++++++++++++++++
>  .../qemumonitorjson-cpuinfo-x86-full-fast.data     | 109 +++++++++++++++++
>  .../qemumonitorjson-cpuinfo-x86-node-full.data     |   2 +
>  tests/qemumonitorjsontest.c                        | 123 +++++++++++++++----
>  tests/qemumonitortestutils.c                       |   7 ++
>  tests/qemumonitortestutils.h                       |   1 +
>  23 files changed, 706 insertions(+), 58 deletions(-)
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-s390-fast-cpus.json
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-s390-fast-hotplug.json
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-s390-fast.data
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full-fast-cpus.json
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full-fast-hotplug.json
>  create mode 100644 tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full-fast.data
> 

With a merge for patch1 to top of tree and a couple of caveats from
patch2 and patch3 (with any luck the patches will make it to the list as
well as this one ;-))

Reviewed-by: John Ferlan <jferlan at redhat.com>
(series)

As long as you say OK to the adjustments I can push...  Perhaps tomorrow
giving anyone else one last chance to provide their feedback! I also
merged the qemu_capabilities adjustments.

John




More information about the libvir-list mailing list