diff options
| author | 2024-12-13 11:08:34 +0000 | |
|---|---|---|
| committer | 2024-12-13 14:07:51 +0000 | |
| commit | 9f337098c8bf8d0f9de474618e53f1fee2200854 (patch) | |
| tree | bbe267ceada243e33c2ca9ab2f24b053411d3c52 | |
| parent | 57724986052b8d2b8b5f6e96085348ee2cf7eb09 (diff) | |
system server: configure 4 MB perfetto shmem buffer
Increase Perfetto's shmem buffer from default size (256 KB) to 4 MB
to avoid crashes (too long perfetto producer stalls) caused by shmem
chunks exhaustion/contention.
Bug: b/382369925
Flag: android.tracing.system_server_large_perfetto_shmem_buffer
Test: presubmit
Change-Id: I5b6ab40cb3987a7aed7bb09801f02bea3f3962a2
| -rw-r--r-- | core/java/android/tracing/flags.aconfig | 8 | ||||
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/core/java/android/tracing/flags.aconfig b/core/java/android/tracing/flags.aconfig index fb1bd1703ce6..6116d599baa0 100644 --- a/core/java/android/tracing/flags.aconfig +++ b/core/java/android/tracing/flags.aconfig @@ -70,3 +70,11 @@ flag { is_fixed_read_only: true bug: "352538294" } + +flag { + name: "system_server_large_perfetto_shmem_buffer" + namespace: "windowing_tools" + description: "Large perfetto shmem buffer" + is_fixed_read_only: true + bug: "382369925" +} diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 29e0487dad0a..6ffbe3cec101 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -91,6 +91,7 @@ import android.server.ServerProtoEnums; import android.system.ErrnoException; import android.system.Os; import android.text.TextUtils; +import android.tracing.perfetto.InitArguments; import android.util.ArrayMap; import android.util.DisplayMetrics; import android.util.Dumpable; @@ -791,6 +792,12 @@ public final class SystemServer implements Dumpable { private void run() { TimingsTraceAndSlog t = new TimingsTraceAndSlog(); try { + if (android.tracing.Flags.systemServerLargePerfettoShmemBuffer()) { + // Explicitly initialize a 4 MB shmem buffer for Perfetto producers (b/382369925) + android.tracing.perfetto.Producer.init(new InitArguments( + InitArguments.PERFETTO_BACKEND_SYSTEM, 4 * 1024)); + } + t.traceBegin("InitBeforeStartServices"); // Record the process start information in sys props. |