diff --git a/lnet/ChangeLog b/lnet/ChangeLog index e5bfa57eb3901301c69091b5f5d6dbcb5b9f0ea3..dd608fd15b7ba58dda0ab275c2c92ad0e1f92f8f 100644 --- a/lnet/ChangeLog +++ b/lnet/ChangeLog @@ -17,6 +17,17 @@ Bugzilla : Description: Details : +Severity : major +Bugzilla : 15983 +Description: workaround for OOM from o2iblnd +Details : OFED needs allocate big chunk of memory for QP while creating + connection for o2iblnd, OOM can happen if no such a contiguous + memory chunk. + QP size is decided by concurrent_sends and max_fragments of + o2iblnd, now we permit user to specify smaller value for + concurrent_sends of o2iblnd(i.e: concurrent_sends=7), which + will decrease memory block size required by creating QP. + Severity : major Bugzilla : 15093 Description: Support Zerocopy receive of Chelsio device diff --git a/lnet/klnds/o2iblnd/o2iblnd_modparams.c b/lnet/klnds/o2iblnd/o2iblnd_modparams.c index 10edb5d43244f9eff6582a792d7a52461d7cc087..91c7520339bd9e0b357c4b0725791d2ffec555f6 100644 --- a/lnet/klnds/o2iblnd/o2iblnd_modparams.c +++ b/lnet/klnds/o2iblnd/o2iblnd_modparams.c @@ -316,8 +316,14 @@ kiblnd_tunables_init (void) if (*kiblnd_tunables.kib_concurrent_sends > IBLND_RX_MSGS) *kiblnd_tunables.kib_concurrent_sends = IBLND_RX_MSGS; - if (*kiblnd_tunables.kib_concurrent_sends < IBLND_MSG_QUEUE_SIZE) - *kiblnd_tunables.kib_concurrent_sends = IBLND_MSG_QUEUE_SIZE; + if (*kiblnd_tunables.kib_concurrent_sends < IBLND_MSG_QUEUE_SIZE / 2) + *kiblnd_tunables.kib_concurrent_sends = IBLND_MSG_QUEUE_SIZE / 2; + + if (*kiblnd_tunables.kib_concurrent_sends < IBLND_MSG_QUEUE_SIZE) { + CWARN("Concurrent sends %d is lower than message queue size: %d, " + "performance may drop slightly.\n", + *kiblnd_tunables.kib_concurrent_sends, IBLND_MSG_QUEUE_SIZE); + } return 0; }