]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
pop (CONFLICT)
authorSean Hefty <sean.hefty@intel.com>
Mon, 28 May 2012 00:01:28 +0000 (17:01 -0700)
committerSean Hefty <sean.hefty@intel.com>
Mon, 28 May 2012 00:01:28 +0000 (17:01 -0700)
meta
patches/rstream-opt

diff --git a/meta b/meta
index 4ff0b5525e78cdbf1444cbdc8cf2483dbb3bd852..c1bd023f6d38278de0d1ce7feb4941cdbd2eb320 100644 (file)
--- a/meta
+++ b/meta
@@ -1,5 +1,5 @@
 Version: 1
-Previous: b8f188c5442dfd0baa122152192d7696a1379870
+Previous: af37bbeb5b96f083538b1912a3ad2099d59af0b7
 Head: 1176abc686ada043ea9adb51219d45c945faa711
 Applied:
   destroy_cqs: 66410c265b2661e16b7f6126bcc4ea5c7e1af1bd
@@ -18,6 +18,6 @@ Applied:
   pre-socket: b65c54063459dcfedd74529aaa8571b77698acea
   rs-states: 91edc2c3d92307144d82c22b5928ebd3ef6f21e8
   rs-recv-hang: 87f678725a461861b9453cc205ae91a800630c14
+  rstream-opt: 1176abc686ada043ea9adb51219d45c945faa711
 Unapplied:
-  rstream-opt: f5bae827622b3754f27b3df3066943efd7181c07
 Hidden:
index 4c7f8febdcc32d654f9695ea89abfc656a8d4173..c81690940685994327763f07dfabae65d50bd699 100644 (file)
@@ -1,5 +1,5 @@
-Bottom: 1f4b9e8b1201e5fac58e29366786f53b07faf3f1
-Top:    5a85db9c7f7a5745fbf5b24189f0dcd3d7434c9b
+Bottom: 5762ea9f26bec43ae89d7dd2fded0b8cbe158a35
+Top:    5762ea9f26bec43ae89d7dd2fded0b8cbe158a35
 Author: Sean Hefty <sean.hefty@intel.com>
 Date:   2012-05-27 14:07:42 -0700
 
@@ -13,329 +13,4 @@ Signed-off-by: Sean Hefty <sean.hefty@intel.com>
 
 ---
 
