[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH 1/7] qapi: add unmap to BlockDeviceStats
From: |
Anton Nefedov |
Subject: |
[Qemu-block] [PATCH 1/7] qapi: add unmap to BlockDeviceStats |
Date: |
Mon, 20 Nov 2017 19:50:58 +0300 |
Signed-off-by: Anton Nefedov <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
qapi/block-core.json | 20 ++++++++++++++++++++
include/block/accounting.h | 1 +
block/qapi.c | 6 ++++++
3 files changed, 27 insertions(+)
diff --git a/qapi/block-core.json b/qapi/block-core.json
index 76bf50f..ba2705d 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -730,6 +730,23 @@
# @timed_stats: Statistics specific to the set of previously defined
# intervals of time (Since 2.5)
#
+# @unmap_bytes: The number of bytes unmapped by the device (Since 2.12)
+#
+# @unmap_operations: The number of unmap operations performed by the device
+# (Since 2.12)
+#
+# @unmap_total_time_ns: Total time spent on unmap operations in nano-seconds
+# (Since 2.12)
+#
+# @unmap_merged: Number of unmap requests that have been merged into another
+# request (Since 2.12)
+#
+# @failed_unmap_operations: The number of failed unmap operations performed
+# by the device (Since 2.12)
+#
+# @invalid_unmap_operations: The number of invalid unmap operations performed
+# by the device (Since 2.12)
+#
# Since: 0.14.0
##
{ 'struct': 'BlockDeviceStats',
@@ -741,6 +758,9 @@
'failed_rd_operations': 'int', 'failed_wr_operations': 'int',
'failed_flush_operations': 'int', 'invalid_rd_operations': 'int',
'invalid_wr_operations': 'int', 'invalid_flush_operations': 'int',
+ 'unmap_bytes' : 'int', 'unmap_operations': 'int',
+ 'unmap_total_time_ns': 'int', 'unmap_merged': 'int',
+ 'failed_unmap_operations': 'int', 'invalid_unmap_operations': 'int',
'account_invalid': 'bool', 'account_failed': 'bool',
'timed_stats': ['BlockDeviceTimedStats'] } }
diff --git a/include/block/accounting.h b/include/block/accounting.h
index b833d26..4e53c4a 100644
--- a/include/block/accounting.h
+++ b/include/block/accounting.h
@@ -35,6 +35,7 @@ enum BlockAcctType {
BLOCK_ACCT_READ,
BLOCK_ACCT_WRITE,
BLOCK_ACCT_FLUSH,
+ BLOCK_ACCT_UNMAP,
BLOCK_MAX_IOTYPE,
};
diff --git a/block/qapi.c b/block/qapi.c
index fc10f0a..6e110f2 100644
--- a/block/qapi.c
+++ b/block/qapi.c
@@ -396,24 +396,30 @@ static void bdrv_query_blk_stats(BlockDeviceStats *ds,
BlockBackend *blk)
ds->rd_bytes = stats->nr_bytes[BLOCK_ACCT_READ];
ds->wr_bytes = stats->nr_bytes[BLOCK_ACCT_WRITE];
+ ds->unmap_bytes = stats->nr_bytes[BLOCK_ACCT_UNMAP];
ds->rd_operations = stats->nr_ops[BLOCK_ACCT_READ];
ds->wr_operations = stats->nr_ops[BLOCK_ACCT_WRITE];
+ ds->unmap_operations = stats->nr_ops[BLOCK_ACCT_UNMAP];
ds->failed_rd_operations = stats->failed_ops[BLOCK_ACCT_READ];
ds->failed_wr_operations = stats->failed_ops[BLOCK_ACCT_WRITE];
ds->failed_flush_operations = stats->failed_ops[BLOCK_ACCT_FLUSH];
+ ds->failed_unmap_operations = stats->failed_ops[BLOCK_ACCT_UNMAP];
ds->invalid_rd_operations = stats->invalid_ops[BLOCK_ACCT_READ];
ds->invalid_wr_operations = stats->invalid_ops[BLOCK_ACCT_WRITE];
ds->invalid_flush_operations =
stats->invalid_ops[BLOCK_ACCT_FLUSH];
+ ds->invalid_unmap_operations = stats->invalid_ops[BLOCK_ACCT_UNMAP];
ds->rd_merged = stats->merged[BLOCK_ACCT_READ];
ds->wr_merged = stats->merged[BLOCK_ACCT_WRITE];
+ ds->unmap_merged = stats->merged[BLOCK_ACCT_UNMAP];
ds->flush_operations = stats->nr_ops[BLOCK_ACCT_FLUSH];
ds->wr_total_time_ns = stats->total_time_ns[BLOCK_ACCT_WRITE];
ds->rd_total_time_ns = stats->total_time_ns[BLOCK_ACCT_READ];
ds->flush_total_time_ns = stats->total_time_ns[BLOCK_ACCT_FLUSH];
+ ds->unmap_total_time_ns = stats->total_time_ns[BLOCK_ACCT_UNMAP];
ds->has_idle_time_ns = stats->last_access_time_ns > 0;
if (ds->has_idle_time_ns) {
--
2.7.4
- [Qemu-block] [PATCH 0/7] discard blockstats, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 1/7] qapi: add unmap to BlockDeviceStats,
Anton Nefedov <=
- [Qemu-block] [PATCH 2/7] ide: account UNMAP (TRIM) operations, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 4/7] scsi: move unmap error checking to the complete callback, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 5/7] scsi: account unmap operations, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 6/7] file-posix: account discard operations, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 7/7] qapi: query-blockstat: add driver specific file-posix stats, Anton Nefedov, 2017/11/20
- [Qemu-block] [PATCH 3/7] scsi: store unmap offset and nb_sectors in request struct, Anton Nefedov, 2017/11/20