Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions tcmalloc/global_stats.cc
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ void ExtractStats(TCMallocStats& r, uint64_t* absl_nullable class_count,
PageHeapSpinLockHolder l;
r.metadata_bytes = tc_globals.metadata_bytes();
r.pagemap_bytes = tc_globals.pagemap().bytes();
r.pagemap_root_size = tc_globals.pagemap().RootSize();
r.pageheap = tc_globals.page_allocator().stats();
r.peak_stats = tc_globals.page_allocator().peak_stats();
if (small_spans != nullptr) {
Expand Down Expand Up @@ -367,6 +368,7 @@ void DumpStats(Printer& out, int level) {
"MALLOC: %12u (%7.1f MiB) Table buckets created\n"
"MALLOC: %12u (%7.1f MiB) Pagemap bytes used\n"
"MALLOC: %12u (%7.1f MiB) Pagemap root resident bytes\n"
"MALLOC: %12u (%7.1f MiB) Pagemap root size\n"
"MALLOC: %12u (%7.1f MiB) per-CPU slab bytes used\n"
"MALLOC: %12u (%7.1f MiB) per-CPU slab resident bytes\n"
"MALLOC: %12u (%7.1f MiB) malloc metadata Arena non-resident bytes\n"
Expand Down Expand Up @@ -405,6 +407,7 @@ void DumpStats(Printer& out, int level) {
uint64_t(stats.pagemap_bytes),
stats.pagemap_bytes / MiB,
stats.pagemap_root_bytes_res, stats.pagemap_root_bytes_res / MiB,
uint64_t(stats.pagemap_root_size), stats.pagemap_root_size / MiB,
uint64_t(stats.percpu_metadata_bytes),
stats.percpu_metadata_bytes / MiB,
stats.percpu_metadata_bytes_res, stats.percpu_metadata_bytes_res / MiB,
Expand Down Expand Up @@ -765,6 +768,7 @@ void DumpStatsInPbtxt(Printer& out, int level) {
uint64_t(stats.linked_sample_stats.total));
region.PrintI64("pagemap_size", uint64_t(stats.pagemap_bytes));
region.PrintI64("pagemap_root_residence", stats.pagemap_root_bytes_res);
region.PrintI64("pagemap_root_size", uint64_t(stats.pagemap_root_size));
region.PrintI64("percpu_slab_size", stats.percpu_metadata_bytes);
region.PrintI64("percpu_slab_residence", stats.percpu_metadata_bytes_res);
region.PrintI64("peak_backed", stats.peak_stats.backed_bytes);
Expand Down
1 change: 1 addition & 0 deletions tcmalloc/global_stats.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct TCMallocStats {
AllocatorStats stack_stats; // StackTrace objects
AllocatorStats linked_sample_stats; // StackTraceTable::LinkedSample objects
size_t pagemap_bytes; // included in metadata bytes
size_t pagemap_root_size; // Size of pagemap root node array
size_t percpu_metadata_bytes; // included in metadata bytes
BackingStats pageheap; // Stats from page heap
PageAllocator::PeakStats peak_stats;
Expand Down
2 changes: 2 additions & 0 deletions tcmalloc/pagemap.h
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,8 @@ class PageMap {
return map_.bytes_used();
}

constexpr size_t RootSize() const { return map_.RootSize(); }

[[nodiscard]] void* GetHugepage(PageId p) {
return map_.get_hugepage(p.index());
}
Expand Down
1 change: 1 addition & 0 deletions tcmalloc/testing/get_stats_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ TEST_F(GetStatsTest, Pbtxt) {
EXPECT_THAT(buf, ContainsRegex(R"(in_use_by_app: [0-9]+)"));
EXPECT_THAT(buf, ContainsRegex(R"(page_heap_freelist: [0-9]+)"));
EXPECT_THAT(buf, ContainsRegex(R"(tcmalloc_huge_page_size: [0-9]+)"));
EXPECT_THAT(buf, ContainsRegex(R"(pagemap_root_size: [1-9][0-9]*)"));
#if defined(GTEST_USES_PCRE)
EXPECT_THAT(buf,
ContainsRegex(absl::StrCat(
Expand Down
Loading