-diff --git a/examples/rstream.c b/examples/rstream.c
-index 757a0f6..a96a5a4 100644
---- a/examples/rstream.c
-+++ b/examples/rstream.c
-@@ -71,12 +71,20 @@ static struct test_size_param test_size[] = {
- };
- #define TEST_CNT (sizeof test_size / sizeof test_size[0])
-+enum rs_optimization {
-+      opt_mixed,
-+      opt_latency,
-+      opt_bandwidth
-+};
-+
-+static int rs, lrs;
- static int use_rs = 1;
- static int use_async;
- static int verify;
- static int flags = MSG_DONTWAIT;
- static int poll_timeout = 0;
- static int custom;
-+static enum rs_optimization optimization;
- static int size_option;
- static int iterations = 1;
- static int transfer_size = 1000;
-@@ -238,7 +246,7 @@ static int do_poll(struct pollfd *fds)
-       return ret == 1 ? 0 : ret;
- }
--static int send_xfer(int rs, int size)
-+static int send_xfer(int size)
- {
-       struct pollfd fds;
-       int offset, ret;
-@@ -270,7 +278,7 @@ static int send_xfer(int rs, int size)
-       return 0;
- }
--static int recv_xfer(int rs, int size)
-+static int recv_xfer(int size)
- {
-       struct pollfd fds;
-       int offset, ret;
-@@ -305,37 +313,37 @@ static int recv_xfer(int rs, int size)
-       return 0;
- }
--static int sync_test(int rs)
-+static int sync_test(void)
- {
-       int ret;
--      ret = dst_addr ? send_xfer(rs, 4) : recv_xfer(rs, 4);
-+      ret = dst_addr ? send_xfer(4) : recv_xfer(4);
-       if (ret)
-               return ret;
--      return dst_addr ? recv_xfer(rs, 4) : send_xfer(rs, 4);
-+      return dst_addr ? recv_xfer(4) : send_xfer(4);
- }
--static int run_test(int rs)
-+static int run_test(void)
- {
-       int ret, i, t;
--      ret = sync_test(rs);
-+      ret = sync_test();
-       if (ret)
-               goto out;
-       gettimeofday(&start, NULL);
-       for (i = 0; i < iterations; i++) {
-               for (t = 0; t < transfer_count; t++) {
--                      ret = dst_addr ? send_xfer(rs, transfer_size) :
--                                       recv_xfer(rs, transfer_size);
-+                      ret = dst_addr ? send_xfer(transfer_size) :
-+                                       recv_xfer(transfer_size);
-                       if (ret)
-                               goto out;
-               }
-               for (t = 0; t < transfer_count; t++) {
--                      ret = dst_addr ? recv_xfer(rs, transfer_size) :
--                                       send_xfer(rs, transfer_size);
-+                      ret = dst_addr ? recv_xfer(transfer_size) :
-+                                       send_xfer(transfer_size);
-                       if (ret)
-                               goto out;
-               }
-@@ -357,6 +365,9 @@ static void set_options(int rs)
-               size = sizeof buffer_size;
-               rs_setsockopt(rs, SOL_SOCKET, SO_SNDBUF, (void *) &buffer_size, size);
-               rs_setsockopt(rs, SOL_SOCKET, SO_RCVBUF, (void *) &buffer_size, size);
-+      } else {
-+              if (optimization == opt_bandwidth) {
-+                      rs_setsockopt(rs, SOL_SOCKET, SO_SNDBUF, &val, sizeof val)
-       }
-       val = 1;
-@@ -364,13 +375,24 @@ static void set_options(int rs)
-       if (flags & MSG_DONTWAIT)
-               rs_fcntl(rs, F_SETFL, O_NONBLOCK);
-+
-+      if (use_rs) {
-+              /* Inline size based on experimental data */
-+              if (optimization == opt_latency)
-+                      val = 384;
-+              else if (optimization == opt_bandwidth)
-+                      val = 0;
-+              else
-+                      val = 64;
-+
-+              rs_setsockopt(rs, SOL_RDMA, RDMA_INLINE, &val, sizeof val);
-+      }
- }
--static int server_connect(void)
-+static int server_listen(void)
- {
--      struct pollfd fds;
-       struct addrinfo hints, *res;
--      int rs, lrs, ret;
-+      int val, ret;
-       memset(&hints, 0, sizeof hints);
-       hints.ai_flags = RAI_PASSIVE;
-@@ -383,30 +405,41 @@ static int server_connect(void)
-       lrs = rs_socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-       if (lrs < 0) {
-               perror("rsocket");
--              rs = lrs;
-+              ret = lrs;
-               goto free;
-       }
--      set_options(lrs);
--      rs = 1;
--      rs = rs_setsockopt(lrs, SOL_SOCKET, SO_REUSEADDR, &rs, sizeof rs);
--      if (rs) {
-+      val = 1;
-+      ret = rs_setsockopt(lrs, SOL_SOCKET, SO_REUSEADDR, &val, sizeof val);
-+      if (ret) {
-               perror("rsetsockopt SO_REUSEADDR");
-               goto close;
-       }
--      rs = rs_bind(lrs, res->ai_addr, res->ai_addrlen);
--      if (rs) {
-+      ret = rs_bind(lrs, res->ai_addr, res->ai_addrlen);
-+      if (ret) {
-               perror("rbind");
-               goto close;
-       }
--      rs = rs_listen(lrs, 1);
--      if (rs) {
-+      ret = rs_listen(lrs, 1);
-+      if (ret)
-               perror("rlisten");
--              goto close;
--      }
-+close:
-+      if (ret)
-+              rs_close(lrs);
-+free:
-+      freeaddrinfo(res);
-+      return ret;
-+}
-+
-+static int server_connect(void)
-+{
-+      struct pollfd fds;
-+      int ret;
-+
-+      set_options(lrs);
-       do {
-               if (use_async) {
-                       fds.fd = lrs;
-@@ -415,28 +448,26 @@ static int server_connect(void)
-                       ret = do_poll(&fds);
-                       if (ret) {
-                               perror("rpoll");
--                              goto close;
-+                              return ret;
-                       }
-               }
-               rs = rs_accept(lrs, NULL, 0);
-       } while (rs < 0 && (errno == EAGAIN || errno == EWOULDBLOCK));
--      if (rs < 0)
-+      if (rs < 0) {
-+              ret = rs;
-               perror("raccept");
-+      }
-       set_options(rs);
--close:
--      rs_close(lrs);
--free:
--      freeaddrinfo(res);
--      return rs;
-+      return ret;
- }
- static int client_connect(void)
- {
-       struct addrinfo *res;
-       struct pollfd fds;
--      int ret, rs, err;
-+      int ret, err;
-       socklen_t len;
-       ret = getaddrinfo(dst_addr, port, NULL, &res);
-@@ -448,6 +479,7 @@ static int client_connect(void)
-       rs = rs_socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-       if (rs < 0) {
-               perror("rsocket");
-+              ret = rs;
-               goto free;
-       }
-@@ -457,40 +489,38 @@ static int client_connect(void)
-       ret = rs_connect(rs, res->ai_addr, res->ai_addrlen);
-       if (ret && (errno != EINPROGRESS)) {
-               perror("rconnect");
--              goto err;
-+              goto close;
-       }
--      if (errno == EINPROGRESS) {
-+      if (ret && (errno == EINPROGRESS)) {
-               fds.fd = rs;
-               fds.events = POLLOUT;
-               ret = do_poll(&fds);
-               if (ret)
--                      goto err;
-+                      goto close;
-               len = sizeof err;
-               ret = rs_getsockopt(rs, SOL_SOCKET, SO_ERROR, &err, &len);
-               if (ret)
--                      goto err;
-+                      goto close;
-               if (err) {
-                       ret = -1;
-                       errno = err;
-                       perror("async rconnect");
--                      goto err;
-               }
-       }
-+close:
-+      if (ret)
-+              rs_close(rs);
- free:
-       freeaddrinfo(res);
--      return rs;
--err:
--      freeaddrinfo(res);
--      rs_close(rs);
-       return ret;
- }
- static int run(void)
- {
--      int i, rs, ret = 0;
-+      int i, ret = 0;
-       buf = malloc(!custom ? test_size[TEST_CNT - 1].size : transfer_size);
-       if (!buf) {
-@@ -498,29 +528,45 @@ static int run(void)
-               return -1;
-       }
--      rs = dst_addr ? client_connect() : server_connect();
--      if (rs < 0) {
--              ret = rs;
--              goto free;
-+      if (!dst_addr) {
-+              ret = server_listen();
-+              if (ret)
-+                      goto free;
-       }
-       printf("%-10s%-8s%-8s%-8s%-8s%8s %10s%13s\n",
-              "name", "bytes", "xfers", "iters", "total", "time", "Gb/sec", "usec/xfer");
-       if (!custom) {
-+              optimization = opt_latency;
-+              ret = dst_addr ? client_connect() : server_connect();
-+              if (ret)
-+                      goto free;
-+
-               for (i = 0; i < TEST_CNT; i++) {
-                       if (test_size[i].option > size_option)
-                               continue;
-                       init_latency_test(test_size[i].size);
--                      run_test(rs);
-+                      run_test();
-               }
-+              rs_shutdown(rs, SHUT_RDWR);
-+              rs_close(rs);
-+
-+              optimization = opt_bandwidth;
-+              ret = dst_addr ? client_connect() : server_connect();
-+              if (ret)
-+                      goto free;
-               for (i = 0; i < TEST_CNT; i++) {
-                       if (test_size[i].option > size_option)
-                               continue;
-                       init_bandwidth_test(test_size[i].size);
--                      run_test(rs);
-+                      run_test();
-               }
-       } else {
--              ret = run_test(rs);
-+              ret = dst_addr ? client_connect() : server_connect();
-+              if (ret)
-+                      goto free;
-+
-+              ret = run_test();
-       }
-       rs_shutdown(rs, SHUT_RDWR);
+