Whamcloud - gitweb
LU-1622 lnet: hash MEs on wildcard portal
authorLiang Zhen <liang@whamcloud.com>
Wed, 11 Jul 2012 16:47:01 +0000 (00:47 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 23 Jul 2012 15:03:18 +0000 (11:03 -0400)
commit64a677269f5262702bd0e9c9de7378bd5b256bd0
tree3d11e22b0d048939ceab53bc275379e465265422
parentcae478c707a5de0b2226618f025ef3c742f3f65f
LU-1622 lnet: hash MEs on wildcard portal

This patch addressed a few more issues in BZ21619.

One issue is, we should always attach ME with ignore-bits on a list
instead of hash-table, no matter it's wildcard portal or unique
portal, because message could match buffers with various match-bits
if they also had ignore-bits, which means if user set both match-bits
and ignore-bits for MEs on unique portal, incoming message could
never be able to find them because they only search MEs hashed by
match-bits even those MEs with different match-bits can also fit
them after ignoring some bits.

the reason that nobody complained about it is because Lustre doesn't
have such use-case(posting ME with ignore-bits on unique portal).

The second issue fixed by this patch is, If multiple services share
one portal but use match-bits to identify different buffer types,
we still have performance issue because all buffers are attached
on one list and searching for typed buffer could be long and
expensive. So we should hash buffers on wildcard portal as well.

This is the reason that LNet selftest performance is not so good
if we mixed PING test and BRW test, because PING and BRW are sharing
on portal, so request buffers for them are attached on the same list,
BRW requests are processed much slower than PING requests, so there
will be a long search for request buffer of PING.

Signed-off-by: Liang Zhen <liang@whamcloud.com>
Change-Id: I0d2c6330dd231d369e2a86ced2b8374c0c96dbf9
Reviewed-on: http://review.whamcloud.com/3376
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Bobi Jam <bobijam@whamcloud.com>
Reviewed-by: Doug Oucharek <doug@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/include/lnet/lib-types.h
lnet/lnet/lib-me.c
lnet/lnet/lib-ptl.c