Philippe Mathieu-Daudé <phi...@redhat.com> writes: > Keep statistics of some hardware errors, and number of > aligned/unaligned I/O accesses. > > QMP example booting a full RHEL 8.3 aarch64 guest: > > { "execute": "query-blockstats" } > { > "return": [ > { > "device": "", > "node-name": "drive0", > "stats": { > "flush_total_time_ns": 6026948, > "wr_highest_offset": 3383991230464, > "wr_total_time_ns": 807450995, > "failed_wr_operations": 0, > "failed_rd_operations": 0, > "wr_merged": 3, > "wr_bytes": 50133504, > "failed_unmap_operations": 0, > "failed_flush_operations": 0, > "account_invalid": false, > "rd_total_time_ns": 1846979900, > "flush_operations": 130, > "wr_operations": 659, > "rd_merged": 1192, > "rd_bytes": 218244096, > "account_failed": false, > "idle_time_ns": 2678641497, > "rd_operations": 7406, > }, > "driver-specific": { > "driver": "nvme", > "completion-errors": 0, > "unaligned-accesses": 2959, > "aligned-accesses": 4477 > }, > "qdev": "/machine/peripheral-anon/device[0]/virtio-backend" > } > ] > } > > Suggested-by: Stefan Hajnoczi <stefa...@gmail.com> > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > v2: 'access-nb' -> 'accesses' (Stefan) > --- > qapi/block-core.json | 24 +++++++++++++++++++++++- > block/nvme.c | 27 +++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+), 1 deletion(-) > > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 86ed72ef9f..dec17e3036 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -941,6 +941,27 @@ > 'discard-nb-failed': 'uint64', > 'discard-bytes-ok': 'uint64' } } > > +## > +# @BlockStatsSpecificNvme: > +# > +# NVMe driver statistics > +# > +# @completion-errors: The number of completion errors. > +# > +# @aligned-accesses: The number of aligned accesses performed by > +# the driver. > +# > +# @unaligned-accesses: The number of unaligned accesses performed by > +# the driver. > +# > +# Since: 5.2 > +## > +{ 'struct': 'BlockStatsSpecificNvme', > + 'data': { > + 'completion-errors': 'uint64', > + 'aligned-accesses': 'uint64', > + 'unaligned-accesses': 'uint64' } } > + > ## > # @BlockStatsSpecific: > # > @@ -953,7 +974,8 @@ > 'discriminator': 'driver', > 'data': { > 'file': 'BlockStatsSpecificFile', > - 'host_device': 'BlockStatsSpecificFile' } } > + 'host_device': 'BlockStatsSpecificFile', > + 'nvme': 'BlockStatsSpecificNvme' } } > > ## > # @BlockStats:
Acked-by: Markus Armbruster <arm...@redhat.com>