diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-09-14 20:05:31 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-09-14 20:05:31 +0000 |
commit | ca4378f83bb53aff8b340a896ce87afa1597ff35 (patch) | |
tree | ee432badecd79f1a1994c77e3f0e889cdc280956 /vespamalloc | |
parent | 0088d16e62a7be6ae06e2c5305036a8db41e8173 (diff) |
Add more info on the SIGPROF signal
Diffstat (limited to 'vespamalloc')
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/datasegment.cpp | 6 | ||||
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/malloc.h | 1 | ||||
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/mmappool.cpp | 15 | ||||
-rw-r--r-- | vespamalloc/src/vespamalloc/malloc/mmappool.h | 3 |
4 files changed, 19 insertions, 6 deletions
diff --git a/vespamalloc/src/vespamalloc/malloc/datasegment.cpp b/vespamalloc/src/vespamalloc/malloc/datasegment.cpp index 4f10739c8f9..a7e3a938fca 100644 --- a/vespamalloc/src/vespamalloc/malloc/datasegment.cpp +++ b/vespamalloc/src/vespamalloc/malloc/datasegment.cpp @@ -43,7 +43,8 @@ DataSegment::freeSize() const { return _freeList.numFreeBlocks() * BlockSize; } -void * DataSegment::getBlock(size_t & oldBlockSize, SizeClassT sc) +void * +DataSegment::getBlock(size_t & oldBlockSize, SizeClassT sc) { const size_t minBlockSize = std::max(BlockSize, _osMemory.getMinBlockSize()); oldBlockSize = ((oldBlockSize + (minBlockSize-1))/minBlockSize)*minBlockSize; @@ -272,7 +273,8 @@ size_t DataSegment::infoThread(FILE * os, int level, uint32_t thread, SizeClassT return usedCount; } -void DataSegment::info(FILE * os, size_t level) +void +DataSegment::info(FILE * os, size_t level) { fprintf(os, "Start at %p, End at %p(%p) size(%ld) partialExtension(%ld) NextLogLimit(%lx) logLevel(%ld)\n", _osMemory.getStart(), _osMemory.getEnd(), sbrk(0), dataSize(), _partialExtension, _nextLogLimit, level); diff --git a/vespamalloc/src/vespamalloc/malloc/malloc.h b/vespamalloc/src/vespamalloc/malloc/malloc.h index 5867852db31..5def89dcea6 100644 --- a/vespamalloc/src/vespamalloc/malloc/malloc.h +++ b/vespamalloc/src/vespamalloc/malloc/malloc.h @@ -171,6 +171,7 @@ void MemoryManager<MemBlockPtrT, ThreadListT>::info(FILE * os, size_t level) _segment.info(os, level); _allocPool.info(os, level); _threadList.info(os, level); + _mmapPool.info(os, level); fflush(os); } diff --git a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp index 1fb6aa74af9..849563572e8 100644 --- a/vespamalloc/src/vespamalloc/malloc/mmappool.cpp +++ b/vespamalloc/src/vespamalloc/malloc/mmappool.cpp @@ -13,9 +13,7 @@ MMapPool::MMapPool() _count(0), _mutex(), _mappings() -{ - -} +{ } MMapPool::~MMapPool() { ASSERT_STACKTRACE(_mappings.empty()); @@ -113,4 +111,15 @@ MMapPool::get_size(void * ptr) const { return found->second._sz; } +void +MMapPool::info(FILE * os, size_t) const { + fprintf(os, "MMapPool has %zu mappings, accumulated count is %lu, with a total of %zu mapped bytes\n", + getNumMappings(), _count.load(std::memory_order_relaxed), getMmappedBytes()); + std::lock_guard guard(_mutex); + size_t i(0); + for (const auto & e : _mappings) { + fprintf(os, "%4zu: (id=%zu, sz=%zu) = %p\n", i++, e.second._id, e.second._sz, e.first); + } +} + } diff --git a/vespamalloc/src/vespamalloc/malloc/mmappool.h b/vespamalloc/src/vespamalloc/malloc/mmappool.h index 6c06b840b5b..c14f58ce564 100644 --- a/vespamalloc/src/vespamalloc/malloc/mmappool.h +++ b/vespamalloc/src/vespamalloc/malloc/mmappool.h @@ -18,9 +18,10 @@ public: size_t get_size(void *) const; size_t getNumMappings() const; size_t getMmappedBytes() const; + void info(FILE * os, size_t level) const; private: struct MMapInfo { - MMapInfo(size_t id, size_t sz) : _id(id), _sz(sz) { } + MMapInfo(size_t id, size_t sz) noexcept : _id(id), _sz(sz) { } size_t _id; size_t _sz; }; |