[RFC PATCH 00/16] qemu: Expose 'limits' and 'timed_stats' block device statistics via bulk stats API

Peter Krempa via Devel posted 16 patches 2 weeks, 2 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/cover.1760022633.git.pkrempa@redhat.com
docs/formatdomain.rst                         |   17 +
docs/manpages/virsh.rst                       |   54 +
include/libvirt/libvirt-domain.h              |  326 ++++
src/conf/domain_conf.c                        |   34 +
src/conf/domain_conf.h                        |    2 +
src/conf/schemas/domaincommon.rng             |   11 +
src/qemu/qemu_capabilities.c                  |    5 +
src/qemu/qemu_capabilities.h                  |    1 +
src/qemu/qemu_command.c                       |   15 +
src/qemu/qemu_driver.c                        |  203 ++-
src/qemu/qemu_migration_cookie.c              |   17 +-
src/qemu/qemu_monitor.c                       |   58 +-
src/qemu/qemu_monitor.h                       | 1191 ++++++++------
src/qemu/qemu_monitor_json.c                  |  607 +++++---
src/qemu/qemu_monitor_json.h                  |    6 -
src/qemu/qemu_validate.c                      |   29 +
.../caps_10.2.0_x86_64.replies                | 1373 +++++++++--------
.../caps_10.2.0_x86_64.xml                    |    3 +-
tests/qemumonitorjsontest.c                   |    2 +
...sk-statistics-intervals.x86_64-latest.args |   37 +
...isk-statistics-intervals.x86_64-latest.xml |   57 +
.../disk-statistics-intervals.xml             |   46 +
tests/qemuxmlconftest.c                       |    1 +
23 files changed, 2686 insertions(+), 1409 deletions(-)
create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.xml
[RFC PATCH 00/16] qemu: Expose 'limits' and 'timed_stats' block device statistics via bulk stats API
Posted by Peter Krempa via Devel 2 weeks, 2 days ago
This series is RFC as there's pending QEMU work enabling either of the
groups:

For the limits the following qemu patches are needed:

 https://lists.nongnu.org/archive/html/qemu-block/2025-09/msg00804.html

For timed stats, the statistics already exist but can't be enabled
without:

 https://lists.nongnu.org/archive/html/qemu-block/2025-10/msg00040.html

Patches 1-8 are cleanups and refactors

Patches 9-10 extract and expose the block backing file limits.

Patches 11-12 extract and expose the timed statistics

Patch 13 is qemu capabilities update with the necessary changes and is
not to be merged upstream; will be replaced by a proper update.

Patches 14-16 add infrastructure to enable timed stats.

Peter Krempa (16):
  qemu: monitor: Remove qemuMonitorQueryBlockstats
  qemu_monitor_json.c: Use consistent function hader coding style
  qemu_monitor_json.h: Use consistent function hader coding style
  qemu: monitor: Rework qemuBlockStats into a g_object
  qemuMigrationCookieAddNBD: Use qemuBlockGetNamedNodeData to fetch the
    capacities
  qemuMonitorJSONBlockStatsUpdateCapacityData: Merge into caller
  qemuMonitorJSONGetAllBlockStatsInfo: Directly probe data from
    'query-named-block-nodes'
  Remove qemuMonitorBlockStatsUpdateCapacityBlockdev
  qemu: monitor: Extract block limit values
  Expose qemu storage request limits via bulk stats API
  qemu_monitor: Extract 'timed_stats' of block devices
  Expose qemu timed block statistics via bulk stats API
  DO_NOT_MERGE: Update qemu capabilities after adding patches for block
    limits and timed stats
  qemu: capabilities: Introduce QEMU_CAPS_DISK_TIMED_STATS
  conf: Add configuration option for timed disk statistics collection
  qemu: Add support for enabling timed block device statistics
    collection

 docs/formatdomain.rst                         |   17 +
 docs/manpages/virsh.rst                       |   54 +
 include/libvirt/libvirt-domain.h              |  326 ++++
 src/conf/domain_conf.c                        |   34 +
 src/conf/domain_conf.h                        |    2 +
 src/conf/schemas/domaincommon.rng             |   11 +
 src/qemu/qemu_capabilities.c                  |    5 +
 src/qemu/qemu_capabilities.h                  |    1 +
 src/qemu/qemu_command.c                       |   15 +
 src/qemu/qemu_driver.c                        |  203 ++-
 src/qemu/qemu_migration_cookie.c              |   17 +-
 src/qemu/qemu_monitor.c                       |   58 +-
 src/qemu/qemu_monitor.h                       | 1191 ++++++++------
 src/qemu/qemu_monitor_json.c                  |  607 +++++---
 src/qemu/qemu_monitor_json.h                  |    6 -
 src/qemu/qemu_validate.c                      |   29 +
 .../caps_10.2.0_x86_64.replies                | 1373 +++++++++--------
 .../caps_10.2.0_x86_64.xml                    |    3 +-
 tests/qemumonitorjsontest.c                   |    2 +
 ...sk-statistics-intervals.x86_64-latest.args |   37 +
 ...isk-statistics-intervals.x86_64-latest.xml |   57 +
 .../disk-statistics-intervals.xml             |   46 +
 tests/qemuxmlconftest.c                       |    1 +
 23 files changed, 2686 insertions(+), 1409 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.xml

