0:27 System Trace Overview 2:59 Demo starts 3:56 How to capture a System Trace in AS 4:35 Navigating a trace in AS 11:06 Adding Custom Events to your app's code 13:01 How to enable System Trace on app start-up
HUMBLE SYMMARY System trace helps get the full picture of the app’s runtime performance by capturing performance data from all of your layers. Can optional define custom events to instrument your app code to tie up functionality with the rest of all the data. In a nutshell System Trace is a tool that allows how your app interacts with system resources. The process is kind of: 1. Run profiler 2. Select area of interest 3. Can correlate what the code is doing with the instrumentation framework 4. Check the top-down tree view and can see the exact times of these trace events Also you can check the start app performance Run/Debug configurations -> start this recording at start up -> Trace system calls
@@yichu1782 SurfaceView in the old systrace actually represents the depth of BufferQueue, so in Android Studio 4.2 we added a BufferQueue track in the Display section. As for SurfaceTexture, I'm actually not familiar with what it represents in the old systrace. Can you elaborate?
@@usabilist Can you open a bug by going to Help -> Submit Feedback? In the bug, upload your trace file (if you don't want the file to be public we can set up a shared folder) so we can investigate. Thanks!
@@yiyang_google Sorry do not think it is possible, it is a closed project behind NDA. I hoped to understand more what is required to enable those features but if you do not have the answer we should stop.
@@usabilist I understand. Another place to check is the main thread in the Threads section. If you can't find Choreographer#doFrame events in the call chart, it might explain why Frames is empty for you. That could mean either your app is not using Choreographer, or the OEM has a custom implementation.
Thank you very much, Mohamed! We're glad you have enjoyed the video. If you'd like to learn additional resources, check out the System Tracing documentation here: goo.gle/3T8JHke Happy learning 😁
Is it possible to convert the trace to an automation friendly format? such as JSON? After the loading the trace all you can do is look at it. You can't even copy the node names on the clipboard is it possible to somehow be able to export the parsed trace to JSON or something? It could help with analytics of current and previous performance by comparing traces programmatically
Thank you for the feedback. A trace file contains a huge amount of data so we need to understand exactly what information is useful for export. Can you open a feature request here (issuetracker.google.com/issues/new?component=192708&template=840533) and elaborate on the kind of data you're interested in? Thanks!
Meanwhile, Perfetto (perfetto.dev/docs/quickstart/trace-analysis) provides a SQL like interface for querying certain data from a system trace (also works on trace files captured in Android Studio), see if it helps in your case.
To start profilers in Android Studio, choose View > Tool Windows > Profiler or click Profile in the toolbar. Here is the official doc to Android Studio profilers: developer.android.com/studio/profile/android-profiler. What this video focuses on, System Trace, is in the CPU profiler.
Excellent content and tool, will give it a try now as we are struggling with performance on some very specific phones that are not even low-end.
0:27 System Trace Overview
2:59 Demo starts
3:56 How to capture a System Trace in AS
4:35 Navigating a trace in AS
11:06 Adding Custom Events to your app's code
13:01 How to enable System Trace on app start-up
🤘
Very nice useful, safe and secure teachings about Android devices
Thank you so much for the positive feedback, Ravinder 😀
Be sure to check out the links in the description for even more tips and tutorials!
HUMBLE SYMMARY
System trace helps get the full picture of the app’s runtime performance by capturing performance data from all of your layers.
Can optional define custom events to instrument your app code to tie up functionality with the rest of all the data. In a nutshell System Trace is a tool that allows how your app interacts with system resources.
The process is kind of:
1. Run profiler
2. Select area of interest
3. Can correlate what the code is doing with the instrumentation framework
4. Check the top-down tree view and can see the exact times of these trace events
Also you can check the start app performance Run/Debug configurations -> start this recording at start up -> Trace system calls
Thanks for this great video. This was very useful and the tutorial we were really missing I think.
Great Simple video with nice explanation! Thanks
Amazing! you just helped me to fix a bug
Good job bro @Yi Yang.
It would be great if the Android Studio System Trace adds more information such as SurfaceView or SurfaceTexture like the Old systrace tools do
@Android Developers, @Yi Yang
@@yichu1782 SurfaceView in the old systrace actually represents the depth of BufferQueue, so in Android Studio 4.2 we added a BufferQueue track in the Display section. As for SurfaceTexture, I'm actually not familiar with what it represents in the old systrace. Can you elaborate?
this will help me understand the performance
Awesome, more real world examples would be great
I cannot get option to new navigation gesture > I have latest Android 10 on my redmi note 8 pro handsets why but any problem
Some of the features are in Android Studio 4.1 Beta. Feel free to try it out: developer.android.com/studio/preview/
What could be a reason that Frames/SurfaceFlinger/VSYNC are empty for me? (Studio 4.1.3)
What's your device's API level? Frame data are available on Android O or later. SF and VSYNC are available on Android Q or later.
@@yiyang_google Android Q. I assume other prerequisites must be fulfilled, like vendor GPU driver supporting some features, no?
@@usabilist Can you open a bug by going to Help -> Submit Feedback? In the bug, upload your trace file (if you don't want the file to be public we can set up a shared folder) so we can investigate. Thanks!
@@yiyang_google Sorry do not think it is possible, it is a closed project behind NDA. I hoped to understand more what is required to enable those features but if you do not have the answer we should stop.
@@usabilist I understand. Another place to check is the main thread in the Threads section. If you can't find Choreographer#doFrame events in the call chart, it might explain why Frames is empty for you. That could mean either your app is not using Choreographer, or the OEM has a custom implementation.
Does progress dialog causes frozen frames?
@Yi Yang great work!
I learned a lot from this, thanks!
Great tool and explanation.
Great Video. Thank you so much.
please offer your demo code.
Great Video!
Thank you very much, Mohamed! We're glad you have enjoyed the video. If you'd like to learn additional resources, check out the System Tracing documentation here: goo.gle/3T8JHke
Happy learning 😁
Is it possible to convert the trace to an automation friendly format?
such as JSON?
After the loading the trace all you can do is look at it. You can't even copy the node names on the clipboard
is it possible to somehow be able to export the parsed trace to JSON or something?
It could help with analytics of current and previous performance by comparing traces programmatically
Thank you for the feedback. A trace file contains a huge amount of data so we need to understand exactly what information is useful for export. Can you open a feature request here (issuetracker.google.com/issues/new?component=192708&template=840533) and elaborate on the kind of data you're interested in? Thanks!
Meanwhile, Perfetto (perfetto.dev/docs/quickstart/trace-analysis) provides a SQL like interface for querying certain data from a system trace (also works on trace files captured in Android Studio), see if it helps in your case.
keep repeating the video and still dont know how to start profiler here @_@
To start profilers in Android Studio, choose View > Tool Windows > Profiler or click Profile in the toolbar. Here is the official doc to Android Studio profilers: developer.android.com/studio/profile/android-profiler. What this video focuses on, System Trace, is in the CPU profiler.
10:57 [INAUDIBLE] translates to "app code"
Great tool!
great video
Why do I understand this. I'm a pharmacist for Gods sake. 😅
Now I will go destroy my phones operating system...wish me luck!