Allow a region to collect a latency histogram of flushes.

https://virtuozzo.atlassian.net/browse/VSTOR-103846
Signed-off-by: Andrey Zhadchenko <[email protected]>
---
 .../admin-guide/device-mapper/statistics.rst          | 11 +++++++++--
 drivers/md/dm-stats.c                                 | 10 +++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/Documentation/admin-guide/device-mapper/statistics.rst 
b/Documentation/admin-guide/device-mapper/statistics.rst
index 99b8ad45d47fd..ce02fd8a2873d 100644
--- a/Documentation/admin-guide/device-mapper/statistics.rst
+++ b/Documentation/admin-guide/device-mapper/statistics.rst
@@ -101,6 +101,12 @@ Messages
          wr_histogram:n1,n2,n3,n4,...
                collect a latency histogram like "histogram", but only
                account write requests.
+         flush_histogram:n1,n2,n3,n4,...
+               collect a latency histogram like "histogram", but only
+               account data-less cache flushes.  Since a data-less
+               flush is not directed at any particular sector, it is
+               accounted in the first step-sized area of the region
+               and does not modify any other counters.
          Multiple histogram arguments may be specified for one region;
          each histogram is reported as an additional counter set in the
          @stats_print output, in the order the histograms were specified.
@@ -148,8 +154,9 @@ Messages
                precise_timestamps hist_total_latency histogram:n1,n2,n3,...
 
        The strings "precise_timestamps", "hist_total_latency" and
-       "histogram" (also "rd_histogram" and "wr_histogram") are printed
-       only if they were specified when creating the region.
+       "histogram" (also "rd_histogram", "wr_histogram" and
+       "flush_histogram") are printed only if they were specified when
+       creating the region.
 
     @stats_print <region_id> [<starting_line> <number_of_lines>]
        Print counters for each step-sized area of a region.
diff --git a/drivers/md/dm-stats.c b/drivers/md/dm-stats.c
index 4e6667322c0a2..3a0d80bbf78da 100644
--- a/drivers/md/dm-stats.c
+++ b/drivers/md/dm-stats.c
@@ -53,7 +53,7 @@ enum {
 #define DM_STAT_CLASSES_DATA   ((1 << DM_STAT_CLASS_READ) | \
                                 (1 << DM_STAT_CLASS_WRITE))
 
-#define DM_STAT_MAX_HISTOGRAMS         3
+#define DM_STAT_MAX_HISTOGRAMS         4
 
 struct dm_stat_histogram {
        unsigned int class_mask;        /* classes this histogram accounts */
@@ -548,6 +548,8 @@ static const char *dm_stat_histogram_name(unsigned int 
class_mask)
                return "rd_histogram";
        case 1 << DM_STAT_CLASS_WRITE:
                return "wr_histogram";
+       case 1 << DM_STAT_CLASS_FLUSH:
+               return "flush_histogram";
        default:
                return "histogram";
        }
@@ -1239,6 +1241,12 @@ static int message_stats_create(struct mapped_device *md,
                                                  a + 13);
                                if (r)
                                        goto ret;
+                       } else if (!strncasecmp(a, "flush_histogram:", 16)) {
+                               r = add_histogram(histograms, &n_histograms,
+                                                 1 << DM_STAT_CLASS_FLUSH,
+                                                 a + 16);
+                               if (r)
+                                       goto ret;
                        } else
                                goto ret_einval;
                }
-- 
2.43.5

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to