-- 
2.51.0
Re: [RFC PATCH 00/16] qemu: Expose 'limits' and 'timed_stats' block device statistics via bulk stats API
Posted by Michal Prívozník via Devel 4 days, 20 hours ago
On 10/9/25 17:16, Peter Krempa via Devel wrote:
> This series is RFC as there's pending QEMU work enabling either of the
> groups:
> 
> For the limits the following qemu patches are needed:
> 
>  https://lists.nongnu.org/archive/html/qemu-block/2025-09/msg00804.html
> 
> For timed stats, the statistics already exist but can't be enabled
> without:
> 
>  https://lists.nongnu.org/archive/html/qemu-block/2025-10/msg00040.html
> 
> Patches 1-8 are cleanups and refactors
> 
> Patches 9-10 extract and expose the block backing file limits.
> 
> Patches 11-12 extract and expose the timed statistics
> 
> Patch 13 is qemu capabilities update with the necessary changes and is
> not to be merged upstream; will be replaced by a proper update.
> 
> Patches 14-16 add infrastructure to enable timed stats.
> 
> Peter Krempa (16):
>   qemu: monitor: Remove qemuMonitorQueryBlockstats
>   qemu_monitor_json.c: Use consistent function hader coding style
>   qemu_monitor_json.h: Use consistent function hader coding style
>   qemu: monitor: Rework qemuBlockStats into a g_object
>   qemuMigrationCookieAddNBD: Use qemuBlockGetNamedNodeData to fetch the
>     capacities
>   qemuMonitorJSONBlockStatsUpdateCapacityData: Merge into caller
>   qemuMonitorJSONGetAllBlockStatsInfo: Directly probe data from
>     'query-named-block-nodes'
>   Remove qemuMonitorBlockStatsUpdateCapacityBlockdev
>   qemu: monitor: Extract block limit values
>   Expose qemu storage request limits via bulk stats API
>   qemu_monitor: Extract 'timed_stats' of block devices
>   Expose qemu timed block statistics via bulk stats API
>   DO_NOT_MERGE: Update qemu capabilities after adding patches for block
>     limits and timed stats
>   qemu: capabilities: Introduce QEMU_CAPS_DISK_TIMED_STATS
>   conf: Add configuration option for timed disk statistics collection
>   qemu: Add support for enabling timed block device statistics
>     collection
> 
>  docs/formatdomain.rst                         |   17 +
>  docs/manpages/virsh.rst                       |   54 +
>  include/libvirt/libvirt-domain.h              |  326 ++++
>  src/conf/domain_conf.c                        |   34 +
>  src/conf/domain_conf.h                        |    2 +
>  src/conf/schemas/domaincommon.rng             |   11 +
>  src/qemu/qemu_capabilities.c                  |    5 +
>  src/qemu/qemu_capabilities.h                  |    1 +
>  src/qemu/qemu_command.c                       |   15 +
>  src/qemu/qemu_driver.c                        |  203 ++-
>  src/qemu/qemu_migration_cookie.c              |   17 +-
>  src/qemu/qemu_monitor.c                       |   58 +-
>  src/qemu/qemu_monitor.h                       | 1191 ++++++++------
>  src/qemu/qemu_monitor_json.c                  |  607 +++++---
>  src/qemu/qemu_monitor_json.h                  |    6 -
>  src/qemu/qemu_validate.c                      |   29 +
>  .../caps_10.2.0_x86_64.replies                | 1373 +++++++++--------
>  .../caps_10.2.0_x86_64.xml                    |    3 +-
>  tests/qemumonitorjsontest.c                   |    2 +
>  ...sk-statistics-intervals.x86_64-latest.args |   37 +
>  ...isk-statistics-intervals.x86_64-latest.xml |   57 +
>  .../disk-statistics-intervals.xml             |   46 +
>  tests/qemuxmlconftest.c                       |    1 +
>  23 files changed, 2686 insertions(+), 1409 deletions(-)
>  create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.args
>  create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.x86_64-latest.xml
>  create mode 100644 tests/qemuxmlconfdata/disk-statistics-intervals.xml
> 

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

If you're willing to merge cleanup patches now go ahead. Or wait until
QEMU part is merged. Whatever.

Michal