Merge "stdlib: OOM score" into main
diff --git a/src/trace_processor/metrics/sql/android/android_boot.sql b/src/trace_processor/metrics/sql/android/android_boot.sql
index 9140387..5738bff 100644
--- a/src/trace_processor/metrics/sql/android/android_boot.sql
+++ b/src/trace_processor/metrics/sql/android/android_boot.sql
@@ -19,6 +19,24 @@
INCLUDE PERFETTO MODULE android.garbage_collection;
INCLUDE PERFETTO MODULE android.oom_adjuster;
+DROP VIEW IF EXISTS android_oom_adj_intervals_with_detailed_bucket_name;
+CREATE PERFETTO VIEW android_oom_adj_intervals_with_detailed_bucket_name AS
+SELECT
+ ts,
+ dur,
+ score,
+ android_oom_adj_score_to_detailed_bucket_name(score, android_appid) AS bucket,
+ upid,
+ process_name,
+ oom_adj_id,
+ oom_adj_ts,
+ oom_adj_dur,
+ oom_adj_track_id,
+ oom_adj_thread_name,
+ oom_adj_reason,
+ oom_adj_trigger
+FROM _oom_adjuster_intervals;
+
CREATE OR REPLACE PERFETTO FUNCTION get_durations(process_name STRING)
RETURNS TABLE(uint_sleep_dur LONG, total_dur LONG) AS
SELECT
@@ -41,7 +59,7 @@
bucket,
process_name,
oom_adj_reason
-FROM android_oom_adj_intervals;
+FROM android_oom_adj_intervals_with_detailed_bucket_name;
DROP VIEW IF EXISTS oom_adj_events_by_process_name;
CREATE PERFETTO VIEW oom_adj_events_by_process_name AS
@@ -280,7 +298,7 @@
NULL as name,
bucket,
SUM(dur) as total_dur
- FROM android_oom_adj_intervals
+ FROM android_oom_adj_intervals_with_detailed_bucket_name
WHERE ts > first_user_unlocked()
GROUP BY bucket)
),
@@ -296,7 +314,7 @@
process_name as name,
bucket,
SUM(dur) as total_dur
- FROM android_oom_adj_intervals
+ FROM android_oom_adj_intervals_with_detailed_bucket_name
WHERE ts > first_user_unlocked()
AND process_name IS NOT NULL
GROUP BY process_name, bucket)
@@ -318,7 +336,7 @@
AVG(oom_adj_dur) as avg_oom_adj_dur,
COUNT(DISTINCT(oom_adj_id)) oom_adj_event_count,
oom_adj_reason
- FROM android_oom_adj_intervals
+ FROM android_oom_adj_intervals_with_detailed_bucket_name
WHERE ts > first_user_unlocked()
GROUP BY oom_adj_reason
)
diff --git a/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql b/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql
index 7b752a8..1564586 100644
--- a/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql
+++ b/src/trace_processor/metrics/sql/android/android_oom_adjuster.sql
@@ -15,6 +15,51 @@
--
INCLUDE PERFETTO MODULE android.oom_adjuster;
+DROP VIEW IF EXISTS android_oom_adj_intervals_with_detailed_bucket_name;
+CREATE PERFETTO VIEW android_oom_adj_intervals_with_detailed_bucket_name (
+ -- Timestamp the oom_adj score of the process changed
+ ts INT,
+ -- Duration until the next oom_adj score change of the process.
+ dur INT,
+ -- oom_adj score of the process.
+ score INT,
+ -- oom_adj bucket of the process.
+ bucket STRING,
+ -- Upid of the process having an oom_adj update.
+ upid INT,
+ -- Name of the process having an oom_adj update.
+ process_name STRING,
+ -- Slice id of the latest oom_adj update in the system_server.
+ oom_adj_id INT,
+ -- Timestamp of the latest oom_adj update in the system_server.
+ oom_adj_ts INT,
+ -- Duration of the latest oom_adj update in the system_server.
+ oom_adj_dur INT,
+ -- Track id of the latest oom_adj update in the system_server
+ oom_adj_track_id INT,
+ -- Thread name of the latest oom_adj update in the system_server.
+ oom_adj_thread_name STRING,
+ -- Reason for the latest oom_adj update in the system_server.
+ oom_adj_reason STRING,
+ -- Trigger for the latest oom_adj update in the system_server.
+ oom_adj_trigger STRING
+ ) AS
+SELECT
+ ts,
+ dur,
+ score,
+ android_oom_adj_score_to_detailed_bucket_name(score, android_appid) AS bucket,
+ upid,
+ process_name,
+ oom_adj_id,
+ oom_adj_ts,
+ oom_adj_dur,
+ oom_adj_track_id,
+ oom_adj_thread_name,
+ oom_adj_reason,
+ oom_adj_trigger
+FROM _oom_adjuster_intervals;
+
DROP TABLE IF EXISTS _oom_adj_events_with_src_bucket;
CREATE PERFETTO TABLE _oom_adj_events_with_src_bucket
AS
@@ -24,7 +69,7 @@
bucket,
process_name,
oom_adj_reason
-FROM android_oom_adj_intervals;
+FROM android_oom_adj_intervals_with_detailed_bucket_name;
DROP VIEW IF EXISTS oom_adj_events_by_process_name;
CREATE PERFETTO VIEW oom_adj_events_by_process_name AS
@@ -100,7 +145,7 @@
)
FROM (
SELECT NULL as name, bucket, SUM(dur) as total_dur
- FROM android_oom_adj_intervals GROUP BY bucket
+ FROM android_oom_adj_intervals_with_detailed_bucket_name GROUP BY bucket
)
),
'oom_adj_bucket_duration_agg_by_process',(SELECT RepeatedField(
@@ -112,7 +157,7 @@
)
FROM (
SELECT process_name as name, bucket, SUM(dur) as total_dur
- FROM android_oom_adj_intervals
+ FROM android_oom_adj_intervals_with_detailed_bucket_name
WHERE process_name IS NOT NULL
GROUP BY process_name, bucket
)
@@ -133,7 +178,7 @@
AVG(oom_adj_dur) as avg_oom_adj_dur,
COUNT(DISTINCT(oom_adj_id)) oom_adj_event_count,
oom_adj_reason
- FROM android_oom_adj_intervals GROUP BY oom_adj_reason
+ FROM android_oom_adj_intervals_with_detailed_bucket_name GROUP BY oom_adj_reason
)
)
);
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/oom_adjuster.sql b/src/trace_processor/perfetto_sql/stdlib/android/oom_adjuster.sql
index 3ce017e..10c39d1 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/oom_adjuster.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/oom_adjuster.sql
@@ -17,8 +17,30 @@
INCLUDE PERFETTO MODULE slices.with_context;
INCLUDE PERFETTO MODULE counters.intervals;
--- Converts an oom_adj score Integer to String bucket name.
+-- Converts an oom_adj score Integer to String sample name.
+-- One of: cached, background, job, foreground_service, bfgs, foreground and
+-- system.
CREATE PERFETTO FUNCTION android_oom_adj_score_to_bucket_name(
+ -- `oom_score` value
+ oom_score INT
+)
+-- Returns the sample bucket based on the oom score.
+RETURNS STRING
+AS
+SELECT
+ CASE
+ WHEN $oom_score >= 900 THEN 'cached'
+ WHEN $oom_score BETWEEN 250 AND 900 THEN 'background'
+ WHEN $oom_score BETWEEN 201 AND 250 THEN 'job'
+ WHEN $oom_score = 200 THEN 'foreground_service'
+ WHEN $oom_score BETWEEN 100 AND 200 THEN 'bfgs'
+ WHEN $oom_score BETWEEN 0 AND 100 THEN 'foreground'
+ WHEN $oom_score < 0 THEN 'system'
+END;
+
+-- Converts an oom_adj score Integer to String bucket name.
+-- Deprecated: use `android_oom_adj_score_to_bucket_name` instead.
+CREATE PERFETTO FUNCTION android_oom_adj_score_to_detailed_bucket_name(
-- oom_adj score.
value INT,
-- android_app id of the process.
@@ -52,8 +74,58 @@
ELSE 'unknown_app'
END;
+CREATE PERFETTO TABLE _oom_adjuster_intervals AS
+WITH reason AS (
+ SELECT
+ thread_slice.id AS oom_adj_id,
+ thread_slice.ts AS oom_adj_ts,
+ thread_slice.dur AS oom_adj_dur,
+ thread_slice.track_id AS oom_adj_track_id,
+ utid AS oom_adj_utid,
+ thread_name AS oom_adj_thread_name,
+ str_split(thread_slice.name, '_', 1) AS oom_adj_reason,
+ slice.name AS oom_adj_trigger,
+ LEAD(thread_slice.ts) OVER (ORDER BY thread_slice.ts) AS oom_adj_next_ts
+ FROM thread_slice
+ LEFT JOIN slice ON slice.id = thread_slice.parent_id AND slice.dur != -1
+ WHERE thread_slice.name GLOB 'updateOomAdj_*' AND process_name = 'system_server'
+)
+SELECT
+ ts,
+ dur,
+ value AS score,
+ process.upid,
+ process.name AS process_name,
+ reason.oom_adj_id,
+ reason.oom_adj_ts,
+ reason.oom_adj_dur,
+ reason.oom_adj_track_id,
+ reason.oom_adj_thread_name,
+ reason.oom_adj_utid,
+ reason.oom_adj_reason,
+ reason.oom_adj_trigger,
+ android_appid
+FROM
+ counter_leading_intervals
+ !(
+ (
+ SELECT counter.*
+ FROM counter
+ JOIN counter_track track
+ ON track.id = counter.track_id AND track.name = 'oom_score_adj'
+ ))
+ counter
+JOIN process_counter_track track
+ ON counter.track_id = track.id
+JOIN process
+ USING (upid)
+LEFT JOIN reason
+ ON counter.ts BETWEEN oom_adj_ts AND COALESCE(oom_adj_next_ts, trace_end())
+WHERE track.name = 'oom_score_adj';
+
+
-- All oom adj state intervals across all processes along with the reason for the state update.
-CREATE PERFETTO TABLE android_oom_adj_intervals (
+CREATE PERFETTO VIEW android_oom_adj_intervals (
-- Timestamp the oom_adj score of the process changed
ts INT,
-- Duration until the next oom_adj score change of the process.
@@ -81,49 +153,18 @@
-- Trigger for the latest oom_adj update in the system_server.
oom_adj_trigger STRING
) AS
-WITH
- reason AS (
- SELECT
- thread_slice.id AS oom_adj_id,
- thread_slice.ts AS oom_adj_ts,
- thread_slice.dur AS oom_adj_dur,
- thread_slice.track_id AS oom_adj_track_id,
- thread_name AS oom_adj_thread_name,
- str_split(thread_slice.name, '_', 1) AS oom_adj_reason,
- slice.name AS oom_adj_trigger,
- LEAD(thread_slice.ts) OVER (ORDER BY thread_slice.ts) AS oom_adj_next_ts
- FROM thread_slice
- LEFT JOIN slice ON slice.id = thread_slice.parent_id AND slice.dur != -1
- WHERE thread_slice.name GLOB 'updateOomAdj_*' AND process_name = 'system_server'
- )
SELECT
ts,
dur,
- value AS score,
- android_oom_adj_score_to_bucket_name(value, android_appid) AS bucket,
- process.upid,
- process.name AS process_name,
- reason.oom_adj_id,
- reason.oom_adj_ts,
- reason.oom_adj_dur,
- reason.oom_adj_track_id,
- reason.oom_adj_thread_name,
- reason.oom_adj_reason,
- reason.oom_adj_trigger
-FROM
- counter_leading_intervals
- !(
- (
- SELECT counter.*
- FROM counter
- JOIN counter_track track
- ON track.id = counter.track_id AND track.name = 'oom_score_adj'
- ))
- counter
-JOIN process_counter_track track
- ON counter.track_id = track.id
-JOIN process
- USING (upid)
-LEFT JOIN reason
- ON counter.ts BETWEEN oom_adj_ts AND COALESCE(oom_adj_next_ts, trace_end())
-WHERE track.name = 'oom_score_adj';
+ score,
+ android_oom_adj_score_to_bucket_name(score) AS bucket,
+ upid,
+ process_name,
+ oom_adj_id,
+ oom_adj_ts,
+ oom_adj_dur,
+ oom_adj_track_id,
+ oom_adj_thread_name,
+ oom_adj_reason,
+ oom_adj_trigger
+FROM _oom_adjuster_intervals;
diff --git a/src/trace_processor/perfetto_sql/stdlib/memory/BUILD.gn b/src/trace_processor/perfetto_sql/stdlib/memory/BUILD.gn
index da9685e..fd8c940 100644
--- a/src/trace_processor/perfetto_sql/stdlib/memory/BUILD.gn
+++ b/src/trace_processor/perfetto_sql/stdlib/memory/BUILD.gn
@@ -15,6 +15,6 @@
import("../../../../../gn/perfetto_sql.gni")
perfetto_sql_source_set("memory") {
- deps = ["linux"]
+ deps = [ "linux" ]
sources = [ "heap_graph_dominator_tree.sql" ]
}
diff --git a/src/trace_processor/perfetto_sql/stdlib/memory/linux/process.sql b/src/trace_processor/perfetto_sql/stdlib/memory/linux/process.sql
index 8a81f43..42a52c6 100644
--- a/src/trace_processor/perfetto_sql/stdlib/memory/linux/process.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/memory/linux/process.sql
@@ -13,6 +13,8 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
+INCLUDE PERFETTO MODULE android.oom_adjuster;
+
CREATE PERFETTO VIEW _all_counters_for_with_upid AS
SELECT
ts,
@@ -145,3 +147,85 @@
anon_rss + file_rss + COALESCE(shmem_rss, 0) + COALESCE(swap, 0) AS rss_and_swap
FROM _memory_rss_and_swap_per_process_table
JOIN process USING (upid);
+
+-- OOM score tables
+
+CREATE VIRTUAL TABLE _mem_ooms_sj
+USING SPAN_OUTER_JOIN(
+ android_oom_adj_intervals PARTITIONED upid,
+ _memory_rss_and_swap_per_process_table PARTITIONED upid);
+
+-- Process memory and it's OOM adjuster scores. Detects transitions, each new
+-- interval means that either the memory or OOM adjuster score of the process changed.
+CREATE PERFETTO TABLE memory_oom_score_with_rss_and_swap_per_process(
+ -- Timestamp the oom_adj score or memory of the process changed
+ ts INT,
+ -- Duration until the next oom_adj score or memory change of the process.
+ dur INT,
+ -- oom adjuster score of the process.
+ score INT,
+ -- oom adjuster bucket of the process.
+ bucket STRING,
+ -- Upid of the process having an oom_adj update.
+ upid INT,
+ -- Name of the process having an oom_adj update.
+ process_name STRING,
+ -- Pid of the process having an oom_adj update.
+ pid INT,
+ -- Slice of the latest oom_adj update in the system_server. Alias of
+ -- `slice.id`.
+ oom_adj_id INT,
+ -- Timestamp of the latest oom_adj update in the system_server.
+ oom_adj_ts INT,
+ -- Duration of the latest oom_adj update in the system_server.
+ oom_adj_dur INT,
+ -- Track of the latest oom_adj update in the system_server. Alias of
+ -- `track.id`.
+ oom_adj_track_id INT,
+ -- Thread name of the latest oom_adj update in the system_server.
+ oom_adj_thread_name STRING,
+ -- Reason for the latest oom_adj update in the system_server.
+ oom_adj_reason STRING,
+ -- Trigger for the latest oom_adj update in the system_server.
+ oom_adj_trigger STRING,
+ -- Anon RSS counter value
+ anon_rss INT,
+ -- File RSS counter value
+ file_rss INT,
+ -- Shared memory RSS counter value
+ shmem_rss INT,
+ -- Total RSS value. Sum of `anon_rss`, `file_rss` and `shmem_rss`. Returns
+ -- value even if one of the values is NULL.
+ rss INT,
+ -- Swap counter value
+ swap INT,
+ -- Sum or `anon_rss` and `swap`. Returns value even if one of the values is
+ -- NULL.
+ anon_rss_and_swap INT,
+ -- Sum or `rss` and `swap`. Returns value even if one of the values is NULL.
+ rss_and_swap INT
+) AS
+SELECT
+ ts,
+ dur,
+ score,
+ bucket,
+ upid,
+ process_name,
+ pid,
+ oom_adj_id,
+ oom_adj_ts,
+ oom_adj_dur,
+ oom_adj_track_id,
+ oom_adj_thread_name,
+ oom_adj_reason,
+ oom_adj_trigger,
+ anon_rss,
+ file_rss,
+ shmem_rss,
+ file_rss + anon_rss + COALESCE(shmem_rss, 0) AS rss,
+ swap,
+ anon_rss + COALESCE(swap, 0) AS anon_rss_and_swap,
+ anon_rss + file_rss + COALESCE(shmem_rss, 0) + COALESCE(swap, 0) AS rss_and_swap
+FROM _mem_ooms_sj
+JOIN process USING (upid);
diff --git a/test/trace_processor/diff_tests/stdlib/android/tests.py b/test/trace_processor/diff_tests/stdlib/android/tests.py
index 59a8877..6781e3e 100644
--- a/test/trace_processor/diff_tests/stdlib/android/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/tests.py
@@ -1244,16 +1244,16 @@
""",
out=Csv("""
"ts","dur","score","bucket","process_name","oom_adj_ts","oom_adj_dur","oom_adj_thread_name","oom_adj_reason","oom_adj_trigger"
- 1737065264829,701108081,925,"cached_app","com.android.providers.calendar",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737066678827,3470211742,935,"cached_app","com.android.imsserviceentitlement",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737066873002,3470017567,945,"cached_app","com.android.carrierconfig",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737067058812,3469831757,955,"cached_app_lmk_first","com.android.messaging",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737067246975,699224817,955,"cached_app_lmk_first","android.process.acore",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068421919,3468468650,965,"cached_app_lmk_first","com.android.shell",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068599673,697908135,965,"cached_app_lmk_first","android.process.media",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068933602,3467956967,975,"cached_app_lmk_first","com.android.gallery3d",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737069091010,3467799559,975,"cached_app_lmk_first","com.android.packageinstaller",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737069240534,3467650035,985,"cached_app_lmk_first","com.android.managedprovisioning",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737065264829,701108081,925,"cached","com.android.providers.calendar",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737066678827,3470211742,935,"cached","com.android.imsserviceentitlement",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737066873002,3470017567,945,"cached","com.android.carrierconfig",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737067058812,3469831757,955,"cached","com.android.messaging",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737067246975,699224817,955,"cached","android.process.acore",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068421919,3468468650,965,"cached","com.android.shell",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068599673,697908135,965,"cached","android.process.media",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068933602,3467956967,975,"cached","com.android.gallery3d",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737069091010,3467799559,975,"cached","com.android.packageinstaller",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737069240534,3467650035,985,"cached","com.android.managedprovisioning",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
"""))
def test_broadcast_minsdk_u(self):
diff --git a/test/trace_processor/diff_tests/stdlib/memory/tests.py b/test/trace_processor/diff_tests/stdlib/memory/tests.py
index bc8f16d..02da212 100644
--- a/test/trace_processor/diff_tests/stdlib/memory/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/memory/tests.py
@@ -67,3 +67,27 @@
38090817604,11930827,1,1982,"com.android.systemui",373714944
"""))
+ def test_memory_oom_score_with_rss_and_swap_per_process(self):
+ return DiffTestBlueprint(
+ trace=DataPath('sched_wakeup_trace.atr'),
+ query="""
+ INCLUDE PERFETTO MODULE memory.linux.process;
+ SELECT *
+ FROM memory_oom_score_with_rss_and_swap_per_process
+ WHERE oom_adj_reason IS NOT NULL
+ ORDER BY ts
+ LIMIT 10;
+ """,
+ out=Csv("""
+ "ts","dur","score","bucket","upid","process_name","pid","oom_adj_id","oom_adj_ts","oom_adj_dur","oom_adj_track_id","oom_adj_thread_name","oom_adj_reason","oom_adj_trigger","anon_rss","file_rss","shmem_rss","rss","swap","anon_rss_and_swap","rss_and_swap"
+ 1737065264829,701108081,925,"cached",269,"com.android.providers.calendar",1937,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49229824,57495552,835584,107560960,0,49229824,107560960
+ 1737066678827,2934486383,935,"cached",287,"com.android.imsserviceentitlement",2397,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48881664,57081856,831488,106795008,0,48881664,106795008
+ 1737066873002,2934292208,945,"cached",292,"com.android.carrierconfig",2593,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48586752,49872896,823296,99282944,0,48586752,99282944
+ 1737067058812,2934106398,955,"cached",288,"com.android.messaging",2416,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",54956032,71417856,843776,127217664,0,54956032,127217664
+ 1737067246975,699224817,955,"cached",267,"android.process.acore",1866,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",52498432,72048640,856064,125403136,0,52498432,125403136
+ 1737068421919,2932743291,965,"cached",273,"com.android.shell",2079,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48738304,52056064,823296,101617664,0,48738304,101617664
+ 1737068599673,970398,965,"cached",271,"android.process.media",2003,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49917952,60444672,839680,111202304,0,49917952,111202304
+ 1737068933602,2932231608,975,"cached",286,"com.android.gallery3d",2371,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49561600,54521856,831488,104914944,0,49561600,104914944
+ 1737069091010,682459310,975,"cached",289,"com.android.packageinstaller",2480,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49364992,52539392,827392,102731776,0,49364992,102731776
+ 1737069240534,489635,985,"cached",268,"com.android.managedprovisioning",1868,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",50683904,53985280,815104,105484288,0,50683904,105484288
+ """))