]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async/rdma: automatically set RDMAV_HUGEPAGES_SAFE according to conf 15755/head
authorDaniel Bar-On <danielbo@mellanox.com>
Thu, 11 May 2017 14:20:22 +0000 (14:20 +0000)
committerAdir Lev <adirl@mellanox.com>
Tue, 20 Jun 2017 08:54:04 +0000 (08:54 +0000)
Signed-off-by: DanielBar-On <danielbo@mellanox.com>
src/msg/async/rdma/RDMAStack.cc

index 608c4f5c91ce39d45b0e731ebfed647667992385..020dd9853edde2655d52c378414a988c22f29d27 100644 (file)
@@ -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;
 }