In verbose mode, daemon will display the time elapsed for each command.
authorRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 13:11:19 +0000 (14:11 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Thu, 2 Jul 2009 13:12:24 +0000 (14:12 +0100)
daemon/proto.c

index ffb4a4e..39cee5a 100644 (file)
@@ -47,6 +47,8 @@ main_loop (int _sock)
   char lenbuf[4];
   unsigned len;
   struct guestfs_message_header hdr;
+  struct timeval start_t, end_t;
+  int64_t start_us, end_us, elapsed_us;
 
   sock = _sock;
 
@@ -102,6 +104,10 @@ main_loop (int _sock)
     }
 #endif
 
+    /* In verbose mode, display the time taken to run each command. */
+    if (verbose)
+      gettimeofday (&start_t, NULL);
+
     /* Decode the message header. */
     xdrmem_create (&xdr, buf, len, XDR_DECODE);
     if (!xdr_guestfs_message_header (&xdr, &hdr)) {
@@ -133,6 +139,19 @@ main_loop (int _sock)
     dispatch_incoming_message (&xdr);
     /* Note that dispatch_incoming_message will also send a reply. */
 
+    /* In verbose mode, display the time taken to run each command. */
+    if (verbose) {
+      gettimeofday (&end_t, NULL);
+
+      start_us = (int64_t) start_t.tv_sec * 1000000 + start_t.tv_usec;
+      end_us = (int64_t) end_t.tv_sec * 1000000 + end_t.tv_usec;
+      elapsed_us = end_us - start_us;
+      fprintf (stderr, "proc %d serial %d took %d.%02d seconds\n",
+              proc_nr, serial,
+              (int) (elapsed_us / 1000000),
+              (int) ((elapsed_us / 10000) % 100));
+    }
+
   cont:
     xdr_destroy (&xdr);
     free (buf);