summaryrefslogtreecommitdiff
path: root/block/accounting.c
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2015-10-28 17:33:06 +0200
committerKevin Wolf <kwolf@redhat.com>2015-11-12 16:22:46 +0100
commit96e4dedaff9922f87e4ec351d51d3f093198382a (patch)
tree4f13bd41dbde11ddedeb6ce30d0ae0ca11e8ea6e /block/accounting.c
parent979e9b03fc8c85d3b78a14410c64cbb16d348095 (diff)
downloadqemu-96e4dedaff9922f87e4ec351d51d3f093198382a.tar.gz
block: Add average I/O queue depth to BlockDeviceTimedStats
This patch adds two new fields to BlockDeviceTimedStats that track the average number of pending read and write requests for a block device. The values are calculated for the period of time defined for that interval. Signed-off-by: Alberto Garcia <berto@igalia.com> Message-id: fd31fef53e2714f2f30d59ed58ca2f67ec9ab926.1446044837.git.berto@igalia.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/accounting.c')
-rw-r--r--block/accounting.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/block/accounting.c b/block/accounting.c
index 61de8ce9bc..a9419315a3 100644
--- a/block/accounting.c
+++ b/block/accounting.c
@@ -143,3 +143,15 @@ int64_t block_acct_idle_time_ns(BlockAcctStats *stats)
{
return qemu_clock_get_ns(clock_type) - stats->last_access_time_ns;
}
+
+double block_acct_queue_depth(BlockAcctTimedStats *stats,
+ enum BlockAcctType type)
+{
+ uint64_t sum, elapsed;
+
+ assert(type < BLOCK_MAX_IOTYPE);
+
+ sum = timed_average_sum(&stats->latency[type], &elapsed);
+
+ return (double) sum / elapsed;
+}