From: Sean Hefty Date: Mon, 28 May 2012 00:01:28 +0000 (-0700) Subject: pop (CONFLICT) X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=b866923e0dd71c72c63f48aee6720fb0cb2bfc0f;p=~shefty%2Flibrdmacm.git pop (CONFLICT) --- diff --git a/meta b/meta index 4ff0b552..c1bd023f 100644 --- 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: diff --git a/patches/rstream-opt b/patches/rstream-opt index 4c7f8feb..c8169094 100644 --- a/patches/rstream-opt +++ b/patches/rstream-opt @@ -1,5 +1,5 @@ -Bottom: 1f4b9e8b1201e5fac58e29366786f53b07faf3f1 -Top: 5a85db9c7f7a5745fbf5b24189f0dcd3d7434c9b +Bottom: 5762ea9f26bec43ae89d7dd2fded0b8cbe158a35 +Top: 5762ea9f26bec43ae89d7dd2fded0b8cbe158a35 Author: Sean Hefty Date: 2012-05-27 14:07:42 -0700 @@ -13,329 +13,4 @@ Signed-off-by: Sean Hefty --- -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); +