libfoedus-core
FOEDUS Core Library
|
Repository of all memories dynamically acquired and shared within one database engine. More...
Repository of all memories dynamically acquired and shared within one database engine.
Definition at line 52 of file engine_memory.hpp.
#include <engine_memory.hpp>
Public Member Functions | |
EngineMemory ()=delete | |
EngineMemory (Engine *engine) | |
ErrorStack | initialize_once () override |
ErrorStack | uninitialize_once () override |
void * | get_shared_user_memory () const |
As part of the global shared memory, we reserve this size of 'user memory' that can be used for arbitrary purporses by the user to communicate between SOCs. More... | |
uint64_t | get_shared_user_memory_size () const |
NumaNodeMemory * | get_local_memory () const |
NumaNodeMemoryRef * | get_node_memory (foedus::thread::ThreadGroupId group) const |
std::string | dump_free_memory_stat () const |
Report rough statistics of free memory. More... | |
const GlobalVolatilePageResolver & | get_global_volatile_page_resolver () const |
Returns the page resolver to convert volatile page ID to page pointer. More... | |
ErrorStack | grab_one_volatile_page (foedus::thread::ThreadGroupId node, storage::VolatilePagePointer *pointer, storage::Page **page) |
A convenience function to grab one free volatile page from the given node. More... | |
ErrorStack | load_one_volatile_page (cache::SnapshotFileSet *fileset, storage::SnapshotPagePointer snapshot_pointer, storage::VolatilePagePointer *pointer, storage::Page **page) |
Another convenience method that also reads an existing snapshot page to the volatile page. More... | |
![]() | |
DefaultInitializable () | |
virtual | ~DefaultInitializable () |
DefaultInitializable (const DefaultInitializable &)=delete | |
DefaultInitializable & | operator= (const DefaultInitializable &)=delete |
ErrorStack | initialize () override final |
Typical implementation of Initializable::initialize() that provides initialize-once semantics. More... | |
ErrorStack | uninitialize () override final |
Typical implementation of Initializable::uninitialize() that provides uninitialize-once semantics. More... | |
bool | is_initialized () const override final |
Returns whether the object has been already initialized or not. More... | |
![]() | |
virtual | ~Initializable () |
|
delete |
|
inlineexplicit |
Definition at line 55 of file engine_memory.hpp.
std::string foedus::memory::EngineMemory::dump_free_memory_stat | ( | ) | const |
Report rough statistics of free memory.
Definition at line 121 of file engine_memory.cpp.
References foedus::memory::NumaNodeMemoryRef::dump_free_memory_stat(), foedus::Engine::get_options(), foedus::thread::ThreadOptions::group_count_, and foedus::EngineOptions::thread_.
|
inline |
Returns the page resolver to convert volatile page ID to page pointer.
Any code can get the global page resolver from engine memory. Note that this is only for volatile pages. As snapshot cache is per-node, there is no global snapshot page resolver (just the node-local one should be enough).
Definition at line 90 of file engine_memory.hpp.
Referenced by foedus::storage::hash::HashStoragePimpl::debugout_single_thread(), foedus::storage::hash::HashStoragePimpl::debugout_single_thread_data(), foedus::storage::masstree::MasstreeStoragePimpl::debugout_single_thread_follow(), foedus::storage::hash::HashStoragePimpl::debugout_single_thread_intermediate(), foedus::storage::array::ArrayPartitioner::design_partition(), foedus::storage::masstree::MasstreePartitioner::design_partition(), foedus::storage::masstree::design_partition_first_parallel(), foedus::storage::hash::HashPartitioner::design_partition_task(), foedus::storage::array::ArrayStorage::drop(), foedus::storage::masstree::MasstreeStoragePimpl::drop(), foedus::storage::hash::HashStoragePimpl::drop(), foedus::storage::Composer::DropVolatilesArguments::drop(), foedus::storage::sequential::SequentialStoragePimpl::get_head_pointer(), foedus::storage::sequential::SequentialStoragePimpl::get_tail_pointer(), foedus::storage::hash::HashStoragePimpl::hcc_reset_all_temperature_stat_data(), foedus::storage::masstree::MasstreeStoragePimpl::hcc_reset_all_temperature_stat_follow(), foedus::storage::array::ArrayStoragePimpl::hcc_reset_all_temperature_stat_intermediate(), foedus::storage::hash::HashStoragePimpl::hcc_reset_all_temperature_stat_intermediate(), foedus::xct::Xct::initialize(), foedus::thread::ThreadPimpl::initialize_once(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries(), foedus::storage::StorageManagerPimpl::reinitialize_for_recovered_snapshot(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::release_parallel(), foedus::storage::hash::release_parallel(), foedus::storage::masstree::MasstreeBorderPage::track_moved_record(), foedus::storage::masstree::MasstreeBorderPage::track_moved_record_next_layer(), foedus::storage::hash::HashStoragePimpl::track_moved_record_search(), foedus::storage::hash::HashStoragePimpl::verify_single_thread(), foedus::storage::hash::HashStoragePimpl::verify_single_thread_data(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_intermediate().
|
inline |
Definition at line 73 of file engine_memory.hpp.
Referenced by foedus::thread::ThreadGroup::initialize_once(), foedus::cache::CacheManagerPimpl::initialize_once(), foedus::thread::ThreadPimpl::initialize_once(), foedus::log::Logger::initialize_once(), and foedus::log::ThreadLogBuffer::initialize_once().
|
inline |
Definition at line 76 of file engine_memory.hpp.
Referenced by foedus::storage::hash::HashStoragePimpl::create(), foedus::storage::sequential::SequentialStoragePimpl::drop(), foedus::storage::Composer::DropVolatilesArguments::drop(), foedus::snapshot::SnapshotManagerPimpl::drop_volatile_pages_parallel(), foedus::storage::sequential::SequentialComposer::drop_volatiles(), foedus::thread::ThreadPimpl::flush_retired_volatile_page(), foedus::storage::sequential::SequentialStoragePimpl::for_every_page(), foedus::memory::RoundRobinPageGrabBatch::grab(), foedus::memory::DivvyupPageGrabBatch::grab(), grab_one_volatile_page(), foedus::storage::sequential::SequentialStoragePimpl::initialize_head_tail_pages(), foedus::storage::masstree::MasstreeStoragePimpl::load_empty(), foedus::memory::RoundRobinPageGrabBatch::release_all(), foedus::memory::DivvyupPageGrabBatch::release_all(), foedus::memory::PageReleaseBatch::release_chunk(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), and foedus::thread::ThreadPimpl::uninitialize_once().
void * foedus::memory::EngineMemory::get_shared_user_memory | ( | ) | const |
As part of the global shared memory, we reserve this size of 'user memory' that can be used for arbitrary purporses by the user to communicate between SOCs.
Definition at line 113 of file engine_memory.cpp.
References foedus::soc::SocManager::get_shared_user_memory(), and foedus::Engine::get_soc_manager().
uint64_t foedus::memory::EngineMemory::get_shared_user_memory_size | ( | ) | const |
Definition at line 117 of file engine_memory.cpp.
References foedus::soc::SocManager::get_shared_user_memory_size(), and foedus::Engine::get_soc_manager().
ErrorStack foedus::memory::EngineMemory::grab_one_volatile_page | ( | foedus::thread::ThreadGroupId | node, |
storage::VolatilePagePointer * | pointer, | ||
storage::Page ** | page | ||
) |
A convenience function to grab one free volatile page from the given node.
DO NOT USE THIS METHOD in a frequently invoked place. You should use the batched interface to avoid mutex each time. This method is used only where performance doesn't matter.
Definition at line 136 of file engine_memory.cpp.
References get_node_memory(), foedus::memory::PagePool::get_resolver(), foedus::memory::NumaNodeMemoryRef::get_volatile_pool(), foedus::memory::PagePool::grab_one(), foedus::kRetOk, foedus::memory::LocalPageResolver::resolve_offset_newpage(), foedus::storage::VolatilePagePointer::set(), and WRAP_ERROR_CODE.
Referenced by foedus::storage::array::ArrayStoragePimpl::load_empty(), and load_one_volatile_page().
|
overridevirtual |
Implements foedus::DefaultInitializable.
Definition at line 43 of file engine_memory.cpp.
References ASSERT_ND, foedus::memory::LocalPageResolver::begin_, CHECK_ERROR, foedus::memory::LocalPageResolver::end_, ERROR_STACK, foedus::memory::PagePool::get_base(), foedus::Engine::get_debug(), foedus::Engine::get_options(), foedus::memory::PagePool::get_resolver(), foedus::Engine::get_soc_id(), foedus::memory::NumaNodeMemoryRef::get_volatile_pool(), foedus::thread::ThreadOptions::group_count_, foedus::DefaultInitializable::initialize(), foedus::DefaultInitializable::is_initialized(), foedus::Engine::is_master(), foedus::kErrorCodeDepedentModuleUnavailableInit, foedus::kRetOk, numa_available(), and foedus::EngineOptions::thread_.
ErrorStack foedus::memory::EngineMemory::load_one_volatile_page | ( | cache::SnapshotFileSet * | fileset, |
storage::SnapshotPagePointer | snapshot_pointer, | ||
storage::VolatilePagePointer * | pointer, | ||
storage::Page ** | page | ||
) |
Another convenience method that also reads an existing snapshot page to the volatile page.
Again, its performance is not optimized at all. Do not abuse. In fact, this is used only for one-time initialization code.
Definition at line 148 of file engine_memory.cpp.
References ASSERT_ND, CHECK_ERROR, foedus::storage::extract_numa_node_from_snapshot_pointer(), grab_one_volatile_page(), foedus::kRetOk, foedus::cache::SnapshotFileSet::read_page(), foedus::storage::VolatilePagePointer::word, and WRAP_ERROR_CODE.
Referenced by foedus::storage::array::ArrayStoragePimpl::load(), foedus::storage::masstree::MasstreeStoragePimpl::load(), and foedus::storage::hash::HashStoragePimpl::load().
|
overridevirtual |
Implements foedus::DefaultInitializable.
Definition at line 91 of file engine_memory.cpp.
References foedus::ErrorStackBatch::emprace_back(), ERROR_STACK, foedus::Engine::get_debug(), foedus::Engine::get_soc_id(), foedus::DefaultInitializable::is_initialized(), foedus::Engine::is_master(), foedus::kErrorCodeDepedentModuleUnavailableUninit, SUMMARIZE_ERROR_BATCH, and foedus::DefaultInitializable::uninitialize().