/* * Measure RDMA bandwidth (client side). */ int rd_client_rdma_bw(DEVICE *dev, CONNECTION *con, size_t n_req, const void **local_addr, const void **remote_addr, const size_t *sizes) { rd_post_rdma_std(dev, opcode, NCQE); while (!Finished) { int i; struct ibv_wc wc[NCQE]; int n = rd_poll(&dev, wc, cardof(wc)); if (Finished) break; if (n > LStat.max_cqes) LStat.max_cqes = n; for (i = 0; i < n; ++i) { int status = wc[i].status; if (status == IBV_WC_SUCCESS) { if (opcode == IBV_WR_RDMA_READ) { LStat.r.no_bytes += dev.msg_size; LStat.r.no_msgs++; LStat.rem_s.no_bytes += dev.msg_size; LStat.rem_s.no_msgs++; if (Req.access_recv) touch_data(dev.buffer, dev.msg_size); } } else do_error(status, &LStat.s.no_errs); } rd_post_rdma_std(&dev, opcode, n); } stop_test_timer(); exchange_results(); rd_close(&dev); fprintf(stderr, "Max n %d\n", LStat.max_cqes); return 0; }
void GC_displayMem (void) { static char buffer[256]; snprintf (buffer, cardof(buffer), "/bin/cat /proc/%d/map\n", (int)getpid ()); (void)system (buffer); }