Memory management functionality. More...
Classes | |
class | ThreadAwarePrivateHeap |
Per-thread heaps using Galois thread aware construct. More... | |
class | LockedHeap |
Apply a lock to a heap. More... | |
class | ZeroOut |
class | AddHeader |
Add a header to objects. More... | |
class | OwnerTaggedHeap |
Allow looking up parent heap pointers. More... | |
class | FreeListHeap |
Maintain a freelist. More... | |
class | SelfLockFreeListHeap |
Maintain a freelist using a lock which doesn't cover SourceHeap. More... | |
class | BlockAlloc |
class | SimpleBumpPtr |
This implements a bump pointer though chunks of memory. More... | |
class | SimpleBumpPtrWithMallocFallback |
This implements a bump pointer though chunks of memory that falls back to malloc if the source heap cannot accommodate an allocation. More... | |
class | SystemBaseAlloc |
This is the base source of memory for all allocators. More... | |
class | SizedAllocatorFactory |
class | FixedSizeAllocator |
class | FSBGaloisAllocator< void > |
class | FSBGaloisAllocator |
class | ExternRefGaloisAllocator< void, AllocTy > |
class | ExternRefGaloisAllocator |
Functions | |
void * | pageAlloc () |
void | pageFree (void *) |
void | pagePreAlloc (int numpages) |
Preallocate numpages large pages for each thread. | |
void | pageIn (void *buf, size_t len) |
Forces the given block to be paged into physical memory. | |
int | numPageAllocTotal () |
Returns total large pages allocated by Galois memory management subsystem. | |
int | numPageAllocForThread (unsigned tid) |
Returns total large pages allocated for thread by Galois memory management subsystem. | |
int | numNumaAllocForNode (unsigned nodeid) |
Returns total small pages allocated by OS on a NUMA node. | |
int | numNumaNodes () |
Returns number of NUMA nodes on machine. | |
void * | largeInterleavedAlloc (size_t bytes, bool full=true) |
Allocates memory interleaved across NUMA nodes. | |
void | largeInterleavedFree (void *mem, size_t bytes) |
Frees memory allocated by largeInterleavedAlloc(). | |
void * | largeAlloc (size_t bytes, bool preFault=true) |
Allocates a large block of memory. | |
void | largeFree (void *mem, size_t bytes) |
Frees memory allocated by largeAlloc(). | |
void | printInterleavedStats (int minPages=16 *1024) |
Print lines from /proc/pid/numa_maps that contain at least n small pages. | |
Variables | |
const size_t | smallPageSize = 4*1024 |
const size_t | pageSize = 2*1024*1024 |
Memory management functionality.
void * Galois::Runtime::MM::largeAlloc | ( | size_t | bytes, | |
bool | preFault = true | |||
) |
Allocates a large block of memory.
void Galois::Runtime::MM::largeFree | ( | void * | mem, | |
size_t | bytes | |||
) |
Frees memory allocated by largeAlloc().
void * Galois::Runtime::MM::largeInterleavedAlloc | ( | size_t | bytes, | |
bool | full = true | |||
) |
Allocates memory interleaved across NUMA nodes.
If full, allocate across all NUMA nodes; otherwise, allocate across NUMA nodes corresponding to active threads.
void Galois::Runtime::MM::largeInterleavedFree | ( | void * | mem, | |
size_t | bytes | |||
) |
Frees memory allocated by largeInterleavedAlloc().
int Galois::Runtime::MM::numNumaAllocForNode | ( | unsigned | nodeid | ) |
Returns total small pages allocated by OS on a NUMA node.
int Galois::Runtime::MM::numNumaNodes | ( | ) |
Returns number of NUMA nodes on machine.
int Galois::Runtime::MM::numPageAllocForThread | ( | unsigned | tid | ) |
Returns total large pages allocated for thread by Galois memory management subsystem.
int Galois::Runtime::MM::numPageAllocTotal | ( | ) |
Returns total large pages allocated by Galois memory management subsystem.
void * Galois::Runtime::MM::pageAlloc | ( | ) |
void Galois::Runtime::MM::pageFree | ( | void * | m | ) |
void Galois::Runtime::MM::pageIn | ( | void * | buf, | |
size_t | len | |||
) |
Forces the given block to be paged into physical memory.
void Galois::Runtime::MM::pagePreAlloc | ( | int | numpages | ) |
Preallocate numpages large pages for each thread.
void Galois::Runtime::MM::printInterleavedStats | ( | int | minPages = 16*1024 |
) |
Print lines from /proc/pid/numa_maps that contain at least n small pages.
const size_t Galois::Runtime::MM::pageSize = 2*1024*1024 |
const size_t Galois::Runtime::MM::smallPageSize = 4*1024 |