summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/jank/FrameTracker.java2
-rw-r--r--core/java/com/android/internal/jank/InteractionJankMonitor.java9
-rw-r--r--core/java/com/android/internal/jank/PerfettoTrigger.java52
3 files changed, 12 insertions, 51 deletions
diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java
index 85dc2aea4b1c..c0d46f632500 100644
--- a/core/java/com/android/internal/jank/FrameTracker.java
+++ b/core/java/com/android/internal/jank/FrameTracker.java
@@ -176,7 +176,7 @@ public class FrameTracker implements HardwareRendererObserver.OnFrameMetricsAvai
* Trigger the prefetto daemon.
*/
public void triggerPerfetto() {
- InteractionJankMonitor.getInstance().trigger();
+ InteractionJankMonitor.getInstance().trigger(mSession);
}
/**
diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java
index 3624f0d34725..ba07863a292d 100644
--- a/core/java/com/android/internal/jank/InteractionJankMonitor.java
+++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java
@@ -319,11 +319,11 @@ public class InteractionJankMonitor {
* Trigger the perfetto daemon to collect and upload data.
*/
@VisibleForTesting
- public void trigger() {
+ public void trigger(Session session) {
synchronized (this) {
if (!mInitialized) return;
mWorker.getThreadHandler().post(
- () -> PerfettoTrigger.trigger(PerfettoTrigger.TRIGGER_TYPE_JANK));
+ () -> PerfettoTrigger.trigger(session.getPerfettoTrigger()));
}
}
@@ -350,9 +350,12 @@ public class InteractionJankMonitor {
return getStatsdInteractionType() != NO_STATSD_LOGGING;
}
+ public String getPerfettoTrigger() {
+ return String.format("interaction-jank-monitor-%d", mCujType);
+ }
+
public String getName() {
return "Cuj<" + getCuj() + ">";
}
}
-
}
diff --git a/core/java/com/android/internal/jank/PerfettoTrigger.java b/core/java/com/android/internal/jank/PerfettoTrigger.java
index 6c8d3cdcf5ae..643d24a51b58 100644
--- a/core/java/com/android/internal/jank/PerfettoTrigger.java
+++ b/core/java/com/android/internal/jank/PerfettoTrigger.java
@@ -17,15 +17,12 @@
//TODO (165884885): Make PerfettoTrigger more generic and move it to another package.
package com.android.internal.jank;
-import android.annotation.IntDef;
import android.annotation.NonNull;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
/**
* A trigger implementation with perfetto backend.
@@ -35,23 +32,14 @@ public class PerfettoTrigger {
private static final String TAG = PerfettoTrigger.class.getSimpleName();
private static final boolean DEBUG = false;
private static final String TRIGGER_COMMAND = "/system/bin/trigger_perfetto";
- private static final String[] TRIGGER_TYPE_NAMES = new String[] { "jank-tracker" };
- public static final int TRIGGER_TYPE_JANK = 0;
-
- /** @hide */
- @IntDef({
- TRIGGER_TYPE_JANK
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface TriggerType {}
/**
- * @param type the trigger type
+ * @param triggerName The name of the trigger. Must match the value defined in the AOT
+ * Perfetto config.
*/
- public static void trigger(@NonNull @TriggerType int type) {
+ public static void trigger(String triggerName) {
try {
- Token token = new Token(type, TRIGGER_TYPE_NAMES[type]);
- ProcessBuilder pb = new ProcessBuilder(TRIGGER_COMMAND, token.getName());
+ ProcessBuilder pb = new ProcessBuilder(TRIGGER_COMMAND, triggerName);
if (DEBUG) {
StringBuilder sb = new StringBuilder();
for (String arg : pb.command()) {
@@ -64,7 +52,7 @@ public class PerfettoTrigger {
readConsoleOutput(process);
}
} catch (IOException | InterruptedException e) {
- Log.w(TAG, "Failed to trigger " + type, e);
+ Log.w(TAG, "Failed to trigger " + triggerName, e);
}
}
@@ -82,34 +70,4 @@ public class PerfettoTrigger {
Log.d(TAG, "err message=" + errLine.toString());
}
}
-
- /**
- * Token which is used to trigger perfetto.
- */
- public static class Token {
- private int mType;
- private String mName;
-
- Token(@TriggerType int type, String name) {
- mType = type;
- mName = name;
- }
-
- /**
- * Get trigger type.
- * @return trigger type, should be @TriggerType
- */
- public int getType() {
- return mType;
- }
-
- /**
- * Get name of this token as the argument while triggering perfetto.
- * @return name
- */
- public String getName() {
- return mName;
- }
- }
-
}