diff options
| author | 2021-02-12 11:07:23 +0000 | |
|---|---|---|
| committer | 2021-02-12 11:07:23 +0000 | |
| commit | a4734632f7687cda3e84ff250db8943a6b5699f7 (patch) | |
| tree | 474d3dc9dd67e82cf9d176392e020970ec425382 | |
| parent | 44a417e00d7e79cbc5af4499b47772c758bba19a (diff) | |
| parent | 794e034d2fb2c53cfef2d1c48f65e5b596a36217 (diff) | |
Merge changes I327b971f,Ie35e1fe7 into sc-dev
* changes:
Update AOT trigger names to match the new convention
Limit PerfettoTrigger to max 1 trigger per minute
3 files changed, 16 insertions, 3 deletions
diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java index 6e9bc84156f1..cba6af98a980 100644 --- a/core/java/com/android/internal/jank/InteractionJankMonitor.java +++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java @@ -499,7 +499,7 @@ public class InteractionJankMonitor { } public String getPerfettoTrigger() { - return String.format("interaction-jank-monitor-%d", mCujType); + return String.format("com.android.telemetry.interaction-jank-monitor-%d", mCujType); } public String getName() { diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java index f42f468aefa0..dc6880e4f997 100644 --- a/core/java/com/android/internal/util/LatencyTracker.java +++ b/core/java/com/android/internal/util/LatencyTracker.java @@ -219,7 +219,7 @@ public class LatencyTracker { } private static String getTraceTriggerNameForAction(@Action int action) { - return "latency-tracker-" + getNameOfAction(STATSD_ACTION[action]); + return "com.android.telemetry.latency-tracker-" + getNameOfAction(STATSD_ACTION[action]); } public static boolean isEnabled(Context ctx) { diff --git a/core/java/com/android/internal/util/PerfettoTrigger.java b/core/java/com/android/internal/util/PerfettoTrigger.java index 9c87c697a737..c7585046cf9c 100644 --- a/core/java/com/android/internal/util/PerfettoTrigger.java +++ b/core/java/com/android/internal/util/PerfettoTrigger.java @@ -16,6 +16,7 @@ package com.android.internal.util; +import android.os.SystemClock; import android.util.Log; import java.io.IOException; @@ -27,16 +28,28 @@ import java.io.IOException; public class PerfettoTrigger { private static final String TAG = "PerfettoTrigger"; private static final String TRIGGER_COMMAND = "/system/bin/trigger_perfetto"; + private static final long THROTTLE_MILLIS = 60000; + private static volatile long sLastTriggerTime = -THROTTLE_MILLIS; /** * @param triggerName The name of the trigger. Must match the value defined in the AOT * Perfetto config. */ public static void trigger(String triggerName) { + // Trace triggering has a non-negligible cost (fork+exec). + // To mitigate potential excessive triggering by the API client we ignore calls that happen + // too quickl after the most recent trigger. + long sinceLastTrigger = SystemClock.elapsedRealtime() - sLastTriggerTime; + if (sinceLastTrigger < THROTTLE_MILLIS) { + Log.v(TAG, "Not triggering " + triggerName + " - not enough time since last trigger"); + return; + } + try { ProcessBuilder pb = new ProcessBuilder(TRIGGER_COMMAND, triggerName); Log.v(TAG, "Triggering " + String.join(" ", pb.command())); - Process process = pb.start(); + pb.start(); + sLastTriggerTime = SystemClock.elapsedRealtime(); } catch (IOException e) { Log.w(TAG, "Failed to trigger " + triggerName, e); } |