ftrace: Add oom_score_adj_update
Bug: 119616981
Change-Id: If9203e30d309583fe7c1b2b80c7ae4256ced8d1b
diff --git a/Android.bp b/Android.bp
index f548a75..8bb0a4c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1262,6 +1262,7 @@
"protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto",
+ "protos/perfetto/trace/ftrace/oom_score_adj_update.proto",
"protos/perfetto/trace/ftrace/print.proto",
"protos/perfetto/trace/ftrace/regulator_disable.proto",
"protos/perfetto/trace/ftrace/regulator_disable_complete.proto",
@@ -1578,6 +1579,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.pb.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/oom_score_adj_update.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/print.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable_complete.pb.cc",
@@ -1895,6 +1897,7 @@
"protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto",
+ "protos/perfetto/trace/ftrace/oom_score_adj_update.proto",
"protos/perfetto/trace/ftrace/print.proto",
"protos/perfetto/trace/ftrace/regulator_disable.proto",
"protos/perfetto/trace/ftrace/regulator_disable_complete.proto",
@@ -2211,6 +2214,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.pb.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/oom_score_adj_update.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/print.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable_complete.pb.h",
@@ -2531,6 +2535,7 @@
"protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto",
+ "protos/perfetto/trace/ftrace/oom_score_adj_update.proto",
"protos/perfetto/trace/ftrace/print.proto",
"protos/perfetto/trace/ftrace/regulator_disable.proto",
"protos/perfetto/trace/ftrace/regulator_disable_complete.proto",
@@ -2848,6 +2853,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.pbzero.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/oom_score_adj_update.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/print.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable_complete.pbzero.cc",
@@ -3165,6 +3171,7 @@
"protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.proto",
"protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.proto",
+ "protos/perfetto/trace/ftrace/oom_score_adj_update.proto",
"protos/perfetto/trace/ftrace/print.proto",
"protos/perfetto/trace/ftrace/regulator_disable.proto",
"protos/perfetto/trace/ftrace/regulator_disable_complete.proto",
@@ -3482,6 +3489,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_direct_reclaim_end.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_sleep.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/mm_vmscan_kswapd_wake.pbzero.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/oom_score_adj_update.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/print.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator_disable_complete.pbzero.h",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 33aef38..3436e1b 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -325,4 +325,5 @@
"binder_transaction_alloc_buf.proto",
"signal_deliver.proto",
"signal_generate.proto",
+ "oom_score_adj_update.proto",
]
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 860eb48..5320e57 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -311,6 +311,7 @@
import "perfetto/trace/ftrace/binder_transaction_alloc_buf.proto";
import "perfetto/trace/ftrace/signal_deliver.proto";
import "perfetto/trace/ftrace/signal_generate.proto";
+import "perfetto/trace/ftrace/oom_score_adj_update.proto";
package perfetto.protos;
@@ -665,5 +666,6 @@
BinderTransactionAllocBufFtraceEvent binder_transaction_alloc_buf = 323;
SignalDeliverFtraceEvent signal_deliver = 324;
SignalGenerateFtraceEvent signal_generate = 325;
+ OomScoreAdjUpdateFtraceEvent oom_score_adj_update = 326;
}
}
diff --git a/protos/perfetto/trace/ftrace/oom_score_adj_update.proto b/protos/perfetto/trace/ftrace/oom_score_adj_update.proto
new file mode 100644
index 0000000..da46153
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/oom_score_adj_update.proto
@@ -0,0 +1,13 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message OomScoreAdjUpdateFtraceEvent {
+ optional string comm = 1;
+ optional int32 oom_score_adj = 2;
+ optional int32 pid = 3;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index e7a85e4..3687b76 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -561,6 +561,7 @@
// removed field with id 323
// removed field with id 324
// removed field with id 325
+ // removed field with id 326
}
}
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 80cbcc6..1bf3ddb 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3756,6 +3756,17 @@
event->fields.push_back(MakeField("sig", 6, kProtoInt32));
}
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "oom_score_adj_update";
+ event->group = "oom";
+ event->proto_field_id = 326;
+ event->fields.push_back(MakeField("comm", 1, kProtoString));
+ event->fields.push_back(MakeField("oom_score_adj", 2, kProtoInt32));
+ event->fields.push_back(MakeField("pid", 3, kProtoInt32));
+ }
+
return events;
}
diff --git a/tools/ftrace_proto_gen/event_whitelist b/tools/ftrace_proto_gen/event_whitelist
index 8d85611..d2dd889 100644
--- a/tools/ftrace_proto_gen/event_whitelist
+++ b/tools/ftrace_proto_gen/event_whitelist
@@ -320,4 +320,5 @@
clk/clk_set_rate
binder/binder_transaction_alloc_buf
signal/signal_deliver
-signal/signal_generate
\ No newline at end of file
+signal/signal_generate
+oom/oom_score_adj_update
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.cc b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
index 484e0ad..4a1747b 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
@@ -308,7 +308,7 @@
void PrintEventFormatterMain(const std::set<std::string>& events) {
printf(
"\nAdd output to FormatEventText in "
- "tools/ftrace_proto_gen/ftrace_event_formatter.cc\n");
+ "tools/trace_to_text/ftrace_event_formatter.cc\n");
for (auto event : events) {
printf(
"else if (event.has_%s()) {\nconst auto& inner = event.%s();\nreturn "
@@ -332,7 +332,7 @@
}
void PrintEventFormatterUsingStatements(const std::set<std::string>& events) {
- printf("\nAdd output to tools/ftrace_proto_gen/ftrace_event_formatter.cc\n");
+ printf("\nAdd output to tools/trace_to_text/ftrace_event_formatter.cc\n");
for (auto event : events) {
printf("using protos::%sFtraceEvent;\n", ToCamelCase(event).c_str());
}
@@ -340,7 +340,7 @@
void PrintEventFormatterFunctions(const std::set<std::string>& events) {
printf(
- "\nAdd output to tools/ftrace_proto_gen/ftrace_event_formatter.cc and "
+ "\nAdd output to tools/trace_to_text/ftrace_event_formatter.cc and "
"then manually go through format files to match fields\n");
for (auto event : events) {
printf(
diff --git a/tools/trace_to_text/ftrace_event_formatter.cc b/tools/trace_to_text/ftrace_event_formatter.cc
index 2357eef..3c55fc7 100644
--- a/tools/trace_to_text/ftrace_event_formatter.cc
+++ b/tools/trace_to_text/ftrace_event_formatter.cc
@@ -340,6 +340,7 @@
using protos::ClkSetRateFtraceEvent;
using protos::SignalDeliverFtraceEvent;
using protos::SignalGenerateFtraceEvent;
+using protos::OomScoreAdjUpdateFtraceEvent;
const char* GetSchedSwitchFlag(int64_t state) {
state &= 511;
@@ -2691,6 +2692,13 @@
return std::string(line);
}
+std::string FormatOomScoreAdjUpdate(const OomScoreAdjUpdateFtraceEvent& event) {
+ char line[2048];
+ sprintf(line, "oom_score_adj_update: pid=%d comm=%s oom_score_adj=%hd",
+ event.pid(), event.comm().c_str(), event.oom_score_adj());
+ return std::string(line);
+}
+
std::string FormatEventText(const protos::FtraceEvent& event) {
if (event.has_binder_lock()) {
const auto& inner = event.binder_lock();
@@ -3490,6 +3498,9 @@
} else if (event.has_signal_generate()) {
const auto& inner = event.signal_generate();
return FormatSignalGenerate(inner);
+ } else if (event.has_oom_score_adj_update()) {
+ const auto& inner = event.oom_score_adj_update();
+ return FormatOomScoreAdjUpdate(inner);
}
return "";