Пример #1
0
/*
 * 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;
}
Пример #2
0
void GC_displayMem (void) {
        static char buffer[256];

        snprintf (buffer, cardof(buffer), "/bin/cat /proc/%d/map\n", (int)getpid ());
        (void)system (buffer);
}