[openib-general] [PATCH] FMR support in mthca
Libor Michalek
libor at topspin.com
Wed Mar 30 09:21:10 PST 2005
On Wed, Mar 30, 2005 at 10:09:24AM -0500, Hal Rosenstock wrote:
> On Mon, 2005-03-28 at 20:03, Libor Michalek wrote:
> > I haven't looked closely at the code yet, but I did try it out
> > with SDP/AIO on a pair of x86 systems with Tavors and a pair of
> > x86_64 systems with Arbels. With a small change to core/fmr_pool.c
> > and enabling pool creation in SDP it worked as expected. Here are
> > throughput results:
> >
> > x86 x86_64
> > -------- --------
> > SDP sync 610 MB/s 710 MB/s
> > SDP async (hit) 740 MB/s 910 MB/s
> > SDP async (miss) 590 MB/s 910 MB/s
> >
> > For sync sockets I used 81600 byte buffers. For async socket I kept
> > 20 96K buffers in flight. For the FMR pool cache hit async results I
> > used only 20 different buffers. For the FMR pool cache miss async
> > results I used 1000 different buffers, of which only 20 were in flight
> > at a time.
>
> Any idea why hit/miss make such a difference on x86 and not x86_64 ?
Not sure, but the difference is also Tavor vs. Arbel on those two
pairs of systems.
> Also, is all the code for this now checked available ?
Almost, for SDP I need to check in this patch, now that the FMR code
has been checked in.
-Libor
Index: sdp_conn.c
===================================================================
--- sdp_conn.c (revision 2072)
+++ sdp_conn.c (working copy)
@@ -1774,14 +1774,12 @@
/*
* create SDP memory pool
*/
-#ifdef _FMR_SUPPORT
hca->fmr_pool = ib_create_fmr_pool(hca->pd, &fmr_param_s);
if (IS_ERR(hca->fmr_pool)) {
sdp_warn("Error <%ld> creating HCA <%s> fast memory pool",
PTR_ERR(hca->fmr_pool), device->name);
goto error;
}
-#endif
/*
* port allocation
*/
@@ -1828,10 +1826,9 @@
kfree(port);
}
-#ifdef _FMR_SUPPORT
if (!IS_ERR(hca->fmr_pool))
(void)ib_destroy_fmr_pool(hca->fmr_pool);
-#endif
+
if (!IS_ERR(hca->mem_h))
(void)ib_dereg_mr(hca->mem_h);
@@ -1864,10 +1861,9 @@
kfree(port);
}
-#ifdef _FMR_SUPPORT
if (!IS_ERR(hca->fmr_pool))
(void)ib_destroy_fmr_pool(hca->fmr_pool);
-#endif
+
if (!IS_ERR(hca->mem_h))
(void)ib_dereg_mr(hca->mem_h);
More information about the general
mailing list