Whamcloud - gitweb
LU-7734 lnet: cpt locking
authorAmir Shehata <amir.shehata@intel.com>
Fri, 2 Dec 2016 05:23:20 +0000 (21:23 -0800)
committerAmir Shehata <amir.shehata@intel.com>
Wed, 25 Jan 2017 03:10:18 +0000 (19:10 -0800)
commitc14ef7b790e1de58ed8757e0406b9dc9fad8029b
treeee6380520e8752e3ed415661835ea91a5d0ee0c2
parent4d2ad7dcd6b55a81d3f5b8f832a72edb00b5f302
LU-7734 lnet: cpt locking

When source nid is specified it is necessary to also
use the destination nid. Otherwise bulk transfer will end up
on a different interface than the nearest interface to the
memory. This has significant performance impact on NUMA
systems such as the SGI UV.

The CPT which the MD describing the bulk buffers belongs to
is not the same CPT of the actual pages of memory.
Therefore, it is necessary to communicate the CPT of the pages
to LNet, in order for LNet to select the nearest interface.

The MD which describes the pages of memory gets attached to
an ME, to be matched later on. The MD which describes the
message to be sent is different and this patch adds the
handle of the bulk MD into the MD which ends up being
accessible by lnet_select_pathway(). In that function
a new API, lnet_cpt_of_md_page(), is called which returns the
CPT of the buffers used for the bulk transfer.
lnet_select_pathway() proceeds to use this CPT to select
the nearest interface.

Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Change-Id: I4117ef912835f16dcdcaafb70703f92d74053b9b
Reviewed-on: https://review.whamcloud.com/24085
lnet/include/lnet/lib-lnet.h
lnet/include/lnet/lib-types.h
lnet/include/lnet/types.h
lnet/lnet/lib-md.c
lnet/lnet/lib-move.c
lustre/ptlrpc/niobuf.c