From: Radoslaw Zarzynski Date: Mon, 15 Jun 2020 15:32:10 +0000 (+0200) Subject: crimson/os/alienstore: configure Seastar's memory allocator. X-Git-Tag: v16.1.0~1969^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f7715b86ef09a820adb2d43d4e82cabc9a04199f;p=ceph.git crimson/os/alienstore: configure Seastar's memory allocator. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/os/alienstore/alien_store.cc b/src/crimson/os/alienstore/alien_store.cc index 27395ae5cafd..1048f978ed73 100644 --- a/src/crimson/os/alienstore/alien_store.cc +++ b/src/crimson/os/alienstore/alien_store.cc @@ -5,6 +5,7 @@ #include "alien_store.h" #include +#include #include #include #include @@ -12,7 +13,9 @@ #include #include +#include #include +#include #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 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); +} + } diff --git a/src/crimson/os/alienstore/alien_store.h b/src/crimson/os/alienstore/alien_store.h index f862d7b8409c..78276ca5758b 100644 --- a/src/crimson/os/alienstore/alien_store.h +++ b/src/crimson/os/alienstore/alien_store.h @@ -111,6 +111,8 @@ public: seastar::future 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; diff --git a/src/crimson/os/alienstore/thread_pool.cc b/src/crimson/os/alienstore/thread_pool.cc index 468c733bf21b..323bea520242 100644 --- a/src/crimson/os/alienstore/thread_pool.cc +++ b/src/crimson/os/alienstore/thread_pool.cc @@ -2,10 +2,10 @@ #include #include -#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); }); } diff --git a/src/test/crimson/CMakeLists.txt b/src/test/crimson/CMakeLists.txt index eb1d0fd91c01..a79adbf2542a 100644 --- a/src/test/crimson/CMakeLists.txt +++ b/src/test/crimson/CMakeLists.txt @@ -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)