mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-14 01:35:36 +00:00
Mallinfo and ASAN hooks
This commit is contained in:
parent
7a5b1c1a19
commit
04cf902791
@ -16,6 +16,44 @@ NAMESPACE_BEGIN(Grid);
|
|||||||
uint64_t total_shared;
|
uint64_t total_shared;
|
||||||
uint64_t total_device;
|
uint64_t total_device;
|
||||||
uint64_t total_host;;
|
uint64_t total_host;;
|
||||||
|
|
||||||
|
#if defined(__has_feature)
|
||||||
|
#if __has_feature(leak_sanitizer)
|
||||||
|
#define ASAN_LEAK_CHECK
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ASAN_LEAK_CHECK
|
||||||
|
#include <sanitizer/asan_interface.h>
|
||||||
|
#include <sanitizer/common_interface_defs.h>
|
||||||
|
#include <sanitizer/lsan_interface.h>
|
||||||
|
#define LEAK_CHECK(A) { __lsan_do_recoverable_leak_check(); }
|
||||||
|
#else
|
||||||
|
#define LEAK_CHECK(A) { }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void MemoryManager::DisplayMallinfo(void)
|
||||||
|
{
|
||||||
|
#ifdef __linux__
|
||||||
|
struct mallinfo mi; // really want mallinfo2, but glibc version isn't uniform
|
||||||
|
|
||||||
|
mi = mallinfo();
|
||||||
|
|
||||||
|
std::cout << "MemoryManager: Total non-mmapped bytes (arena): "<< (size_t)mi.arena<<std::endl;
|
||||||
|
std::cout << "MemoryManager: # of free chunks (ordblks): "<< (size_t)mi.ordblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: # of free fastbin blocks (smblks): "<< (size_t)mi.smblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: # of mapped regions (hblks): "<< (size_t)mi.hblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Bytes in mapped regions (hblkhd): "<< (size_t)mi.hblkhd<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Max. total allocated space (usmblks): "<< (size_t)mi.usmblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Free bytes held in fastbins (fsmblks): "<< (size_t)mi.fsmblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Total allocated space (uordblks): "<< (size_t)mi.uordblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Total free space (fordblks): "<< (size_t)mi.fordblks<<std::endl;
|
||||||
|
std::cout << "MemoryManager: Topmost releasable block (keepcost): "<< (size_t)mi.keepcost<<std::endl;
|
||||||
|
#endif
|
||||||
|
LEAK_CHECK();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void MemoryManager::PrintBytes(void)
|
void MemoryManager::PrintBytes(void)
|
||||||
{
|
{
|
||||||
std::cout << " MemoryManager : ------------------------------------ "<<std::endl;
|
std::cout << " MemoryManager : ------------------------------------ "<<std::endl;
|
||||||
@ -35,7 +73,7 @@ void MemoryManager::PrintBytes(void)
|
|||||||
#ifdef GRID_CUDA
|
#ifdef GRID_CUDA
|
||||||
cuda_mem();
|
cuda_mem();
|
||||||
#endif
|
#endif
|
||||||
|
DisplayMallinfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t MemoryManager::DeviceCacheBytes() { return CacheBytes[Acc] + CacheBytes[AccHuge] + CacheBytes[AccSmall]; }
|
uint64_t MemoryManager::DeviceCacheBytes() { return CacheBytes[Acc] + CacheBytes[AccHuge] + CacheBytes[AccSmall]; }
|
||||||
|
@ -108,6 +108,7 @@ private:
|
|||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
// Free pool
|
// Free pool
|
||||||
/////////////////////////////////////////////////
|
/////////////////////////////////////////////////
|
||||||
|
static void DisplayMallinfo(void);
|
||||||
static void *Insert(void *ptr,size_t bytes,int type) ;
|
static void *Insert(void *ptr,size_t bytes,int type) ;
|
||||||
static void *Lookup(size_t bytes,int type) ;
|
static void *Lookup(size_t bytes,int type) ;
|
||||||
static void *Insert(void *ptr,size_t bytes,AllocationCacheEntry *entries,int ncache,int &victim,uint64_t &cbytes) ;
|
static void *Insert(void *ptr,size_t bytes,AllocationCacheEntry *entries,int ncache,int &victim,uint64_t &cbytes) ;
|
||||||
|
Loading…
Reference in New Issue
Block a user