From 07d83cd473146a0db9c2ed521b6fa6ba607b0d40 Mon Sep 17 00:00:00 2001 From: Dan van der Ster Date: Fri, 14 Dec 2012 11:08:44 +0100 Subject: [PATCH] rxperf: print achieved transfer rate Prints the client transfer rate in appropriate units (kbit/s, Mbit/s, or Gbit/s). Change-Id: I5632185953c5d2bfc962af71152734d842cfb021 Reviewed-on: http://gerrit.openafs.org/8758 Reviewed-by: Jeffrey Altman Tested-by: BuildBot Reviewed-by: Simon Wilkinson Reviewed-by: Derrick Brashear --- src/tools/rxperf/rxperf.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/tools/rxperf/rxperf.c b/src/tools/rxperf/rxperf.c index b20f91fc1e..c127ecd2f2 100644 --- a/src/tools/rxperf/rxperf.c +++ b/src/tools/rxperf/rxperf.c @@ -118,16 +118,25 @@ start_timer(void) */ static void -end_and_print_timer(char *str) +end_and_print_timer(char *str, long long bytes) { long long start_l, stop_l; + double kbps; timer_check--; assert(timer_check == 0); gettimeofday(&timer_stop, NULL); start_l = timer_start.tv_sec * 1000000 + timer_start.tv_usec; stop_l = timer_stop.tv_sec * 1000000 + timer_stop.tv_usec; - printf("%s:\t%8llu msec\n", str, (stop_l - start_l) / 1000); + printf("%s:\t%8llu msec", str, (stop_l - start_l) / 1000); + + kbps = bytes * 8000.0 / (stop_l - start_l); + if (kbps > 1000000.0) + printf("\t[%.4g Gbit/s]\n", kbps/1000000.0); + else if (kbps > 1000.0) + printf("\t[%.4g Mbit/s]\n", kbps/1000.0); + else + printf("\t[%.4g kbit/s]\n", kbps); } /* @@ -792,7 +801,17 @@ do_client(const char *server, short port, char *filename, afs_int32 command, pthread_join(thread[i], &status); #endif - end_and_print_timer(stamp); + switch (command) { + case RX_PERF_RPC: + end_and_print_timer(stamp, (long long)threads*times*(sendbytes+readbytes)); + break; + case RX_PERF_RECV: + case RX_PERF_SEND: + case RX_PERF_FILE: + end_and_print_timer(stamp, (long long)threads*times*bytes); + break; + } + DBFPRINT(("done for good\n")); if (dumpstats) {