]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/alienstore: configure Seastar's memory allocator.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 15 Jun 2020 15:32:10 +0000 (17:32 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 23 Jun 2020 08:16:31 +0000 (10:16 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/os/alienstore/alien_store.cc
src/crimson/os/alienstore/alien_store.h
src/crimson/os/alienstore/thread_pool.cc
src/test/crimson/CMakeLists.txt

index 27395ae5cafdaa73c46a72e2da6c976c0adbd719..1048f978ed73806bc93a29a9fa75b9cef8fb026a 100644 (file)
@@ -5,6 +5,7 @@
 #include "alien_store.h"
 
 #include <map>
+#include <optional>
 #include <string_view>
 #include <boost/algorithm/string/trim.hpp>
 #include <fmt/format.h>
@@ -12,7 +13,9 @@
 
 #include <seastar/core/alien.hh>
 #include <seastar/core/future-util.hh>
+#include <seastar/core/memory.hh>
 #include <seastar/core/reactor.hh>
+#include <seastar/core/resource.hh>
 
 #include "common/ceph_context.h"
 #include "global/global_context.h"
@@ -524,4 +527,13 @@ int AlienStore::AlienOmapIterator::status() const
   return iter->status();
 }
 
+void AlienStore::configure_thread_memory()
+{
+  std::vector<seastar::resource::memory> layout;
+  // 1 GiB for experimenting. Perhaps we'll introduce a config option later.
+  // TODO: consider above.
+  layout.emplace_back(seastar::resource::memory{1024 * 1024 * 1024, 0});
+  seastar::memory::configure(layout, false, std::nullopt);
+}
+
 }
index f862d7b8409c6cc7c4fa96b42ed8370dd253d3b2..78276ca5758b293c1a41c2c09d7753d03e9cc056 100644 (file)
@@ -111,6 +111,8 @@ public:
   seastar::future<FuturizedStore::OmapIteratorRef> get_omap_iterator(
     CollectionRef ch,
     const ghobject_t& oid) final;
+
+  static void configure_thread_memory();
 private:
   constexpr static unsigned MAX_KEYS_PER_OMAP_GET_CALL = 32;
   const std::string path;
index 468c733bf21bac8d1cc6309e3838a7ed323d33f9..323bea5202423f7df47c9d5252d7c11a1cd41834 100644 (file)
@@ -2,10 +2,10 @@
 
 #include <chrono>
 #include <pthread.h>
-#include "include/intarith.h"
 
 #include "include/ceph_assert.h"
 #include "crimson/common/config_proxy.h"
+#include "crimson/os/alienstore/alien_store.h"
 
 using crimson::common::local_conf;
 
@@ -21,6 +21,7 @@ ThreadPool::ThreadPool(size_t n_threads,
   for (size_t i = 0; i < n_threads; i++) {
     threads.emplace_back([this, cpu_id, queue_max_wait] {
       pin(cpu_id);
+      crimson::os::AlienStore::configure_thread_memory();
       loop(queue_max_wait);
     });
   }
index eb1d0fd91c01062d619d3d99e6b129a2675def72..a79adbf2542a9a8ebf59855369d9713a5bfc3e5c 100644 (file)
@@ -35,9 +35,9 @@ add_executable(unittest_seastar_alienstore_thread_pool
 add_ceph_test(unittest_seastar_alienstore_thread_pool
   unittest_seastar_alienstore_thread_pool --memory 256M --smp 1)
 target_link_libraries(unittest_seastar_alienstore_thread_pool
-  crimson
   crimson-os
-  crimson-common)
+  crimson-alienstore
+  crimson)
 
 add_executable(unittest_seastar_config
   test_config.cc)