]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Merge pull request #13655 from Adirl/ulimit
authorHaomai Wang <haomaiwang@gmail.com>
Thu, 2 Mar 2017 07:02:21 +0000 (15:02 +0800)
committerGitHub <noreply@github.com>
Thu, 2 Mar 2017 07:02:21 +0000 (15:02 +0800)
msg/async/rdma: check ulimit

Reviewed-by: Haomai Wang <haomai@xsky.com>
1  2 
src/msg/async/rdma/RDMAStack.cc

index d3ccfbe1ad2b5e842c4ee044017d93b3dcd34873,90c0c43f360b2ca5bb200385e254fabe83b80581..46ec73b7c9f1af765d0cde36ffd2a1e707870e87
@@@ -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<RDMAWorker*>(get_worker(i));