mirror of
https://github.com/xmrig/xmrig.git
synced 2025-12-15 10:52:45 -05:00
Memory allocation refactoring.
This commit is contained in:
@@ -46,10 +46,13 @@ namespace xmrig {
|
||||
static IMemoryPool *pool = nullptr;
|
||||
static std::mutex mutex;
|
||||
|
||||
constexpr size_t twoMiB = 2U * 1024U * 1024U;
|
||||
constexpr size_t oneGiB = 1024U * 1024U * 1024U;
|
||||
|
||||
} // namespace xmrig
|
||||
|
||||
|
||||
xmrig::VirtualMemory::VirtualMemory(size_t size, bool hugePages, bool usePool, uint32_t node, size_t alignSize) :
|
||||
xmrig::VirtualMemory::VirtualMemory(size_t size, bool hugePages, bool oneGbPages, bool usePool, uint32_t node, size_t alignSize) :
|
||||
m_size(align(size)),
|
||||
m_node(node)
|
||||
{
|
||||
@@ -68,6 +71,10 @@ xmrig::VirtualMemory::VirtualMemory(size_t size, bool hugePages, bool usePool, u
|
||||
}
|
||||
}
|
||||
|
||||
if (oneGbPages && allocateOneGbPagesMemory()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (hugePages && allocateLargePagesMemory()) {
|
||||
return;
|
||||
}
|
||||
@@ -86,7 +93,7 @@ xmrig::VirtualMemory::~VirtualMemory()
|
||||
std::lock_guard<std::mutex> lock(mutex);
|
||||
pool->release(m_node);
|
||||
}
|
||||
else if (isHugePages()) {
|
||||
else if (isHugePages() || isOneGbPages()) {
|
||||
freeLargePagesMemory();
|
||||
}
|
||||
else {
|
||||
@@ -95,6 +102,12 @@ xmrig::VirtualMemory::~VirtualMemory()
|
||||
}
|
||||
|
||||
|
||||
xmrig::HugePagesInfo xmrig::VirtualMemory::hugePages() const
|
||||
{
|
||||
return { this };
|
||||
}
|
||||
|
||||
|
||||
#ifndef XMRIG_FEATURE_HWLOC
|
||||
uint32_t xmrig::VirtualMemory::bindToNUMANode(int64_t)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user