mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
block: Compute minimum, maximum and average I/O latencies
This patch keeps track of the minimum, maximum and average latencies of I/O operations during a certain interval of time. The values are exposed in the BlockDeviceTimedStats structure. An option to define the intervals to collect these statistics will be added in a separate patch. Signed-off-by: Alberto Garcia <berto@igalia.com> Message-id: c7382dc89622c64f918d09f32815827772628f8e.1446044837.git.berto@igalia.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
362e9299b3
commit
979e9b03fc
6 changed files with 168 additions and 1 deletions
|
@ -414,6 +414,52 @@
|
|||
##
|
||||
{ 'command': 'query-block', 'returns': ['BlockInfo'] }
|
||||
|
||||
|
||||
##
|
||||
# @BlockDeviceTimedStats:
|
||||
#
|
||||
# Statistics of a block device during a given interval of time.
|
||||
#
|
||||
# @interval_length: Interval used for calculating the statistics,
|
||||
# in seconds.
|
||||
#
|
||||
# @min_rd_latency_ns: Minimum latency of read operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @min_wr_latency_ns: Minimum latency of write operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @min_flush_latency_ns: Minimum latency of flush operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @max_rd_latency_ns: Maximum latency of read operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @max_wr_latency_ns: Maximum latency of write operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @max_flush_latency_ns: Maximum latency of flush operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @avg_rd_latency_ns: Average latency of read operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @avg_wr_latency_ns: Average latency of write operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# @avg_flush_latency_ns: Average latency of flush operations in the
|
||||
# defined interval, in nanoseconds.
|
||||
#
|
||||
# Since: 2.5
|
||||
##
|
||||
|
||||
{ 'struct': 'BlockDeviceTimedStats',
|
||||
'data': { 'interval_length': 'int', 'min_rd_latency_ns': 'int',
|
||||
'max_rd_latency_ns': 'int', 'avg_rd_latency_ns': 'int',
|
||||
'min_wr_latency_ns': 'int', 'max_wr_latency_ns': 'int',
|
||||
'avg_wr_latency_ns': 'int', 'min_flush_latency_ns': 'int',
|
||||
'max_flush_latency_ns': 'int', 'avg_flush_latency_ns': 'int' } }
|
||||
|
||||
##
|
||||
# @BlockDeviceStats:
|
||||
#
|
||||
|
@ -476,6 +522,9 @@
|
|||
# @account_failed: Whether failed operations are included in the
|
||||
# latency and last access statistics (Since 2.5)
|
||||
#
|
||||
# @timed_stats: Statistics specific to the set of previously defined
|
||||
# intervals of time (Since 2.5)
|
||||
#
|
||||
# Since: 0.14.0
|
||||
##
|
||||
{ 'struct': 'BlockDeviceStats',
|
||||
|
@ -487,7 +536,8 @@
|
|||
'failed_rd_operations': 'int', 'failed_wr_operations': 'int',
|
||||
'failed_flush_operations': 'int', 'invalid_rd_operations': 'int',
|
||||
'invalid_wr_operations': 'int', 'invalid_flush_operations': 'int',
|
||||
'account_invalid': 'bool', 'account_failed': 'bool' } }
|
||||
'account_invalid': 'bool', 'account_failed': 'bool',
|
||||
'timed_stats': ['BlockDeviceTimedStats'] } }
|
||||
|
||||
##
|
||||
# @BlockStats:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue