From: Daniel Bar-On Date: Thu, 11 May 2017 14:20:22 +0000 (+0000) Subject: msg/async/rdma: automatically set RDMAV_HUGEPAGES_SAFE according to conf X-Git-Tag: v12.1.0~14^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F15755%2Fhead;p=ceph.git msg/async/rdma: automatically set RDMAV_HUGEPAGES_SAFE according to conf Signed-off-by: DanielBar-On --- diff --git a/src/msg/async/rdma/RDMAStack.cc b/src/msg/async/rdma/RDMAStack.cc index 608c4f5c91ce..020dd9853edd 100644 --- a/src/msg/async/rdma/RDMAStack.cc +++ b/src/msg/async/rdma/RDMAStack.cc @@ -516,12 +516,23 @@ RDMAStack::RDMAStack(CephContext *cct, const string &t): NetworkStack(cct, t) // //On RDMA MUST be called before fork // + int rc = ibv_fork_init(); if (rc) { lderr(cct) << __func__ << " failed to call ibv_for_init(). On RDMA must be called before fork. Application aborts." << dendl; ceph_abort(); } + ldout(cct, 1) << __func__ << " ms_async_rdma_enable_hugepage value is: " << cct->_conf->ms_async_rdma_enable_hugepage << dendl; + if (cct->_conf->ms_async_rdma_enable_hugepage) { + rc = setenv("RDMAV_HUGEPAGES_SAFE","1",1); + ldout(cct, 1) << __func__ << " RDMAV_HUGEPAGES_SAFE is set as: " << getenv("RDMAV_HUGEPAGES_SAFE") << dendl; + if (rc) { + lderr(cct) << __func__ << " failed to export RDMA_HUGEPAGES_SAFE. On RDMA must be exported before using huge pages. Application aborts." << dendl; + ceph_abort(); + } + } + //Check ulimit struct rlimit limit; getrlimit(RLIMIT_MEMLOCK, &limit); @@ -548,6 +559,10 @@ RDMAStack::RDMAStack(CephContext *cct, const string &t): NetworkStack(cct, t) RDMAStack::~RDMAStack() { + if (cct->_conf->ms_async_rdma_enable_hugepage) { + unsetenv("RDMAV_HUGEPAGES_SAFE"); //remove env variable on destruction + } + delete dispatcher; }