diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.cc b/chrome/browser/metrics/process_memory_metrics_emitter.cc index 394627ac870eae..565db2ead69491 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter.cc @@ -173,6 +173,8 @@ const Metric kAllocatorDumpNamesForMetrics[] = { EmitTo::kSizeInUkmAndUma, &Memory_Experimental::SetDiscardable}, {"discardable", "Discardable.FreelistSize", MetricSize::kSmall, "freelist_size", EmitTo::kSizeInUmaOnly, nullptr}, + {"discardable", "Discardable.FreelistSize.Dirty", MetricSize::kSmall, + "freelist_size_dirty", EmitTo::kSizeInUmaOnly, nullptr}, {"discardable", "Discardable.ResidentSize", MetricSize::kSmall, "resident_size", EmitTo::kSizeInUmaOnly, nullptr}, {"discardable", "Discardable.VirtualSize", MetricSize::kSmall, diff --git a/components/discardable_memory/common/discardable_shared_memory_heap.cc b/components/discardable_memory/common/discardable_shared_memory_heap.cc index 7bd44ad63d7ebb..c6deffd38041ac 100644 --- a/components/discardable_memory/common/discardable_shared_memory_heap.cc +++ b/components/discardable_memory/common/discardable_shared_memory_heap.cc @@ -366,6 +366,9 @@ bool DiscardableSharedMemoryHeap::OnMemoryDump( total_dump->AddScalar("freelist_size", base::trace_event::MemoryAllocatorDump::kUnitsBytes, freelist_size); + total_dump->AddScalar("freelist_size_dirty", + base::trace_event::MemoryAllocatorDump::kUnitsBytes, + dirty_freed_memory_page_count_ * base::GetPageSize()); if (args.level_of_detail == base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND) { // These metrics (size and virtual size) are also reported by each diff --git a/components/discardable_memory/common/discardable_shared_memory_heap_unittest.cc b/components/discardable_memory/common/discardable_shared_memory_heap_unittest.cc index 275913449dc944..31ac6cf7715d2e 100644 --- a/components/discardable_memory/common/discardable_shared_memory_heap_unittest.cc +++ b/components/discardable_memory/common/discardable_shared_memory_heap_unittest.cc @@ -361,11 +361,14 @@ TEST(DiscardableSharedMemoryHeapTest, OnMemoryDumpTest) { "discardable/child_0x%" PRIXPTR, reinterpret_cast(&heap))); ASSERT_NE(nullptr, dump); - base::trace_event::MemoryAllocatorDump::Entry freelist("freelist_size", - "bytes", 0); + base::trace_event::MemoryAllocatorDump::Entry freelist_size("freelist_size", + "bytes", 0); + base::trace_event::MemoryAllocatorDump::Entry freelist_size_dirty( + "freelist_size_dirty", "bytes", 0); base::trace_event::MemoryAllocatorDump::Entry virtual_size("virtual_size", "bytes", 0); - EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist)))); + EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist_size)))); + EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist_size_dirty)))); EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(virtual_size)))); } @@ -382,11 +385,14 @@ TEST(DiscardableSharedMemoryHeapTest, OnMemoryDumpTest) { "discardable/child_0x%" PRIXPTR, reinterpret_cast(&heap))); ASSERT_NE(nullptr, dump); - base::trace_event::MemoryAllocatorDump::Entry freelist("freelist_size", - "bytes", 0); + base::trace_event::MemoryAllocatorDump::Entry freelist_size("freelist_size", + "bytes", 0); + base::trace_event::MemoryAllocatorDump::Entry freelist_size_dirty( + "freelist_size_dirty", "bytes", 0); base::trace_event::MemoryAllocatorDump::Entry virtual_size( "virtual_size", "bytes", block_size); - EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist)))); + EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist_size)))); + EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(freelist_size_dirty)))); EXPECT_THAT(dump->entries(), Contains(Eq(ByRef(virtual_size)))); }