1#!/usr/bin/env python3 2# Copyright (C) 2023 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License a 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16from python.generators.diff_tests.testing import Path, DataPath, Metric, Systrace 17from python.generators.diff_tests.testing import Csv, Json, TextProto, BinaryProto 18from python.generators.diff_tests.testing import DiffTestBlueprint 19from python.generators.diff_tests.testing import TestSuite 20from python.generators.diff_tests.testing import PrintProfileProto 21 22 23class AndroidStdlib(TestSuite): 24 25 def test_android_battery_stats_event_slices(self): 26 # The following has three events 27 # * top (123, mail) from 1000 to 9000 explicit 28 # * job (456, mail_job) starting at 3000 (end is inferred as trace end) 29 # * job (789, video_job) ending at 4000 (start is inferred as trace start) 30 return DiffTestBlueprint( 31 trace=TextProto(r""" 32 packet { 33 ftrace_events { 34 cpu: 1 35 event { 36 timestamp: 1000 37 pid: 1 38 print { 39 buf: "N|1000|battery_stats.top|+top=123:\"mail\"\n" 40 } 41 } 42 event { 43 timestamp: 3000 44 pid: 1 45 print { 46 buf: "N|1000|battery_stats.job|+job=456:\"mail_job\"\n" 47 } 48 } 49 event { 50 timestamp: 4000 51 pid: 1 52 print { 53 buf: "N|1000|battery_stats.job|-job=789:\"video_job\"\n" 54 } 55 } 56 event { 57 timestamp: 9000 58 pid: 1 59 print { 60 buf: "N|1000|battery_stats.top|-top=123:\"mail\"\n" 61 } 62 } 63 } 64 } 65 """), 66 query=""" 67 INCLUDE PERFETTO MODULE android.battery_stats; 68 SELECT * FROM android_battery_stats_event_slices 69 ORDER BY str_value; 70 """, 71 out=Path('android_battery_stats_event_slices.out')) 72 73 def test_android_battery_stats_counters(self): 74 return DiffTestBlueprint( 75 trace=TextProto(r""" 76 packet { 77 ftrace_events { 78 cpu: 1 79 event { 80 timestamp: 1000 81 pid: 1 82 print { 83 buf: "C|1000|battery_stats.data_conn|13\n" 84 } 85 } 86 event { 87 timestamp: 4000 88 pid: 1 89 print { 90 buf: "C|1000|battery_stats.data_conn|20\n" 91 } 92 } 93 event { 94 timestamp: 1000 95 pid: 1 96 print { 97 buf: "C|1000|battery_stats.audio|1\n" 98 } 99 } 100 } 101 } 102 """), 103 query=""" 104 INCLUDE PERFETTO MODULE android.battery_stats; 105 SELECT * FROM android_battery_stats_state 106 ORDER BY ts, track_name; 107 """, 108 out=Csv(""" 109 "ts","dur","safe_dur","track_name","value","value_name" 110 1000,-1,3000,"battery_stats.audio",1,"active" 111 1000,3000,3000,"battery_stats.data_conn",13,"4G (LTE)" 112 4000,-1,0,"battery_stats.data_conn",20,"5G (NR)" 113 """)) 114 115 def test_anrs(self): 116 return DiffTestBlueprint( 117 trace=Path('../../metrics/android/android_anr_metric.py'), 118 query=""" 119 INCLUDE PERFETTO MODULE android.anrs; 120 SELECT * 121 FROM android_anrs; 122 """, 123 out=Csv(""" 124 "process_name","pid","upid","error_id","ts","subject" 125 "com.google.android.app1",11167,"[NULL]","da24554c-452a-4ae1-b74a-fb898f6e0982",1000,"Test ANR subject 1" 126 "com.google.android.app2","[NULL]","[NULL]","8612fece-c2f1-4aeb-9d45-8e6d9d0201cf",2000,"Test ANR subject 2" 127 "com.google.android.app3","[NULL]","[NULL]","c25916a0-a8f0-41f3-87df-319e06471a0f",3000,"[NULL]" 128 """)) 129 130 def test_binder_sync_binder_metrics(self): 131 return DiffTestBlueprint( 132 trace=DataPath('android_binder_metric_trace.atr'), 133 query=""" 134 INCLUDE PERFETTO MODULE android.binder; 135 SELECT 136 aidl_name, 137 binder_txn_id, 138 client_process, 139 client_thread, 140 client_upid, 141 client_utid, 142 client_tid, 143 is_main_thread, 144 client_ts, 145 client_dur, 146 client_oom_score, 147 binder_reply_id, 148 server_process, 149 server_thread, 150 server_upid, 151 server_utid, 152 server_tid, 153 server_ts, 154 server_dur, 155 server_oom_score 156 FROM android_binder_txns 157 WHERE binder_txn_id = 34382 158 ORDER BY client_ts 159 LIMIT 1; 160 """, 161 out=Csv(""" 162 "aidl_name","binder_txn_id","client_process","client_thread","client_upid","client_utid","client_tid","is_main_thread","client_ts","client_dur","client_oom_score","binder_reply_id","server_process","server_thread","server_upid","server_utid","server_tid","server_ts","server_dur","server_oom_score" 163 "AIDL::java::ISensorPrivacyManager::isSensorPrivacyEnabled::server",34382,"/system/bin/audioserver","audioserver",281,281,492,1,25505818197,3125407,-1000,34383,"system_server","binder:641_4",311,539,1596,25505891588,3000749,-900 164 """)) 165 166 def test_binder_sync_binder_thread_state(self): 167 return DiffTestBlueprint( 168 trace=DataPath('android_binder_metric_trace.atr'), 169 query=""" 170 INCLUDE PERFETTO MODULE android.binder; 171 SELECT 172 binder_txn_id, 173 client_ts, 174 client_tid, 175 binder_reply_id, 176 server_ts, 177 server_tid, 178 thread_state_type, 179 thread_state, 180 thread_state_dur, 181 thread_state_count 182 FROM android_sync_binder_thread_state_by_txn 183 WHERE binder_txn_id = 34382 184 ORDER BY thread_state_dur; 185 """, 186 out=Csv(""" 187 "binder_txn_id","client_ts","client_tid","binder_reply_id","server_ts","server_tid","thread_state_type","thread_state","thread_state_dur","thread_state_count" 188 34382,25505818197,492,34383,25505891588,1596,"binder_reply","R+",10030,1 189 34382,25505818197,492,34383,25505891588,1596,"binder_txn","Running",26597,2 190 34382,25505818197,492,34383,25505891588,1596,"binder_txn","R",38947,1 191 34382,25505818197,492,34383,25505891588,1596,"binder_reply","Running",533663,3 192 34382,25505818197,492,34383,25505891588,1596,"binder_reply","D",864664,1 193 34382,25505818197,492,34383,25505891588,1596,"binder_reply","R",1592392,1 194 34382,25505818197,492,34383,25505891588,1596,"binder_txn","S",3059863,1 195 """)) 196 197 def test_binder_sync_binder_blocked_function(self): 198 return DiffTestBlueprint( 199 trace=DataPath('android_binder_metric_trace.atr'), 200 query=""" 201 INCLUDE PERFETTO MODULE android.binder; 202 SELECT 203 binder_txn_id, 204 client_ts, 205 client_tid, 206 binder_reply_id, 207 server_ts, 208 server_tid, 209 thread_state_type, 210 blocked_function, 211 blocked_function_dur, 212 blocked_function_count 213 FROM android_sync_binder_blocked_functions_by_txn 214 WHERE binder_txn_id = 34382 215 ORDER BY blocked_function_dur; 216 """, 217 out=Csv(""" 218 "binder_txn_id","client_ts","client_tid","binder_reply_id","server_ts","server_tid","thread_state_type","blocked_function","blocked_function_dur","blocked_function_count" 219 34382,25505818197,492,34383,25505891588,1596,"binder_reply","filemap_fault",864664,1 220 """)) 221 222 def test_android_slices_standardization_for_aggregation(self): 223 return DiffTestBlueprint( 224 trace=Path('android_slice_standardization.py'), 225 query=""" 226 INCLUDE PERFETTO MODULE android.slices; 227 SELECT ANDROID_STANDARDIZE_SLICE_NAME(slice.name) name 228 FROM slice 229 """, 230 out=Csv(""" 231 "name" 232 "Lock contention on thread list lock <...>" 233 "Lock contention on thread suspend count lock <...>" 234 "Lock contention on a monitor lock <...>" 235 "monitor contention with <...>" 236 "SuspendThreadByThreadId <...>" 237 "LoadApkAssetsFd <...>" 238 "relayoutWindow <...>" 239 "CoroutineContinuation" 240 "Choreographer#doFrame" 241 "DrawFrames" 242 "APK load" 243 "OpenDexFilesFromOat" 244 "Open oat file" 245 "CoroutineContinuation" 246 "Garbage Collector" 247 "Handler: android.view.View" 248 "Handler: android.os.AsyncTask" 249 "Handler: com.android.systemui.broadcast.ActionReceiver" 250 "Handler: com.android.keyguard.KeyguardUpdateMonitor" 251 "Handler: com.android.systemui.qs.TileServiceManager" 252 "FrameBuffer-<num>#invokeListeners-non-direct" 253 "Transaction (ptz-fgd-1-LOCAL_MEDIA_REMOVE_DELETED_ITEMS_SYNC, <...>)" 254 "InputConsumer processing on ClientState<...>" 255 "InputConsumer processing on [Gesture Monitor] swipe-up (0x<num>)" 256 "+job=<num>:"com.google.android.apps.internal.betterbug"" 257 "Looper.dispatch: android.app.ActivityThread$H(runnable@<num>(android.app.ActivityThread@<num>,<num>))" 258 "Not changed at ALL 0" 259 "Three digits to replace <num> <num>" 260 "kworker/<num>" 261 "<num>" 262 "<num> SurfaceView[com.google.android.apps.maps/com.google.android.maps.MapsActivity]#1(BLAST Consumer)1" 263 "1 2 3 4" 264 "0x<num>" 265 "ImageDecoder#decodeDrawable" 266 "+state=<num>:"sensor:0x<num>"" 267 "[<num>]< SET_SIGNAL_STRENGTH_REPORTING_CRITERIA" 268 "sendMessage(inputChannel=<num> PopupWindow:<num>, seq=0x<num>, type=FOCUS)" 269 "Over the RR duration: timestamp:<num>,signalTime:<num>,VSyncPeriod:<num>,desiredVsyncPeriod:<num>,transientDuration:1" 270 """)) 271 272 def test_monitor_contention_extraction(self): 273 return DiffTestBlueprint( 274 trace=DataPath('android_monitor_contention_trace.atr'), 275 query=""" 276 INCLUDE PERFETTO MODULE android.monitor_contention; 277 SELECT 278 blocking_method, 279 blocked_method, 280 short_blocking_method, 281 short_blocked_method 282 FROM android_monitor_contention 283 WHERE binder_reply_id IS NOT NULL 284 ORDER BY dur DESC 285 LIMIT 1; 286 """, 287 out=Csv(""" 288 "blocking_method","blocked_method","short_blocking_method","short_blocked_method" 289 "boolean com.android.server.am.ActivityManagerService.forceStopPackageLocked(java.lang.String, int, boolean, boolean, boolean, boolean, boolean, int, java.lang.String)","boolean com.android.server.am.ActivityManagerService.isUidActive(int, java.lang.String)","com.android.server.am.ActivityManagerService.forceStopPackageLocked","com.android.server.am.ActivityManagerService.isUidActive" 290 """)) 291 292 def test_monitor_contention_chain_blocked_functions(self): 293 return DiffTestBlueprint( 294 trace=DataPath('android_monitor_contention_trace.atr'), 295 query=""" 296 INCLUDE PERFETTO MODULE android.monitor_contention; 297 SELECT 298 * 299 FROM android_monitor_contention_chain_blocked_functions_by_txn 300 WHERE id = 13934 301 ORDER BY blocked_function_dur; 302 """, 303 out=Csv(""" 304 "id","blocked_function","blocked_function_dur","blocked_function_count" 305 13934,"blkdev_issue_flush",11950576,1 306 """)) 307 308 def test_monitor_contention_chain_thread_states(self): 309 return DiffTestBlueprint( 310 trace=DataPath('android_monitor_contention_trace.atr'), 311 query=""" 312 INCLUDE PERFETTO MODULE android.monitor_contention; 313 SELECT 314 * 315 FROM android_monitor_contention_chain_thread_state_by_txn 316 WHERE id = 13934 317 ORDER BY thread_state_dur; 318 """, 319 out=Csv(""" 320 "id","thread_state","thread_state_dur","thread_state_count" 321 13934,"R+",7649,1 322 13934,"R",300606,3 323 13934,"Running",649961,3 324 13934,"D",11950576,1 325 """)) 326 327 def test_android_monitor_contention_chain_thread_state(self): 328 return DiffTestBlueprint( 329 trace=DataPath('android_monitor_contention_trace.atr'), 330 query=""" 331 INCLUDE PERFETTO MODULE android.monitor_contention; 332 SELECT 333 * 334 FROM android_monitor_contention_chain_thread_state 335 WHERE id = 13934; 336 """, 337 out=Csv(""" 338 "id","ts","dur","blocking_utid","blocked_function","state" 339 13934,1739927671503,141874,557,"[NULL]","R" 340 13934,1739927813377,69101,557,"[NULL]","Running" 341 13934,1739927882478,7649,557,"[NULL]","R+" 342 13934,1739927890127,3306,557,"[NULL]","Running" 343 13934,1739927893433,11950576,557,"blkdev_issue_flush","D" 344 13934,1739939844009,76306,557,"[NULL]","R" 345 13934,1739939920315,577554,557,"[NULL]","Running" 346 13934,1739940497869,82426,557,"[NULL]","R" 347 """)) 348 349 def test_monitor_contention_chain_extraction(self): 350 return DiffTestBlueprint( 351 trace=DataPath('android_monitor_contention_trace.atr'), 352 query=""" 353 INCLUDE PERFETTO MODULE android.monitor_contention; 354 SELECT 355 parent_id, 356 blocking_method, 357 blocked_method, 358 short_blocking_method, 359 short_blocked_method, 360 blocking_src, 361 blocked_src, 362 waiter_count, 363 blocked_thread_name, 364 blocking_thread_name, 365 blocking_tid, 366 process_name, 367 id, 368 ts, 369 dur, 370 monotonic_dur, 371 is_blocked_thread_main, 372 blocked_thread_tid, 373 is_blocking_thread_main, 374 blocking_thread_tid, 375 binder_reply_ts, 376 binder_reply_tid, 377 pid, 378 child_id 379 FROM android_monitor_contention_chain 380 WHERE parent_id IS NOT NULL 381 ORDER BY dur DESC 382 LIMIT 1; 383 """, 384 out=Csv(""" 385 "parent_id","blocking_method","blocked_method","short_blocking_method","short_blocked_method","blocking_src","blocked_src","waiter_count","blocked_thread_name","blocking_thread_name","blocking_tid","process_name","id","ts","dur","monotonic_dur","is_blocked_thread_main","blocked_thread_tid","is_blocking_thread_main","blocking_thread_tid","binder_reply_ts","binder_reply_tid","pid","child_id" 386 949,"void com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied()","int com.android.server.am.ActivityManagerService.getMemoryTrimLevel()","com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied","com.android.server.am.ActivityManagerService.getMemoryTrimLevel","ActivityManagerService.java:1478","ActivityManagerService.java:9183",1,"system_server","binder:642_12",2720,"system_server",956,1737123891932,17577143,17577143,1,642,0,2720,"[NULL]","[NULL]",642,"[NULL]" 387 """)) 388 389 def test_monitor_contention_graph(self): 390 return DiffTestBlueprint( 391 trace=DataPath('android_monitor_contention_trace.atr'), 392 query=""" 393 INCLUDE PERFETTO MODULE android.monitor_contention; 394 395 SELECT HEX(pprof) FROM android_monitor_contention_graph(303) 396 """, 397 out=BinaryProto( 398 message_type="perfetto.third_party.perftools.profiles.Profile", 399 post_processing=PrintProfileProto, 400 contents=""" 401 Sample: 402 Values: 29604 403 Stack: 404 android.bg:android.os.MessageQueue.nativeWake (0x0) 405 fg:android.os.MessageQueue.next (0x0) 406 407 Sample: 408 Values: 66924 409 Stack: 410 android.bg:android.os.MessageQueue.enqueueMessage (0x0) 411 fg:android.os.MessageQueue.next (0x0) 412 413 Sample: 414 Values: 73265 415 Stack: 416 main:android.os.MessageQueue.enqueueMessage (0x0) 417 fg:android.os.MessageQueue.next (0x0) 418 """)) 419 420 def test_thread_creation_spam(self): 421 return DiffTestBlueprint( 422 trace=DataPath('android_monitor_contention_trace.atr'), 423 query=""" 424 INCLUDE PERFETTO MODULE android.thread; 425 SELECT * FROM _android_thread_creation_spam(1e9, 1e9); 426 """, 427 out=Csv(""" 428 "process_name","pid","thread_name_prefix","max_count_per_sec" 429 "com.android.providers.media.module",3487,"SharedPreferenc",3 430 "com.android.providers.media.module",3487,"MediaCodec_loop",2 431 "/apex/com.android.adbd/bin/adbd",527,"shell",1 432 "media.swcodec",563,"id.hevc.decoder",1 433 "system_server",642,"Thread",1 434 "sh",3474,"sh",1 435 "sh",3476,"sh",1 436 "sh",3478,"sh",1 437 "am",3480,"am",1 438 "cmd",3482,"binder",1 439 "cmd",3482,"cmd",1 440 "com.android.providers.media.module",3487,"CodecLooper",1 441 "sh",3517,"sh",1 442 "sgdisk",3521,"sgdisk",1 443 "blkid",3523,"blkid",1 444 "binder:243_4",3524,"binder",1 445 "fsck_msdos",3525,"fsck_msdos",1 446 "binder:243_4",3526,"binder",1 447 "sh",3532,"sh",1 448 "cut",3534,"cut",1 449 "sh",3536,"sh",1 450 "sh",3544,"sh",1 451 "sh",3546,"sh",1 452 "sh",3564,"sh",1 453 """)) 454 455 def test_f2fs_counter_stats(self): 456 return DiffTestBlueprint( 457 trace=DataPath('android_monitor_contention_trace.atr'), 458 query=""" 459 INCLUDE PERFETTO MODULE android.io; 460 SELECT * FROM _android_io_f2fs_counter_stats; 461 """, 462 out=Csv(""" 463 "name","sum","max","min","dur","count","avg" 464 "read_app_total",580966.000000,567184.000000,13782.000000,2515275969,2,290483.000000 465 "read_app_buffered",580966.000000,567184.000000,13782.000000,2515275969,2,290483.000000 466 "write_cp_node",94208.000000,94208.000000,0.000000,2515275969,2,47104.000000 467 "write_app_mapped",65536.000000,65536.000000,0.000000,2515275969,2,32768.000000 468 "write_fs_data",28672.000000,28672.000000,0.000000,2515275969,2,14336.000000 469 "write_cp_meta",28672.000000,28672.000000,0.000000,2515275969,2,14336.000000 470 "write_app_total",20616.000000,20616.000000,0.000000,2515275969,2,10308.000000 471 "write_app_buffered",20616.000000,20616.000000,0.000000,2515275969,2,10308.000000 472 "write_fs_node",8192.000000,8192.000000,0.000000,2515275969,2,4096.000000 473 "write_sync_meta_peak",8.000000,8.000000,0.000000,2515276848,2,4.000000 474 "write_sync_meta_cnt",5.000000,5.000000,0.000000,2515276848,2,2.500000 475 "write_sync_node_peak",4.000000,4.000000,0.000000,2515276848,2,2.000000 476 "write_sync_node_cnt",3.000000,3.000000,0.000000,2515276848,2,1.500000 477 "write_sync_data_cnt",3.000000,3.000000,0.000000,2515276848,2,1.500000 478 "write_sync_node_avg",1.000000,1.000000,0.000000,2515276848,2,0.500000 479 "write_sync_meta_avg",1.000000,1.000000,0.000000,2515276848,2,0.500000 480 "write_sync_data_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 481 "write_sync_data_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 482 "write_async_node_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 483 "write_async_node_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 484 "write_async_node_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 485 "write_async_meta_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 486 "write_async_meta_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 487 "write_async_meta_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 488 "write_async_data_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 489 "write_async_data_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 490 "write_async_data_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 491 "read_node_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 492 "read_node_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 493 "read_node_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 494 "read_meta_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 495 "read_meta_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 496 "read_meta_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 497 "read_data_peak",0.000000,0.000000,0.000000,2515276848,2,0.000000 498 "read_data_cnt",0.000000,0.000000,0.000000,2515276848,2,0.000000 499 "read_data_avg",0.000000,0.000000,0.000000,2515276848,2,0.000000 500 "write_gc_node",0.000000,0.000000,0.000000,2515275969,2,0.000000 501 "write_gc_data",0.000000,0.000000,0.000000,2515275969,2,0.000000 502 "write_fs_meta",0.000000,0.000000,0.000000,2515275969,2,0.000000 503 "write_cp_data",0.000000,0.000000,0.000000,2515275969,2,0.000000 504 "write_app_direct",0.000000,0.000000,0.000000,2515275969,2,0.000000 505 "read_fs_node",0.000000,0.000000,0.000000,2515275969,2,0.000000 506 "read_fs_meta",0.000000,0.000000,0.000000,2515275969,2,0.000000 507 "read_fs_gdata",0.000000,0.000000,0.000000,2515275969,2,0.000000 508 "read_fs_data",0.000000,0.000000,0.000000,2515275969,2,0.000000 509 "read_fs_cdata",0.000000,0.000000,0.000000,2515275969,2,0.000000 510 "read_app_mapped",0.000000,0.000000,0.000000,2515275969,2,0.000000 511 "read_app_direct",0.000000,0.000000,0.000000,2515275969,2,0.000000 512 "other_fs_discard",0.000000,0.000000,0.000000,2515275969,2,0.000000 513 """)) 514 515 def test_f2fs_write_stats(self): 516 return DiffTestBlueprint( 517 trace=DataPath('android_monitor_contention_trace.atr'), 518 query=""" 519 INCLUDE PERFETTO MODULE android.io; 520 SELECT tid, thread_name, pid, process_name, ino, dev, bytes, write_count FROM _android_io_f2fs_write_stats; 521 """, 522 out=Csv(""" 523 "tid","thread_name","pid","process_name","ino","dev","bytes","write_count" 524 3548,"AsyncTask #1",3487,"com.android.providers.media.module",2636,65077,135168,33 525 3516,"fg",3487,"com.android.providers.media.module",2409,65077,98304,24 526 3548,"AsyncTask #1",3487,"com.android.providers.media.module",2642,65077,78280,57 527 3516,"fg",3487,"com.android.providers.media.module",2424,65077,37112,28 528 3487,"rs.media.module",3487,"com.android.providers.media.module",2366,65077,16480,12 529 3515,"ackgroundThread",3487,"com.android.providers.media.module",2642,65077,8272,7 530 282,"f2fs_ckpt-254:5",282,"f2fs_ckpt-254:5",4,65077,432,6 531 282,"f2fs_ckpt-254:5",282,"f2fs_ckpt-254:5",5,65077,432,6 532 3548,"AsyncTask #1",3487,"com.android.providers.media.module",3145,65077,233,2 533 743,"StorageManagerS",642,"system_server",3144,65077,227,1 534 282,"f2fs_ckpt-254:5",282,"f2fs_ckpt-254:5",6,65077,216,3 535 3487,"rs.media.module",3487,"com.android.providers.media.module",2367,65077,8,8 536 3516,"fg",3487,"com.android.providers.media.module",2425,65077,8,8 537 3548,"AsyncTask #1",3487,"com.android.providers.media.module",2643,65077,8,8 538 """)) 539 540 def test_f2fs_aggregate_write_stats(self): 541 return DiffTestBlueprint( 542 trace=DataPath('android_monitor_contention_trace.atr'), 543 query=""" 544 INCLUDE PERFETTO MODULE android.io; 545 SELECT total_write_count, distinct_processes, total_bytes_written, 546 distinct_device_count, distinct_inode_count, distinct_thread_count 547 FROM _android_io_f2fs_aggregate_write_stats 548 """, 549 out=Csv(""" 550 "total_write_count","distinct_processes","total_bytes_written","distinct_device_count","distinct_inode_count","distinct_thread_count" 551 203,3,375180,1,13,6 552 """)) 553 554 def test_binder_async_txns(self): 555 return DiffTestBlueprint( 556 trace=DataPath('android_binder_metric_trace.atr'), 557 query=""" 558 INCLUDE PERFETTO MODULE android.binder; 559 SELECT 560 aidl_name, 561 client_process, 562 server_process, 563 client_thread, 564 client_tid, 565 server_tid, 566 is_main_thread, 567 client_oom_score, 568 server_oom_score, 569 client_ts, 570 server_ts, 571 aidl_ts, 572 aidl_dur 573 FROM android_binder_txns 574 WHERE aidl_name IS NOT NULL AND is_sync = 0 575 ORDER BY client_ts 576 LIMIT 10; 577 """, 578 out=Csv(""" 579 "aidl_name","client_process","server_process","client_thread","client_tid","server_tid","is_main_thread","client_oom_score","server_oom_score","client_ts","server_ts","aidl_ts","aidl_dur" 580 "AIDL::cpp::IClientCallback::onClients::cppServer","/system/bin/servicemanager","/system/bin/apexd","servicemanager",243,386,1,-1000,-1000,22213481492,22213517474,22213598784,322601 581 "AIDL::cpp::IMediaMetricsService::submitBuffer::cppServer","/system/bin/audioserver","media.metrics","audioserver",492,1262,1,-1000,-1000,25512325446,25512488255,25512708792,9677878 582 "AIDL::cpp::IMediaMetricsService::submitBuffer::cppServer","/system/bin/audioserver","media.metrics","audioserver",492,1262,1,-1000,-1000,25512842465,25522410505,25522418582,58044 583 "AIDL::cpp::IDisplayEventConnection::stealReceiveChannel::cppServer","/vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu","/system/bin/surfaceflinger","binder:446_1",553,522,0,-1000,-1000,25847718645,25847734867,25849056936,10493 584 "AIDL::cpp::ITunnelModeEnabledListener::onTunnelModeEnabledChanged::cppServer","/system/bin/surfaceflinger","system_server","binder:496_2",522,1600,0,-1000,-900,25854181504,25854195485,25854205007,214767 585 "AIDL::cpp::IDisplayEventConnection::requestNextVsync::cppServer","system_server","/system/bin/surfaceflinger","android.anim",662,522,0,-900,-1000,25855697394,25855710732,25855721528,81461 586 "AIDL::cpp::IDisplayEventConnection::requestNextVsync::cppServer","system_server","/system/bin/surfaceflinger","android.anim",662,522,0,-900,-1000,25873210999,25873224961,25873232951,3493 587 "AIDL::cpp::IDisplayEventConnection::requestNextVsync::cppServer","system_server","/system/bin/surfaceflinger","android.anim",662,522,0,-900,-1000,25951278287,25952242397,25952255710,30672 588 "AIDL::cpp::IDisplayEventConnection::requestNextVsync::cppServer","system_server","/system/bin/surfaceflinger","android.anim",662,1575,0,-900,-1000,25965452828,25965590137,25965596757,2631 589 "AIDL::cpp::IDisplayEventConnection::requestNextVsync::cppServer","system_server","/system/bin/surfaceflinger","android.anim",662,1575,0,-900,-1000,26046376252,26046544680,26046553099,53452 590 """)) 591 592 def test_binder_txns(self): 593 return DiffTestBlueprint( 594 trace=DataPath('sched_wakeup_trace.atr'), 595 query=""" 596 INCLUDE PERFETTO MODULE android.binder; 597 SELECT 598 aidl_name, 599 interface, 600 method_name, 601 client_process, 602 server_process, 603 client_thread, 604 client_tid, 605 server_tid, 606 is_main_thread, 607 client_oom_score, 608 server_oom_score, 609 client_ts, 610 server_ts, 611 client_dur, 612 server_dur, 613 client_monotonic_dur, 614 server_monotonic_dur, 615 aidl_ts, 616 aidl_dur, 617 is_sync, 618 client_package_version_code, 619 server_package_version_code, 620 is_client_package_debuggable, 621 is_server_package_debuggable 622 FROM android_binder_txns 623 WHERE aidl_name IS NOT NULL AND client_package_version_code IS NOT NULL 624 ORDER BY client_ts 625 LIMIT 10; 626 """, 627 out=Csv(""" 628 "aidl_name","interface","method_name","client_process","server_process","client_thread","client_tid","server_tid","is_main_thread","client_oom_score","server_oom_score","client_ts","server_ts","client_dur","server_dur","client_monotonic_dur","server_monotonic_dur","aidl_ts","aidl_dur","is_sync","client_package_version_code","server_package_version_code","is_client_package_debuggable","is_server_package_debuggable" 629 "AIDL::java::INetworkStatsService::getMobileIfaces::server","INetworkStatsService","getMobileIfaces","com.android.phone","system_server","m.android.phone",1469,657,1,-800,-900,1736110278076,1736110435876,765487,462664,765487,462664,1736110692464,135281,1,33,"[NULL]",0,"[NULL]" 630 "AIDL::java::INetworkStatsService::getIfaceStats::server","INetworkStatsService","getIfaceStats","com.android.phone","system_server","m.android.phone",1469,657,1,-800,-900,1736111274404,1736111340019,481038,361607,481038,361607,1736111417370,249758,1,33,"[NULL]",0,"[NULL]" 631 "AIDL::java::INetworkStatsService::getMobileIfaces::server","INetworkStatsService","getMobileIfaces","com.android.phone","system_server","m.android.phone",1469,657,1,-800,-900,1736111874030,1736111923740,254494,159330,254494,159330,1736111994038,64535,1,33,"[NULL]",0,"[NULL]" 632 "AIDL::java::INetworkStatsService::getIfaceStats::server","INetworkStatsService","getIfaceStats","com.android.phone","system_server","m.android.phone",1469,657,1,-800,-900,1736112257185,1736112301639,309870,220751,309870,220751,1736112361927,133727,1,33,"[NULL]",0,"[NULL]" 633 "AIDL::java::IPackageManager::isProtectedBroadcast::server","IPackageManager","isProtectedBroadcast","com.android.systemui","system_server","ndroid.systemui",1253,657,1,-800,-900,1737108493015,1737125387579,17949987,163732,17949987,163732,1737125511194,24959,1,33,"[NULL]",0,"[NULL]" 634 "AIDL::java::IActivityManager::checkPermission::server","IActivityManager","checkPermission","com.android.phone","system_server","m.android.phone",1469,2721,1,-800,-900,1737110161286,1737110746980,12677155,147315,12677155,147315,1737110799860,75563,1,33,"[NULL]",0,"[NULL]" 635 "AIDL::java::INetworkStatsService::getMobileIfaces::server","INetworkStatsService","getMobileIfaces","com.android.phone","system_server","m.android.phone",1469,2721,1,-800,-900,1737123460104,1737123475761,447621,137704,447621,137704,1737123532124,48775,1,33,"[NULL]",0,"[NULL]" 636 "AIDL::java::INetworkStatsService::getIfaceStats::server","INetworkStatsService","getIfaceStats","com.android.phone","system_server","m.android.phone",1469,2721,1,-800,-900,1737123982140,1737123994640,191006,164185,191006,164185,1737124033555,109797,1,33,"[NULL]",0,"[NULL]" 637 "AIDL::java::INetworkStatsService::getMobileIfaces::server","INetworkStatsService","getMobileIfaces","com.android.phone","system_server","m.android.phone",1469,2721,1,-800,-900,1737124228451,1737124238356,88522,66721,88522,66721,1737124269922,24911,1,33,"[NULL]",0,"[NULL]" 638 "AIDL::java::INetworkStatsService::getIfaceStats::server","INetworkStatsService","getIfaceStats","com.android.phone","system_server","m.android.phone",1469,2721,1,-800,-900,1737124369273,1737124378273,957260,95254,957260,95254,1737124406331,54810,1,33,"[NULL]",0,"[NULL]" 639 """)) 640 641 def test_binder_outgoing_graph(self): 642 return DiffTestBlueprint( 643 trace=DataPath('android_binder_metric_trace.atr'), 644 query=""" 645 INCLUDE PERFETTO MODULE android.binder; 646 SELECT HEX(pprof) FROM ANDROID_BINDER_OUTGOING_GRAPH(259) 647 """, 648 out=BinaryProto( 649 message_type="perfetto.third_party.perftools.profiles.Profile", 650 post_processing=PrintProfileProto, 651 contents=""" 652 Sample: 653 Values: 0 654 Stack: 655 /system/bin/surfaceflinger (0x0) 656 binder:446_1 (0x0) 657 658 Sample: 659 Values: 0 660 Stack: 661 stealReceiveChannel (0x0) 662 IDisplayEventConnection (0x0) 663 /system/bin/surfaceflinger (0x0) 664 binder:446_1 (0x0) 665 """)) 666 667 def test_binder_incoming_graph(self): 668 return DiffTestBlueprint( 669 trace=DataPath('android_binder_metric_trace.atr'), 670 query=""" 671 INCLUDE PERFETTO MODULE android.binder; 672 SELECT HEX(pprof) FROM ANDROID_BINDER_INCOMING_GRAPH(296) 673 """, 674 out=BinaryProto( 675 message_type="perfetto.third_party.perftools.profiles.Profile", 676 post_processing=PrintProfileProto, 677 contents=""" 678 Sample: 679 Values: 1764197 680 Stack: 681 fixupAppData (0x0) 682 IInstalld (0x0) 683 system_server (0x0) 684 685 Sample: 686 Values: 202423 687 Stack: 688 rmdex (0x0) 689 IInstalld (0x0) 690 system_server (0x0) 691 692 Sample: 693 Values: 438512 694 Stack: 695 cleanupInvalidPackageDirs (0x0) 696 IInstalld (0x0) 697 system_server (0x0) 698 699 Sample: 700 Values: 4734897 701 Stack: 702 invalidateMounts (0x0) 703 IInstalld (0x0) 704 system_server (0x0) 705 706 Sample: 707 Values: 7448312 708 Stack: 709 prepareAppProfile (0x0) 710 IInstalld (0x0) 711 system_server (0x0) 712 713 Sample: 714 Values: 91238713 715 Stack: 716 createAppDataBatched (0x0) 717 IInstalld (0x0) 718 system_server (0x0) 719 """)) 720 721 def test_binder_graph_invalid_oom(self): 722 return DiffTestBlueprint( 723 trace=DataPath('android_binder_metric_trace.atr'), 724 query=""" 725 INCLUDE PERFETTO MODULE android.binder; 726 SELECT HEX(pprof) FROM ANDROID_BINDER_GRAPH(2000, 2000, 2000, 2000) 727 """, 728 out=BinaryProto( 729 message_type="perfetto.third_party.perftools.profiles.Profile", 730 post_processing=PrintProfileProto, 731 contents=""" 732 """)) 733 734 def test_binder_graph_valid_oom(self): 735 return DiffTestBlueprint( 736 trace=DataPath('android_binder_metric_trace.atr'), 737 query=""" 738 INCLUDE PERFETTO MODULE android.binder; 739 SELECT HEX(pprof) FROM ANDROID_BINDER_GRAPH(-1000, 1000, -1000, 1000) 740 """, 741 out=BinaryProto( 742 message_type="perfetto.third_party.perftools.profiles.Profile", 743 post_processing=PrintProfileProto, 744 contents=""" 745 Sample: 746 Values: 0 747 Stack: 748 /system/bin/apexd (0x0) 749 /system/bin/servicemanager (0x0) 750 751 Sample: 752 Values: 0 753 Stack: 754 /system/bin/bootanimation (0x0) 755 /system/bin/surfaceflinger (0x0) 756 757 Sample: 758 Values: 0 759 Stack: 760 /system/bin/cameraserver (0x0) 761 system_server (0x0) 762 763 Sample: 764 Values: 0 765 Stack: 766 /system/bin/storaged (0x0) 767 /vendor/bin/hw/android.hardware.health-service.cuttlefish (0x0) 768 769 Sample: 770 Values: 0 771 Stack: 772 /system/bin/surfaceflinger (0x0) 773 /system/bin/bootanimation (0x0) 774 775 Sample: 776 Values: 0 777 Stack: 778 /system/bin/surfaceflinger (0x0) 779 /vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu (0x0) 780 781 Sample: 782 Values: 0 783 Stack: 784 media.metrics (0x0) 785 /system/bin/audioserver (0x0) 786 787 Sample: 788 Values: 0 789 Stack: 790 system_server (0x0) 791 /system/bin/servicemanager (0x0) 792 793 Sample: 794 Values: 0 795 Stack: 796 system_server (0x0) 797 /system/bin/surfaceflinger (0x0) 798 799 Sample: 800 Values: 1004933 801 Stack: 802 /vendor/bin/hw/android.hardware.sensors-service.example (0x0) 803 system_server (0x0) 804 805 Sample: 806 Values: 105827054 807 Stack: 808 /system/bin/installd (0x0) 809 system_server (0x0) 810 811 Sample: 812 Values: 11316 813 Stack: 814 system_server (0x0) 815 /apex/com.android.os.statsd/bin/statsd (0x0) 816 817 Sample: 818 Values: 12567639 819 Stack: 820 /system/bin/servicemanager (0x0) 821 system_server (0x0) 822 823 Sample: 824 Values: 137623 825 Stack: 826 /vendor/bin/hw/android.hardware.lights-service.example (0x0) 827 system_server (0x0) 828 829 Sample: 830 Values: 140719 831 Stack: 832 system_server (0x0) 833 /system/bin/storaged (0x0) 834 835 Sample: 836 Values: 150044 837 Stack: 838 /vendor/bin/hw/android.hardware.input.processor-service.example (0x0) 839 system_server (0x0) 840 841 Sample: 842 Values: 1877718 843 Stack: 844 /system/bin/surfaceflinger (0x0) 845 system_server (0x0) 846 847 Sample: 848 Values: 19303 849 Stack: 850 system_server (0x0) 851 /vendor/bin/hw/android.hardware.sensors-service.example (0x0) 852 853 Sample: 854 Values: 210889 855 Stack: 856 /system/bin/servicemanager (0x0) 857 /apex/com.android.os.statsd/bin/statsd (0x0) 858 859 Sample: 860 Values: 21505514 861 Stack: 862 /system/bin/idmap2d (0x0) 863 system_server (0x0) 864 865 Sample: 866 Values: 2221699 867 Stack: 868 /vendor/bin/hw/android.hardware.health-service.cuttlefish (0x0) 869 system_server (0x0) 870 871 Sample: 872 Values: 25394 873 Stack: 874 /system/bin/servicemanager (0x0) 875 /system/bin/surfaceflinger (0x0) 876 877 Sample: 878 Values: 2552696 879 Stack: 880 /system/bin/hwservicemanager (0x0) 881 /system/bin/cameraserver (0x0) 882 883 Sample: 884 Values: 28045 885 Stack: 886 /apex/com.android.os.statsd/bin/statsd (0x0) 887 system_server (0x0) 888 889 Sample: 890 Values: 297647 891 Stack: 892 /system/bin/hwservicemanager (0x0) 893 system_server (0x0) 894 895 Sample: 896 Values: 3483649 897 Stack: 898 system_server (0x0) 899 /system/bin/audioserver (0x0) 900 901 Sample: 902 Values: 3677545 903 Stack: 904 /system/bin/servicemanager (0x0) 905 /system/bin/audioserver (0x0) 906 907 Sample: 908 Values: 3991341 909 Stack: 910 /system/bin/servicemanager (0x0) 911 /system/bin/cameraserver (0x0) 912 913 Sample: 914 Values: 41164 915 Stack: 916 system_server (0x0) 917 /vendor/bin/hw/android.hardware.health-service.cuttlefish (0x0) 918 919 Sample: 920 Values: 4948091 921 Stack: 922 system_server (0x0) 923 /system/bin/cameraserver (0x0) 924 925 Sample: 926 Values: 629626 927 Stack: 928 /apex/com.android.hardware.vibrator/bin/hw/android.hardware.vibrator-service.example (0x0) 929 system_server (0x0) 930 931 Sample: 932 Values: 78428525 933 Stack: 934 /vendor/bin/hw/android.hardware.graphics.composer3-service.ranchu (0x0) 935 /system/bin/surfaceflinger (0x0) 936 937 Sample: 938 Values: 81216 939 Stack: 940 /system/bin/vold (0x0) 941 system_server (0x0) 942 943 Sample: 944 Values: 837989 945 Stack: 946 /system/bin/servicemanager (0x0) 947 /system/bin/storaged (0x0) 948 """)) 949 950 def test_android_dvfs_counters(self): 951 return DiffTestBlueprint( 952 trace=TextProto(r""" 953 packet { 954 ftrace_events { 955 cpu: 0 956 event { 957 timestamp: 200001000000 958 pid: 2 959 clock_set_rate { 960 name : "domain@1" 961 state: 400000 962 } 963 } 964 event { 965 timestamp: 200003000000 966 pid: 2 967 clock_set_rate { 968 name: "domain@1" 969 state: 1024000 970 } 971 } 972 event { 973 timestamp: 200005000000 974 pid: 2 975 clock_set_rate { 976 name: "domain@1" 977 state: 1024000 978 } 979 } 980 } 981 trusted_uid: 9999 982 trusted_packet_sequence_id: 2 983 } 984 """), 985 query=""" 986 INCLUDE PERFETTO MODULE android.dvfs; 987 SELECT * FROM android_dvfs_counters; 988 """, 989 out=Csv(""" 990 "name","ts","value","dur" 991 "domain@1 Frequency",200001000000,400000.000000,2000000 992 "domain@1 Frequency",200003000000,1024000.000000,2000000 993 "domain@1 Frequency",200005000000,1024000.000000,0 994 """)) 995 996 def test_android_dvfs_counter_stats(self): 997 return DiffTestBlueprint( 998 trace=TextProto(r""" 999 packet { 1000 ftrace_events { 1001 cpu: 0 1002 event { 1003 timestamp: 200001000000 1004 pid: 2 1005 clock_set_rate { 1006 name : "domain@1" 1007 state: 400000 1008 } 1009 } 1010 event { 1011 timestamp: 200001000000 1012 pid: 2 1013 clock_set_rate { 1014 name : "bus_throughput" 1015 state: 1014000 1016 } 1017 } 1018 event { 1019 timestamp: 200003000000 1020 pid: 2 1021 clock_set_rate { 1022 name: "domain@1" 1023 state: 1024000 1024 } 1025 } 1026 event { 1027 timestamp: 200003000000 1028 pid: 2 1029 clock_set_rate { 1030 name: "bus_throughput" 1031 state: 553000 1032 } 1033 } 1034 event { 1035 timestamp: 200005000000 1036 pid: 2 1037 clock_set_rate { 1038 name: "domain@1" 1039 state: 1024000 1040 } 1041 } 1042 event { 1043 timestamp: 200005000000 1044 pid: 527 1045 clock_set_rate { 1046 name: "bus_throughput" 1047 state: 553000 1048 } 1049 } 1050 } 1051 trusted_uid: 9999 1052 trusted_packet_sequence_id: 2 1053 } 1054 """), 1055 query=""" 1056 INCLUDE PERFETTO MODULE android.dvfs; 1057 SELECT * FROM android_dvfs_counter_stats; 1058 """, 1059 out=Csv(""" 1060 "name","max","min","dur","wgt_avg" 1061 "bus_throughput Frequency",1014000.000000,553000.000000,2000000,783500.000000 1062 "domain@1 Frequency",1024000.000000,400000.000000,2000000,712000.000000 1063 """)) 1064 1065 def test_android_dvfs_counter_residency(self): 1066 return DiffTestBlueprint( 1067 trace=TextProto(r""" 1068 packet { 1069 ftrace_events { 1070 cpu: 0 1071 event { 1072 timestamp: 200001000000 1073 pid: 2 1074 clock_set_rate { 1075 name : "bus_throughput" 1076 state: 1014000 1077 } 1078 } 1079 event { 1080 timestamp: 200003000000 1081 pid: 2 1082 clock_set_rate { 1083 name: "bus_throughput" 1084 state: 553000 1085 } 1086 } 1087 event { 1088 timestamp: 200005000000 1089 pid: 527 1090 clock_set_rate { 1091 name: "bus_throughput" 1092 state: 553000 1093 } 1094 } 1095 } 1096 trusted_uid: 9999 1097 trusted_packet_sequence_id: 2 1098 } 1099 """), 1100 query=""" 1101 INCLUDE PERFETTO MODULE android.dvfs; 1102 SELECT * FROM android_dvfs_counter_residency; 1103 """, 1104 out=Csv(""" 1105 "name","value","dur","pct" 1106 "bus_throughput Frequency",553000.000000,2000000,50.000000 1107 "bus_throughput Frequency",1014000.000000,2000000,50.000000 1108 """)) 1109 1110 def test_app_process_starts(self): 1111 return DiffTestBlueprint( 1112 trace=DataPath('sched_wakeup_trace.atr'), 1113 query=""" 1114 INCLUDE PERFETTO MODULE android.app_process_starts; 1115 SELECT 1116 process_name, 1117 pid, 1118 intent, 1119 reason, 1120 proc_start_ts, 1121 proc_start_dur, 1122 bind_app_ts, 1123 bind_app_dur, 1124 intent_ts, 1125 intent_dur, 1126 total_dur 1127 FROM android_app_process_starts 1128 ORDER BY proc_start_ts 1129 """, 1130 out=Csv(""" 1131 "process_name","pid","intent","reason","proc_start_ts","proc_start_dur","bind_app_ts","bind_app_dur","intent_ts","intent_dur","total_dur" 1132 "com.android.providers.media.module",3487,"com.android.providers.media.fuse.ExternalStorageServiceImpl","service",1737343157905,6527831,1737386174098,156129409,1737542356088,2114114,201312297 1133 "com.android.externalstorage",3549," android.os.storage.action.VOLUME_STATE_CHANGED","broadcast",1739987238947,9277039,1740045665263,20602351,1740066288912,1480586,80530551 1134 """)) 1135 1136 def test_garbage_collection(self): 1137 return DiffTestBlueprint( 1138 trace=DataPath('sched_wakeup_trace.atr'), 1139 query=""" 1140 INCLUDE PERFETTO MODULE android.garbage_collection; 1141 SELECT 1142 tid, 1143 pid, 1144 thread_name, 1145 process_name, 1146 gc_type, 1147 is_mark_compact, 1148 reclaimed_mb, 1149 min_heap_mb, 1150 max_heap_mb 1151 gc_ts, 1152 gc_dur, 1153 gc_running_dur, 1154 gc_runnable_dur, 1155 gc_unint_io_dur, 1156 gc_unint_non_io_dur, 1157 gc_int_dur 1158 FROM android_garbage_collection_events 1159 ORDER BY tid, gc_ts 1160 """, 1161 out=Csv(""" 1162 "tid","pid","thread_name","process_name","gc_type","is_mark_compact","reclaimed_mb","min_heap_mb","gc_ts","gc_dur","gc_running_dur","gc_runnable_dur","gc_unint_io_dur","gc_unint_non_io_dur","gc_int_dur" 1163 2013,2003,"HeapTaskDaemon","android.process.media","collector_transition",0,0.670000,2.153000,2.823000,326468170,138781185,177630899,0,0,10056086 1164 3494,3487,"HeapTaskDaemon","com.android.providers.media.module","young",0,"[NULL]","[NULL]","[NULL]",213263593,164870500,29632860,0,0,12881595 1165 3494,3487,"HeapTaskDaemon","com.android.providers.media.module","collector_transition",0,1.248000,2.201000,3.449000,169735717,135385084,24036227,0,1301,10313105 1166 3556,3549,"HeapTaskDaemon","com.android.externalstorage","collector_transition",0,0.450000,2.038000,2.488000,166379142,123781761,32547509,0,0,10049872 1167 """)) 1168 1169 def test_garbage_collection_stats(self): 1170 return DiffTestBlueprint( 1171 trace=DataPath('android_postboot_unlock.pftrace'), 1172 query=""" 1173 INCLUDE PERFETTO MODULE android.garbage_collection; 1174 SELECT 1175 ts, dur, 1176 heap_size_mbs, heap_size_mb, 1177 heap_allocated_mb, heap_allocation_rate, 1178 heap_live_mbs, heap_total_mbs, heap_utilization, 1179 gc_running_dur, gc_running_rate, gc_running_efficiency, 1180 gc_during_android_startup_dur, 1181 total_android_startup_dur, 1182 gc_during_android_startup_rate, 1183 gc_during_android_startup_efficiency 1184 FROM _android_garbage_collection_stats 1185 """, 1186 out=Csv(""" 1187 "ts","dur","heap_size_mbs","heap_size_mb","heap_allocated_mb","heap_allocation_rate","heap_live_mbs","heap_total_mbs","heap_utilization","gc_running_dur","gc_running_rate","gc_running_efficiency","gc_during_android_startup_dur","total_android_startup_dur","gc_during_android_startup_rate","gc_during_android_startup_efficiency" 1188 37574228004,2590476076,545.245650,210.480867,157.435000,60.774543,21.891720,53.434636,0.409692,80862916,0.031215,1351.232099,177436890,675663737,0.262611,160.615132 1189 """)) 1190 1191 def test_garbage_collection_stats_b384732321(self): 1192 """Regression test for a case where we see startup dur of -1""" 1193 return DiffTestBlueprint( 1194 trace=TextProto(r""" 1195 packet: { 1196 system_info: { 1197 android_sdk_version: 35 1198 } 1199 } 1200 packet { 1201 ftrace_events { 1202 cpu: 1 1203 event: { 1204 timestamp: 10 1205 pid: 1 1206 print: { 1207 buf: 1208 "F|1|launchingActivity#1|0\n" 1209 } 1210 } 1211 event: { 1212 timestamp: 12 1213 pid: 1 1214 print: { 1215 buf: 1216 "I|1|launchingActivity#1:completed-warm:com.android.phone\n" 1217 } 1218 } 1219 event: { 1220 timestamp: 1000 1221 pid: 2 1222 print: { 1223 buf: 1224 "S|2|launchingActivity#1|0\n" 1225 } 1226 } 1227 } 1228 } 1229 """), 1230 query=""" 1231 INCLUDE PERFETTO MODULE android.garbage_collection; 1232 SELECT COUNT() as count from _android_garbage_collection_stats 1233 """, 1234 out=Csv(""" 1235 "count" 1236 1 1237 """)) 1238 1239 def test_input_events(self): 1240 return DiffTestBlueprint( 1241 trace=DataPath('post_boot_trace.atr'), 1242 query=""" 1243 INCLUDE PERFETTO MODULE android.input; 1244 SELECT 1245 total_latency_dur, 1246 handling_latency_dur, 1247 dispatch_latency_dur, 1248 tid, 1249 thread_name, 1250 pid, 1251 process_name, 1252 event_type, 1253 event_seq, 1254 event_channel, 1255 dispatch_ts, 1256 dispatch_dur, 1257 receive_ts, 1258 receive_dur 1259 FROM android_input_events 1260 ORDER BY dispatch_ts 1261 LIMIT 10 1262 """, 1263 out=Csv(""" 1264 "total_latency_dur","handling_latency_dur","dispatch_latency_dur","tid","thread_name","pid","process_name","event_type","event_seq","event_channel","dispatch_ts","dispatch_dur","receive_ts","receive_dur" 1265 377149054,77503,377032734,7493,"ndroid.systemui",7493,"com.android.systemui","0x3","0x1","4325794 NotificationShade (server)",578307771330,1292,578684804064,1412 1266 1684318,772908,48433,7493,"ndroid.systemui",7493,"com.android.systemui","0x1","0x2","a0526ca NavigationBar0 (server)",581956322279,1299,581956370712,1806 1267 22069988,12614508,804831,7493,"ndroid.systemui",7493,"com.android.systemui","0x1","0x3","4325794 NotificationShade (server)",581956391308,1212,581957196139,1362 1268 1603522,645723,75328,7964,"droid.launcher3",7964,"com.android.launcher3","0x1","0x4","[Gesture Monitor] swipe-up (server)",581956445376,1232,581956520704,1708 1269 1583707,644313,208973,7310,"android.ui",7288,"system_server","0x1","0x5","PointerEventDispatcher0 (server)",581956495788,1208,581956704761,1281 1270 22622740,22582066,25729,7493,"ndroid.systemui",7493,"com.android.systemui","0x1","0x6","4325794 NotificationShade (server)",582019627670,1230,582019653399,1607 1271 20228399,20116160,95263,7964,"droid.launcher3",7964,"com.android.launcher3","0x1","0x7","[Gesture Monitor] swipe-up (server)",582019685639,1309,582019780902,1942 1272 459763,287436,27342,7310,"android.ui",7288,"system_server","0x1","0x8","PointerEventDispatcher0 (server)",582019737156,1192,582019764498,1664 1273 9848456,9806401,22714,7493,"ndroid.systemui",7493,"com.android.systemui","0x1","0x9","4325794 NotificationShade (server)",582051061377,1227,582051084091,1596 1274 5533919,5487703,25013,7964,"droid.launcher3",7964,"com.android.launcher3","0x1","0xa","[Gesture Monitor] swipe-up (server)",582051112236,1258,582051137249,1771 1275 """)) 1276 1277 def test_job_scheduler_events(self): 1278 return DiffTestBlueprint( 1279 trace=DataPath('post_boot_trace.atr'), 1280 query=""" 1281 INCLUDE PERFETTO MODULE android.job_scheduler; 1282 SELECT job_id, uid, package_name, job_service_name, ts, dur FROM android_job_scheduler_events ORDER BY ts 1283 """, 1284 out=Csv(""" 1285 "job_id","uid","package_name","job_service_name","ts","dur" 1286 237039804,1000,"android","com.android.server.notification.NotificationHistoryJobService$system",575488743679,10909825 1287 201,10060,"com.android.dialer","com.android.voicemail.impl.StatusCheckJobService",579210443477,15650722 1288 -300,10089,"com.android.providers.media.module","com.android.providers.media.MediaService",579448376938,1716731633 1289 7,10085,"com.android.devicelockcontroller","androidx.work.impl.background.systemjob.SystemJobService",579645356805,148784109 1290 2,10058,"com.android.imsserviceentitlement",".fcm.FcmRegistrationService",580025518616,47458225 1291 1000,10071,"com.android.messaging",".datamodel.action.ActionServiceImpl",581680366145,327541238 1292 1001,10071,"com.android.messaging",".datamodel.action.BackgroundWorkerService",581948976360,90502706 1293 1000,10071,"com.android.messaging",".datamodel.action.ActionServiceImpl",582038224048,65747884 1294 7,10088,"com.android.rkpdapp","androidx.work.impl.background.systemjob.SystemJobService",582582119592,103911382 1295 7,10037,"com.android.statementservice","androidx.work.impl.background.systemjob.SystemJobService",583151483122,115767494 1296 27950934,10022,"com.android.providers.calendar",".CalendarProviderJobService",587237955847,37434516 1297 """)) 1298 1299 def test_freezer_events(self): 1300 return DiffTestBlueprint( 1301 trace=DataPath('freezer_trace.atr'), 1302 query=""" 1303 INCLUDE PERFETTO MODULE android.freezer; 1304 SELECT pid, ts, dur, unfreeze_reason_int, unfreeze_reason_str FROM android_freezer_events ORDER BY ts 1305 """, 1306 out=Csv(""" 1307 "pid","ts","dur","unfreeze_reason_int","unfreeze_reason_str" 1308 6506,91266310231819,94699935803,"[NULL]","[NULL]" 1309 3804,91266322277324,94687890298,"[NULL]","[NULL]" 1310 3299,91281767065245,78699885147,6,"start_service" 1311 5782,91296291190245,64718977377,"[NULL]","[NULL]" 1312 6533,91296292403211,64717764411,"[NULL]","[NULL]" 1313 4044,91296293188372,64716979250,"[NULL]","[NULL]" 1314 4002,91296294215356,64715952266,"[NULL]","[NULL]" 1315 3981,91296294804650,64715362972,"[NULL]","[NULL]" 1316 """)) 1317 1318 def test_service_bindings(self): 1319 return DiffTestBlueprint( 1320 trace=DataPath('post_boot_trace.atr'), 1321 query=""" 1322 INCLUDE PERFETTO MODULE android.services; 1323 SELECT 1324 client_oom_score, 1325 client_process, 1326 client_thread, 1327 client_pid, 1328 client_tid, 1329 client_ts, 1330 client_dur, 1331 server_oom_score, 1332 server_process, 1333 server_thread, 1334 server_tid, 1335 server_pid, 1336 server_ts, 1337 server_dur, 1338 token, 1339 act, 1340 cmp, 1341 flg, 1342 bind_seq 1343 FROM android_service_bindings 1344 ORDER BY client_tid, client_ts 1345 LIMIT 10 1346 """, 1347 out=Csv(""" 1348 "client_oom_score","client_process","client_thread","client_pid","client_tid","client_ts","client_dur","server_oom_score","server_process","server_thread","server_tid","server_pid","server_ts","server_dur","token","act","cmp","flg","bind_seq" 1349 -900,"system_server","system_server",7288,7288,577830735575,0,0,"android.ext.services","binder:7732_3",7764,7732,577866081720,9755069,"android.os.BinderProxy@a0dc800","android.service.notification.NotificationAssistantService","android.ext.services/.notification.Assistant","[NULL]",21 1350 -900,"system_server","eduling.default",7288,7366,579204777498,0,0,"com.android.dialer","binder:8075_2",8097,8075,579207718770,13090141,"android.os.BinderProxy@9a28fdf","[NULL]","com.android.dialer/com.android.voicemail.impl.StatusCheckJobService","0x4",29 1351 -900,"system_server","eduling.default",7288,7366,580022869386,0,0,"com.android.imsserviceentitlement","binder:8647_1",8667,8647,580027477378,1982139,"android.os.BinderProxy@27f8e83","[NULL]","com.android.imsserviceentitlement/.fcm.FcmRegistrationService","0x4",35 1352 -900,"system_server","StorageManagerS",7288,7397,587754918358,0,-700,"com.android.providers.media.module","binder:8294_1",8327,8294,587757305854,2691423,"android.os.BinderProxy@73b68b5","[NULL]","com.android.providers.media.module/com.android.providers.media.fuse.ExternalStorageServiceImpl","[NULL]",44 1353 -800,"com.android.systemui","ndroid.systemui",7493,7493,572995972978,8071106,-800,"com.android.systemui","binder:7493_4",7682,7493,573131280194,17181314,"android.os.BinderProxy@1c2ac60","android.service.wallpaper.WallpaperService","com.android.systemui/.wallpapers.ImageWallpaper","[NULL]",14 1354 -800,"com.android.systemui","ndroid.systemui",7493,7493,572995972978,8071106,-800,"com.android.systemui","binder:7493_4",7682,7493,577000518511,6977972,"android.os.BinderProxy@b18137","[NULL]","com.android.systemui/.keyguard.KeyguardService","0x100",15 1355 -800,"com.android.networkstack.process","rkstack.process",7610,7610,571078334504,7552850,-800,"com.android.networkstack.process","binder:7610_1",7633,7610,571090652307,74610898,"android.os.BinderProxy@ee1090b","android.net.INetworkStackConnector","com.android.networkstack/com.android.server.NetworkStackService","[NULL]",2 1356 -800,"com.android.networkstack.process","rkstack.process",7610,7610,571078334504,7552850,-800,"com.android.networkstack.process","binder:7610_1",7633,7610,571489537275,1570460,"android.os.BinderProxy@a0dc800","android.net.ITetheringConnector","com.android.networkstack.tethering/.TetheringService","[NULL]",3 1357 0,"com.android.bluetooth","droid.bluetooth",7639,7639,571248973750,9874358,-700,"com.android.bluetooth","binder:7639_2",7672,7639,571871169647,6460322,"android.os.BinderProxy@7482132","android.bluetooth.IBluetooth","com.android.bluetooth/.btservice.AdapterService","[NULL]",4 1358 -700,"com.android.bluetooth","droid.bluetooth",7639,7639,572342110044,4874276,-700,"com.android.bluetooth","binder:7639_2",7672,7639,572466393291,1404185,"android.os.BinderProxy@ce5a6fc","android.media.browse.MediaBrowserService","com.android.bluetooth/.avrcpcontroller.BluetoothMediaBrowserService","[NULL]",10 1359 """)) 1360 1361 def test_oom_adjuster_transitions(self): 1362 return DiffTestBlueprint( 1363 trace=DataPath('sched_wakeup_trace.atr'), 1364 query=""" 1365 INCLUDE PERFETTO MODULE android.oom_adjuster; 1366 SELECT 1367 ts, 1368 dur, 1369 score, 1370 bucket, 1371 process_name, 1372 oom_adj_ts, 1373 oom_adj_dur, 1374 oom_adj_thread_name, 1375 oom_adj_reason, 1376 oom_adj_trigger 1377 FROM android_oom_adj_intervals 1378 WHERE oom_adj_reason IS NOT NULL 1379 ORDER BY ts 1380 LIMIT 10 1381 """, 1382 out=Csv(""" 1383 "ts","dur","score","bucket","process_name","oom_adj_ts","oom_adj_dur","oom_adj_thread_name","oom_adj_reason","oom_adj_trigger" 13841737065264829,701108081,925,"cached","com.android.providers.calendar",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13851737066678827,3470211742,935,"cached","com.android.imsserviceentitlement",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13861737066873002,3470017567,945,"cached","com.android.carrierconfig",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13871737067058812,3469831757,955,"cached","com.android.messaging",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13881737067246975,699224817,955,"cached","android.process.acore",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13891737068421919,3468468650,965,"cached","com.android.shell",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13901737068599673,697908135,965,"cached","android.process.media",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13911737068933602,3467956967,975,"cached","com.android.gallery3d",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13921737069091010,3467799559,975,"cached","com.android.packageinstaller",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 13931737069240534,3467650035,985,"cached","com.android.managedprovisioning",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212" 1394 """)) 1395 1396 def test_broadcast_minsdk_u(self): 1397 return DiffTestBlueprint( 1398 trace=DataPath('freezer_trace.atr'), 1399 query=""" 1400 INCLUDE PERFETTO MODULE android.broadcasts; 1401 SELECT record_id, intent_action, process_name, pid, process_queue_id, queue_id, ts, dur FROM _android_broadcasts_minsdk_u 1402 ORDER BY ts LIMIT 10 1403 """, 1404 out=Csv(""" 1405 "record_id","intent_action","process_name","pid","process_queue_id","queue_id","ts","dur" 1406 "3cdfe8f","android.os.action.POWER_SAVE_TEMP_WHITELIST_CHANGED","system",2519,"d43f45d",0,91286297271477,221619 1407 "3df251c","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91295942589896,469216 1408 "3df251c","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91295943366025,313104 1409 "3df251c","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91295943943713,356194 1410 "6e24ea1","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91355941417856,444189 1411 "6e24ea1","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91355942543001,405369 1412 "6e24ea1","android.intent.action.TIME_TICK","com.android.systemui",2762,"f0a77fa",0,91355943262781,339640 1413 "c24df76","android.intent.action.PACKAGE_NEEDS_INTEGRITY_VERIFICATION","system",2519,"d43f45d",0,91359865607938,862534 1414 "7fccf57","android.content.pm.action.SESSION_COMMITTED","com.android.launcher3",3219,"8e7639",0,91360380556725,15221753 1415 "1ef76b0","android.intent.action.PACKAGE_ADDED","system",2519,"d43f45d",0,91360396877398,107502 1416 """)) 1417 1418 1419 def test_binder_breakdown(self): 1420 return DiffTestBlueprint( 1421 trace=DataPath('sched_wakeup_trace.atr'), 1422 query=""" 1423 INCLUDE PERFETTO MODULE android.binder_breakdown; 1424 WITH x AS ( 1425 SELECT reason, dur FROM android_binder_server_breakdown 1426 UNION ALL 1427 SELECT reason, dur FROM android_binder_client_breakdown 1428 ) SELECT reason, SUM(dur) AS dur FROM x GROUP BY reason ORDER BY dur 1429 """, 1430 out=Csv(""" 1431 "reason","dur" 1432 "D",548774 1433 "io",705773 1434 "art_lock_contention",9500403 1435 "monitor_contention",76505897 1436 "R+",198506855 1437 "R",201261723 1438 "Running",608081756 1439 "binder",4174605447 1440 "S",5144384456 1441 """)) 1442 1443 def test_binder_combined_breakdown(self): 1444 return DiffTestBlueprint( 1445 trace=DataPath('sched_wakeup_trace.atr'), 1446 query=""" 1447 INCLUDE PERFETTO MODULE android.binder_breakdown; 1448 SELECT reason, reason_type, SUM(dur) as dur 1449 FROM android_binder_client_server_breakdown 1450 GROUP BY reason, reason_type 1451 ORDER BY dur 1452 """, 1453 out=Csv(""" 1454 "reason","reason_type","dur" 1455 "D","client",10027 1456 "D","server",538747 1457 "io","server",705773 1458 "art_lock_contention","server",9500403 1459 "Running","client",16251671 1460 "R+","client",35969495 1461 "R","server",73026825 1462 "monitor_contention","server",76505897 1463 "R+","server",96093319 1464 "S","client",97692288 1465 "R","client",125510991 1466 "Running","server",584323718 1467 "binder","server",2106016239 1468 "S","server",2122622385 1469 """)) 1470 1471 def test_android_charging_states_output(self): 1472 return DiffTestBlueprint( 1473 trace=DataPath('android_job_scheduler.perfetto-trace'), 1474 query=""" 1475 INCLUDE PERFETTO MODULE android.battery.charging_states; 1476 SELECT ts, dur, charging_state FROM android_charging_states; 1477 """, 1478 out=Csv(""" 1479 "ts","dur","charging_state" 1480 368604749651,59806073237,"Charging" 1481 """)) 1482 1483 def test_android_job_scheduler_states_output(self): 1484 return DiffTestBlueprint( 1485 trace=DataPath('android_job_scheduler.perfetto-trace'), 1486 query=""" 1487 INCLUDE PERFETTO MODULE android.job_scheduler_states; 1488 SELECT 1489 id, 1490 ts, 1491 dur, 1492 slice_id, 1493 job_name || '_' || job_id AS job_name, 1494 uid, 1495 job_id, 1496 package_name, 1497 job_namespace, 1498 effective_priority, 1499 has_battery_not_low_constraint, 1500 has_charging_constraint, 1501 has_connectivity_constraint, 1502 has_content_trigger_constraint, 1503 has_deadline_constraint, 1504 has_idle_constraint, 1505 has_storage_not_low_constraint, 1506 has_timing_delay_constraint, 1507 is_prefetch, 1508 is_requested_expedited_job, 1509 is_running_as_expedited_job, 1510 num_previous_attempts, 1511 requested_priority, 1512 standby_bucket, 1513 is_periodic, 1514 has_flex_constraint, 1515 is_requested_as_user_initiated_job, 1516 is_running_as_user_initiated_job, 1517 deadline_ms, 1518 job_start_latency_ms, 1519 num_uncompleted_work_items, 1520 proc_state, 1521 internal_stop_reason, 1522 public_stop_reason 1523 FROM android_job_scheduler_states; 1524 """, 1525 out=Csv(""" 1526"id","ts","dur","slice_id","job_name","uid","job_id","package_name","job_namespace","effective_priority","has_battery_not_low_constraint","has_charging_constraint","has_connectivity_constraint","has_content_trigger_constraint","has_deadline_constraint","has_idle_constraint","has_storage_not_low_constraint","has_timing_delay_constraint","is_prefetch","is_requested_expedited_job","is_running_as_expedited_job","num_previous_attempts","requested_priority","standby_bucket","is_periodic","has_flex_constraint","is_requested_as_user_initiated_job","is_running_as_user_initiated_job","deadline_ms","job_start_latency_ms","num_uncompleted_work_items","proc_state","internal_stop_reason","public_stop_reason" 15271,377089754138,83200835,10,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286783",10090,-2746960329031286783,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_CANCELLED","STOP_REASON_CANCELLED_BY_APP" 15282,385507499374,111746552,17,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286782",10090,-2746960329031286782,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,6,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 15293,416753734715,129444346,53,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286781",10090,-2746960329031286781,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,5,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 15304,422530232411,86735906,59,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286780",10090,-2746960329031286780,"com.android.providers.media.module","androidx.work.systemjobscheduler",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 1531 """)) 1532 1533 def test_android_job_scheduler_with_screen_charging_output(self): 1534 return DiffTestBlueprint( 1535 trace=DataPath('android_job_scheduler.perfetto-trace'), 1536 query=""" 1537 INCLUDE PERFETTO MODULE android.job_scheduler_states; 1538 SELECT 1539 ts, 1540 dur, 1541 slice_id, 1542 job_name, 1543 uid, 1544 job_id, 1545 job_dur, 1546 package_name, 1547 job_namespace, 1548 charging_state, 1549 screen_state, 1550 effective_priority, 1551 has_battery_not_low_constraint, 1552 has_charging_constraint, 1553 has_connectivity_constraint, 1554 has_content_trigger_constraint, 1555 has_deadline_constraint, 1556 has_idle_constraint, 1557 has_storage_not_low_constraint, 1558 has_timing_delay_constraint, 1559 is_prefetch, 1560 is_requested_expedited_job, 1561 is_running_as_expedited_job, 1562 num_previous_attempts, 1563 requested_priority, 1564 standby_bucket, 1565 is_periodic, 1566 has_flex_constraint, 1567 is_requested_as_user_initiated_job, 1568 is_running_as_user_initiated_job, 1569 deadline_ms, 1570 job_start_latency_ms, 1571 num_uncompleted_work_items, 1572 proc_state, 1573 internal_stop_reason, 1574 public_stop_reason 1575 from android_job_scheduler_with_screen_charging_states; 1576 """, 1577 out=Csv(""" 1578 "ts","dur","slice_id","job_name","uid","job_id","job_dur","package_name","job_namespace","charging_state","screen_state","effective_priority","has_battery_not_low_constraint","has_charging_constraint","has_connectivity_constraint","has_content_trigger_constraint","has_deadline_constraint","has_idle_constraint","has_storage_not_low_constraint","has_timing_delay_constraint","is_prefetch","is_requested_expedited_job","is_running_as_expedited_job","num_previous_attempts","requested_priority","standby_bucket","is_periodic","has_flex_constraint","is_requested_as_user_initiated_job","is_running_as_user_initiated_job","deadline_ms","job_start_latency_ms","num_uncompleted_work_items","proc_state","internal_stop_reason","public_stop_reason" 1579377089754138,83200835,10,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286783",10090,-2746960329031286783,83200835,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_CANCELLED","STOP_REASON_CANCELLED_BY_APP" 1580385507499374,111746552,17,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286782",10090,-2746960329031286782,111746552,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,6,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 1581416753734715,129444346,53,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286781",10090,-2746960329031286781,129444346,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,5,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 1582422530232411,86735906,59,"@androidx.work.systemjobscheduler@com.android.providers.media.module/androidx.work.impl.background.systemjob.SystemJobService_-2746960329031286780",10090,-2746960329031286780,86735906,"com.android.providers.media.module","androidx.work.systemjobscheduler","Charging","Unknown",400,1,0,0,0,0,0,0,0,0,0,0,0,400,"EXEMPTED",0,0,0,0,0,3,0,"PROCESS_STATE_PERSISTENT","INTERNAL_STOP_REASON_SUCCESSFUL_FINISH","STOP_REASON_UNDEFINED" 1583 """)) 1584