]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
rxperf: use parallel connections
authorJeffrey Altman <jaltman@your-file-system.com>
Mon, 8 Nov 2010 16:07:14 +0000 (11:07 -0500)
committerStephan Wiesand <stephan.wiesand@desy.de>
Mon, 10 Dec 2012 13:53:08 +0000 (05:53 -0800)
When the number of threads exceeds RX_MAXCALLS allocate additional
rx connection objects.

Reviewed-on: http://gerrit.openafs.org/3285
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit df682aa34170d285247c5486050db3ee7d3774f0)

Change-Id: Ia699fe0230e6dde2bc1f270d766f512f2693c94f
Reviewed-on: http://gerrit.openafs.org/8421
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
src/rx/test/rxperf.c

index 3ab7b768b5b1db295b52a4fe3a7e489e9b8b42fd..3f4a918f0fe7b403db2d65dd47e5dc3a98bef2af 100644 (file)
@@ -832,23 +832,6 @@ do_client(const char *server, short port, char *filename, afs_int32 command,
 
     get_sec(0, &secureobj, &secureindex);
 
-    conn = rx_NewConnection(addr, htons(port), RX_SERVER_ID, secureobj, secureindex);
-    if (conn == NULL)
-       errx(1, "failed to contact server");
-
-#ifdef AFS_PTHREAD_ENV
-    pthread_attr_init(&tattr);
-    pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_JOINABLE);
-#endif
-
-    params->conn = conn;
-    params->filename = filename;
-    params->command = command;
-    params->times = times;
-    params->bytes = bytes;
-    params->sendbytes = sendbytes;
-    params->readbytes = readbytes;
-
     switch (command) {
     case RX_PERF_RPC:
         sprintf(stamp, "RPC: threads\t%d, times\t%d, write bytes\t%d, read bytes\t%d",
@@ -868,11 +851,38 @@ do_client(const char *server, short port, char *filename, afs_int32 command,
         break;
     }
 
+    conn = rx_NewConnection(addr, htons(port), RX_SERVER_ID, secureobj, secureindex);
+    if (conn == NULL)
+       errx(1, "failed to contact server");
+
+#ifdef AFS_PTHREAD_ENV
+    pthread_attr_init(&tattr);
+    pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_JOINABLE);
+#endif
+
+    params->conn = conn;
+    params->filename = filename;
+    params->command = command;
+    params->times = times;
+    params->bytes = bytes;
+    params->sendbytes = sendbytes;
+    params->readbytes = readbytes;
+
     start_timer();
 
 #ifdef AFS_PTHREAD_ENV
-    for ( i=0; i<threads; i++)
+    for ( i=0; i<threads; i++) {
         pthread_create(&thread[i], &tattr, client_thread, params);
+        if ( (i + 1) % RX_MAXCALLS == 0 ) {
+            conn = rx_NewConnection(addr, htons(port), RX_SERVER_ID, secureobj, secureindex);
+            if (conn != NULL) {
+                struct client_data *new_params = malloc(sizeof(struct client_data));
+                memcpy(new_params, params, sizeof(struct client_data));
+                new_params->conn = conn;
+                params = new_params;
+            }
+        }
+    }
 #else
         client_thread(params);
 #endif