summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zimuzo Ezeozue <zezeozue@google.com> 2025-02-10 13:47:08 +0000
committer Zimuzo Ezeozue <zezeozue@google.com> 2025-02-13 18:37:05 +0000
commit8551617b7d918fa2bed2ea77a4b1b53830bbeff7 (patch)
treeaa124dc1146bea42af5be1e363a58c31506b7c2b
parentf4240eef12eab542da8e48df916616fcee07f61c (diff)
Switched MQ tracing to proto from DebugAnnotations
This allows us to enable it in the field since we are no longer using the loosely typed debug args. Test: atest PerfettoTest Test: atest TracePerfTest Bug: 303199244 Flag: android.os.perfetto_sdk_tracing_v2 Change-Id: I958199dcffc0a597233b7c9df15fffee6d5b40d8
-rw-r--r--apct-tests/perftests/core/src/android/os/TracePerfTest.java24
-rw-r--r--core/java/android/os/CombinedMessageQueue/MessageQueue.java10
-rw-r--r--core/java/android/os/Looper.java6
3 files changed, 36 insertions, 4 deletions
diff --git a/apct-tests/perftests/core/src/android/os/TracePerfTest.java b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
index bf7c96a3cb85..0b941c9d83c0 100644
--- a/apct-tests/perftests/core/src/android/os/TracePerfTest.java
+++ b/apct-tests/perftests/core/src/android/os/TracePerfTest.java
@@ -139,6 +139,30 @@ public class TracePerfTest {
}
}
+ @Test
+ public void testInstantPerfettoWithProto() {
+ PerfettoTrace.begin(FOO_CATEGORY, "message_queue_receive")
+ .beginProto()
+ .beginNested(2004 /* message_queue */)
+ .addField(1 /* sending_thread_name */, "foo")
+ .endNested()
+ .endProto()
+ .addTerminatingFlow(5)
+ .emit();
+
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ PerfettoTrace.begin(FOO_CATEGORY, "message_queue_receive")
+ .beginProto()
+ .beginNested(2004 /* message_queue */)
+ .addField(1 /* sending_thread_name */, "foo")
+ .endNested()
+ .endProto()
+ .addTerminatingFlow(5)
+ .emit();
+ }
+ }
+
private static TraceConfig getTraceConfig(String cat) {
BufferConfig bufferConfig = BufferConfig.newBuilder().setSizeKb(1024).build();
TrackEventConfig trackEventConfig = TrackEventConfig
diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
index 349a2f0a181d..3fdb41f7dd83 100644
--- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java
+++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java
@@ -238,9 +238,13 @@ public final class MessageQueue {
traceMessageCount();
PerfettoTrace.instant(PerfettoTrace.MQ_CATEGORY, "message_queue_send")
.addFlow(msg.mEventId.get())
- .addArg("receiving_thread", mThread.getName())
- .addArg("delay", when - SystemClock.uptimeMillis())
- .addArg("what", msg.what)
+ .beginProto()
+ .beginNested(2004 /* message_queue */)
+ .addField(2 /* receiving_thread_name */, mThread.getName())
+ .addField(3 /* message_code */, msg.what)
+ .addField(4 /* message_delay_ms */, when - SystemClock.uptimeMillis())
+ .endNested()
+ .endProto()
.emit();
}
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index d16e4473d55f..1329b90538bb 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -200,7 +200,11 @@ public final class Looper {
}
PerfettoTrace.begin(PerfettoTrace.MQ_CATEGORY, "message_queue_receive")
- .addArg("sending_thread", msg.mSendingThreadName)
+ .beginProto()
+ .beginNested(2004 /* message_queue */)
+ .addField(1 /* sending_thread_name */, msg.mSendingThreadName)
+ .endNested()
+ .endProto()
.addTerminatingFlow(msg.mEventId.get())
.emit();