From: Haomai Wang Date: Thu, 2 Mar 2017 07:02:21 +0000 (+0800) Subject: Merge pull request #13655 from Adirl/ulimit X-Git-Tag: v12.0.1~207 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2ce11e1872f69af8e613145aeea30e6e5f14d988;p=ceph-ci.git Merge pull request #13655 from Adirl/ulimit msg/async/rdma: check ulimit Reviewed-by: Haomai Wang --- 2ce11e1872f69af8e613145aeea30e6e5f14d988 diff --cc src/msg/async/rdma/RDMAStack.cc index d3ccfbe1ad2,90c0c43f360..46ec73b7c9f --- a/src/msg/async/rdma/RDMAStack.cc +++ b/src/msg/async/rdma/RDMAStack.cc @@@ -520,13 -540,26 +522,21 @@@ void RDMAWorker::handle_pending_message dispatcher->notify_pending_workers(); } - RDMAStack::RDMAStack(CephContext *cct, const string &t): NetworkStack(cct, t) { + //Check ulimit + struct rlimit limit; + getrlimit(RLIMIT_MEMLOCK, &limit); + if (limit.rlim_cur != RLIM_INFINITY || limit.rlim_max != RLIM_INFINITY) { + lderr(cct) << __func__ << "!!! WARNING !!! For RDMA to work properly user memlock (ulimit -l) must be big enough to allow large amount of registered memory." + " We recommend setting this parameter to infinity" << dendl; + } + if (!global_infiniband) - global_infiniband = new Infiniband( + global_infiniband.construct( cct, cct->_conf->ms_async_rdma_device_name, cct->_conf->ms_async_rdma_port_num); ldout(cct, 20) << __func__ << " constructing RDMAStack..." << dendl; - dispatcher = new RDMADispatcher(cct, global_infiniband, this); + dispatcher = new RDMADispatcher(cct, this); unsigned num = get_num_worker(); for (unsigned i = 0; i < num; ++i) { RDMAWorker* w = dynamic_cast(get_worker(i));