Commit b4325a75 authored by Dominik Lang's avatar Dominik Lang Committed by Commit Bot

Add pid to memory dumps.

Memory snapshots were missing process id data so the trace processor
couldn't fill process_memory_snapshot table properly.

Bug: 1098746
Change-Id: Id2341d81581624a07b8079fc2e08f9495479de9f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2522070
Commit-Queue: Eric Seckler <eseckler@chromium.org>
Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Reviewed-by: default avatarssid <ssid@chromium.org>
Cr-Commit-Position: refs/heads/master@{#825389}
parent f092d373
...@@ -393,9 +393,11 @@ void ProcessMemoryDump::SerializeAllocatorDumpsInto(TracedValue* value) const { ...@@ -393,9 +393,11 @@ void ProcessMemoryDump::SerializeAllocatorDumpsInto(TracedValue* value) const {
} }
void ProcessMemoryDump::SerializeAllocatorDumpsInto( void ProcessMemoryDump::SerializeAllocatorDumpsInto(
perfetto::protos::pbzero::MemoryTrackerSnapshot* memory_snapshot) const { perfetto::protos::pbzero::MemoryTrackerSnapshot* memory_snapshot,
const base::ProcessId pid) const {
ProcessSnapshot* process_snapshot = ProcessSnapshot* process_snapshot =
memory_snapshot->add_process_memory_dumps(); memory_snapshot->add_process_memory_dumps();
process_snapshot->set_pid(static_cast<int>(pid));
for (const auto& allocator_dump_it : allocator_dumps_) { for (const auto& allocator_dump_it : allocator_dumps_) {
ProcessSnapshot::MemoryNode* memory_node = ProcessSnapshot::MemoryNode* memory_node =
......
...@@ -233,7 +233,8 @@ class BASE_EXPORT ProcessMemoryDump { ...@@ -233,7 +233,8 @@ class BASE_EXPORT ProcessMemoryDump {
void SerializeAllocatorDumpsInto(TracedValue* value) const; void SerializeAllocatorDumpsInto(TracedValue* value) const;
void SerializeAllocatorDumpsInto( void SerializeAllocatorDumpsInto(
perfetto::protos::pbzero::MemoryTrackerSnapshot* memory_snapshot) const; perfetto::protos::pbzero::MemoryTrackerSnapshot* memory_snapshot,
const base::ProcessId pid) const;
const MemoryDumpArgs& dump_args() const { return dump_args_; } const MemoryDumpArgs& dump_args() const { return dump_args_; }
......
...@@ -76,7 +76,7 @@ bool TracingObserverProto::AddChromeDumpToTraceIfEnabled( ...@@ -76,7 +76,7 @@ bool TracingObserverProto::AddChromeDumpToTraceIfEnabled(
handle->set_memory_tracker_snapshot(); handle->set_memory_tracker_snapshot();
memory_snapshot->set_level_of_detail( memory_snapshot->set_level_of_detail(
MemoryDumpLevelOfDetailToProto(args.level_of_detail)); MemoryDumpLevelOfDetailToProto(args.level_of_detail));
process_memory_dump->SerializeAllocatorDumpsInto(memory_snapshot); process_memory_dump->SerializeAllocatorDumpsInto(memory_snapshot, pid);
return true; return true;
} }
...@@ -100,6 +100,7 @@ bool TracingObserverProto::AddOsDumpToTraceIfEnabled( ...@@ -100,6 +100,7 @@ bool TracingObserverProto::AddOsDumpToTraceIfEnabled(
process_stats_packet->set_process_stats(); process_stats_packet->set_process_stats();
perfetto::protos::pbzero::ProcessStats::Process* process = perfetto::protos::pbzero::ProcessStats::Process* process =
process_stats->add_processes(); process_stats->add_processes();
process->set_pid(static_cast<int>(pid));
OsDumpAsProtoInto(process, os_dump); OsDumpAsProtoInto(process, os_dump);
......
...@@ -272,6 +272,9 @@ TEST_F(TracingObserverProtoTest, AddChromeDumpToTraceIfEnabled) { ...@@ -272,6 +272,9 @@ TEST_F(TracingObserverProtoTest, AddChromeDumpToTraceIfEnabled) {
snapshot.process_memory_dumps(0); snapshot.process_memory_dumps(0);
EXPECT_EQ(3, process_memory_dump.allocator_dumps_size()); EXPECT_EQ(3, process_memory_dump.allocator_dumps_size());
EXPECT_TRUE(process_memory_dump.has_pid());
EXPECT_EQ(static_cast<int>(kTestPid), process_memory_dump.pid());
const MemoryTrackerSnapshot::ProcessSnapshot::MemoryNode& dump0 = const MemoryTrackerSnapshot::ProcessSnapshot::MemoryNode& dump0 =
process_memory_dump.allocator_dumps(0); process_memory_dump.allocator_dumps(0);
EXPECT_EQ("mad1", dump0.absolute_name()); EXPECT_EQ("mad1", dump0.absolute_name());
...@@ -330,6 +333,9 @@ TEST_F(TracingObserverProtoTest, AddOsDumpToTraceIfEnabled) { ...@@ -330,6 +333,9 @@ TEST_F(TracingObserverProtoTest, AddOsDumpToTraceIfEnabled) {
const ::perfetto::protos::ProcessStats::Process& process = const ::perfetto::protos::ProcessStats::Process& process =
process_stats.processes(0); process_stats.processes(0);
EXPECT_TRUE(process.has_pid());
EXPECT_EQ(static_cast<int>(kTestPid), process.pid());
EXPECT_TRUE(process.has_chrome_private_footprint_kb()); EXPECT_TRUE(process.has_chrome_private_footprint_kb());
EXPECT_EQ(kPrivateFootprintKb, process.chrome_private_footprint_kb()); EXPECT_EQ(kPrivateFootprintKb, process.chrome_private_footprint_kb());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment