[Libguestfs] [PATCH libnbd 4/6] tests/synch-parallel: Show throughput in MiB/s

Nir Soffer nsoffer at redhat.com
Sun Nov 14 07:21:43 UTC 2021


Using Mbytes/s is less useful, people expect values in MiB.

Example output:

$ ./synch-parallel.sh
...
bytes sent: 12686721024 (1209.9 MiB/s)
bytes received: 12734693376 (1214.47 MiB/s)
I/O requests: 96975 (9697.5 IOPS)

Signed-off-by: Nir Soffer <nsoffer at redhat.com>
---
 tests/synch-parallel.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/tests/synch-parallel.c b/tests/synch-parallel.c
index cecfeae..423e1f0 100644
--- a/tests/synch-parallel.c
+++ b/tests/synch-parallel.c
@@ -36,40 +36,42 @@
 #include <sys/time.h>
 
 #include <pthread.h>
 
 #include <libnbd.h>
 
 #include "byte-swapping.h"
 
 /* We keep a shadow of the RAM disk so we can check integrity of the data. */
 static char *ramdisk;
 
 /* This is also defined in synch-parallel.sh and checked here. */
 #define EXPORTSIZE (8*1024*1024)
 
 /* How long (seconds) that the test will run for. */
 #define RUN_TIME 10
 
 /* Number of threads. */
 #define NR_THREADS 8
 
+#define MiB (1024*1024)
+
 #define MICROSECONDS 1000000
 
 /* Unix socket. */
 static const char *unixsocket;
 
 struct thread_status {
   size_t i;                     /* Thread index, 0 .. NR_THREADS-1 */
   uint64_t offset, length;      /* Area assigned to this thread. */
   int status;                   /* Return status. */
   unsigned requests;            /* Total number of requests made. */
   uint64_t bytes_sent, bytes_received; /* Bytes sent and received by thread. */
 };
 
 static void *start_thread (void *arg);
 
 static inline int64_t
 microtime (void)
 {
   struct timeval tv;
 
@@ -139,44 +141,44 @@ main (int argc, char *argv[])
       fprintf (stderr, "thread %zu failed with status %d\n",
                i, status[i].status);
       errors++;
     }
     requests += status[i].requests;
     bytes_sent += status[i].bytes_sent;
     bytes_received += status[i].bytes_received;
   }
 
   free (ramdisk);
 
   /* Print some stats. */
   printf ("TLS: %s\n",
 #ifdef TLS
           "enabled"
 #else
           "disabled"
 #endif
           );
 
-  printf ("bytes sent: %" PRIu64 " (%g Mbytes/s)\n",
-          bytes_sent, (double) bytes_sent / RUN_TIME / 1000000);
-  printf ("bytes received: %" PRIu64 " (%g Mbytes/s)\n",
-          bytes_received, (double) bytes_received / RUN_TIME / 1000000);
+  printf ("bytes sent: %" PRIu64 " (%g MiB/s)\n",
+          bytes_sent, (double) bytes_sent / RUN_TIME / MiB);
+  printf ("bytes received: %" PRIu64 " (%g MiB/s)\n",
+          bytes_received, (double) bytes_received / RUN_TIME / MiB);
 
   printf ("I/O requests: %u (%g IOPS)\n",
           requests, (double) requests / RUN_TIME);
 
   exit (errors == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
 }
 
 #define BUFFER_SIZE 16384
 
 static void *
 start_thread (void *arg)
 {
   struct thread_status *status = arg;
   struct nbd_handle *nbd;
   char *buf;
   int cmd;
   uint64_t offset;
   int64_t start_usec, stop_usec, now_usec;
 
   buf = calloc (BUFFER_SIZE, 1);
-- 
2.31.1




More information about the Libguestfs mailing list