#include <rdma/rdma_cma.h>
#include <rdma/rsocket.h>
-static int test_size[] = {
- 64,
- 4096,
- 65536,
- 1048576
+struct test_size_param {
+ int size;
+ int option;
+};
+
+static struct test_size_param test_size[] = {
+ { 1 << 6, 0 },
+ { 1 << 7, 1 }, { 1 << 7 + 1 << 6, 1},
+ { 1 << 8, 1 }, { 1 << 8 + 1 << 7, 1},
+ { 1 << 9, 1 }, { 1 << 9 + 1 << 8, 1},
+ { 1 << 10, 1 }, { 1 << 10 + 1 << 9, 1},
+ { 1 << 11, 1 }, { 1 << 11 + 1 << 10, 1},
+ { 1 << 12, 0 }, { 1 << 12 + 1 << 11, 1},
+ { 1 << 13, 1 }, { 1 << 13 + 1 << 12, 1},
+ { 1 << 14, 1 }, { 1 << 14 + 1 << 13, 1},
+ { 1 << 15, 1 }, { 1 << 15 + 1 << 14, 1},
+ { 1 << 16, 0 }, { 1 << 16 + 1 << 15, 1},
+ { 1 << 17, 1 }, { 1 << 17 + 1 << 16, 1},
+ { 1 << 18, 1 }, { 1 << 18 + 1 << 17, 1},
+ { 1 << 19, 1 }, { 1 << 19 + 1 << 18, 1},
+ { 1 << 20, 0 }, { 1 << 20 + 1 << 19, 1},
+ { 1 << 21, 1 }, { 1 << 21 + 1 << 20, 1},
+ { 1 << 22, 1 }, { 1 << 22 + 1 << 21, 1},
};
#define TEST_CNT (sizeof test_size / sizeof test_size[0])
static int flags = MSG_DONTWAIT;
static int poll_timeout = 0;
static int custom;
+static int size_option;
static int iterations = 1;
static int transfer_size = 1000;
static int transfer_count = 1000;
{
int i, rs, ret = 0;
- buf = malloc(!custom ? test_size[TEST_CNT - 1] : transfer_size);
+ buf = malloc(!custom ? test_size[TEST_CNT - 1].size : transfer_size);
if (!buf) {
perror("malloc");
return -1;
printf("name \tbytes \txfers \titers \ttotal \ttime \tGb/sec \tusec/xfer\n");
if (!custom) {
for (i = 0; i < TEST_CNT; i++) {
- init_latency_test(test_size[i]);
+ if (test_size[i] > size_option)
+ continue;
+ init_latency_test(test_size[i].size);
run_test(rs);
}
for (i = 0; i < TEST_CNT; i++) {
- init_bandwidth_test(test_size[i]);
+ if (test_size[i] > size_option)
+ continue;
+ init_bandwidth_test(test_size[i].size);
run_test(rs);
}
} else {
transfer_count = atoi(optarg);
break;
case 'S':
- custom = 1;
- transfer_size = atoi(optarg);
+ if (strncasecmp("all", optarg, 3) {
+ size_option = 1;
+ } else {
+ custom = 1;
+ transfer_size = atoi(optarg);
+ }
break;
case 'p':
port = optarg;
printf("\t[-b bind_address]\n");
printf("\t[-I iterations]\n");
printf("\t[-C transfer_count]\n");
- printf("\t[-S transfer_size]\n");
+ printf("\t[-S transfer_size or all]\n");
printf("\t[-p port_number]\n");
printf("\t[-T test_option]\n");
printf("\t s|sockets - use standard tcp/ip sockets\n");