[Libguestfs] [PATCH nbdkit v3 5/5] filters: stats: Show total stats

Nir Soffer nirsof at gmail.com
Wed Dec 4 22:34:47 UTC 2019


Change the first line to show total ops, time, total size, and rate.
The totals are useful for understanding the total throughput of the
application.
---
 filters/stats/nbdkit-stats-filter.pod |  8 ++++----
 filters/stats/stats.c                 | 19 ++++++++++++++++++-
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/filters/stats/nbdkit-stats-filter.pod b/filters/stats/nbdkit-stats-filter.pod
index ac8173c..4fda092 100644
--- a/filters/stats/nbdkit-stats-filter.pod
+++ b/filters/stats/nbdkit-stats-filter.pod
@@ -25,10 +25,10 @@ number of read, write and trim operations involved:
                  run : \
                  mkfs ext4 /dev/sda
  '
- elapsed time: 1.258933 s
- read: 254 ops, 0.000326 s, 4.78 MiB, 14.31 GiB/s op, 3.80 MiB/s total
- write: 78 ops, 0.167061 s, 32.64 MiB, 195.40 MiB/s op, 25.93 MiB/s total
- trim: 33 ops, 0.000304 s, 1.00 GiB, 3289.47 GiB/s op, 813.39 MiB/s total
+ total: 370 ops, 1.282993 s, 1.04 GiB, 827.29 MiB/s
+ read: 250 ops, 0.000364 s, 4.76 MiB, 12.78 GiB/s op, 3.71 MiB/s total
+ write: 78 ops, 0.175715 s, 32.64 MiB, 185.78 MiB/s op, 25.44 MiB/s total
+ trim: 33 ops, 0.000252 s, 1.00 GiB, 3968.25 GiB/s op, 798.13 MiB/s total
  flush: 9 ops, 0.000002 s, 0 bytes, 0 bytes/s op, 0 bytes/s total
 
 =head1 PARAMETERS
diff --git a/filters/stats/stats.c b/filters/stats/stats.c
index fbd6b87..0759ceb 100644
--- a/filters/stats/stats.c
+++ b/filters/stats/stats.c
@@ -125,10 +125,27 @@ print_stat (const stat *st, int64_t usecs)
   }
 }
 
+static void
+print_totals (uint64_t usecs)
+{
+  uint64_t ops = pread_st.ops + pwrite_st.ops + trim_st.ops + zero_st.ops +
+    extents_st.ops + flush_st.ops;
+  uint64_t bytes = pread_st.bytes + pwrite_st.bytes + trim_st.bytes +
+    zero_st.bytes;
+  char *size = humansize (bytes);
+  char *rate = humanrate (bytes, usecs);
+
+  fprintf (fp, "total: %" PRIu64 " ops, %.6f s, %s, %s/s\n",
+           ops, usecs / 1000000.0, maybe (size), maybe (rate));
+
+  free (size);
+  free (rate);
+}
+
 static inline void
 print_stats (int64_t usecs)
 {
-  fprintf (fp, "elapsed time: %.6f s\n", usecs / 1000000.);
+  print_totals (usecs);
   print_stat (&pread_st,   usecs);
   print_stat (&pwrite_st,  usecs);
   print_stat (&trim_st,    usecs);
-- 
2.21.0





More information about the Libguestfs mailing list