summaryrefslogtreecommitdiffstats
path: root/vespamalloc
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-09-14 20:05:31 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-09-14 20:05:31 +0000
commitca4378f83bb53aff8b340a896ce87afa1597ff35 (patch)
treeee432badecd79f1a1994c77e3f0e889cdc280956 /vespamalloc
parent0088d16e62a7be6ae06e2c5305036a8db41e8173 (diff)
Add more info on the SIGPROF signal
Diffstat (limited to 'vespamalloc')
-rw-r--r--vespamalloc/src/vespamalloc/malloc/datasegment.cpp6
-rw-r--r--vespamalloc/src/vespamalloc/malloc/malloc.h1
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mmappool.cpp15
-rw-r--r--vespamalloc/src/vespamalloc/malloc/mmappool.h3
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;
};