The Dynamic Analyzer in Tizen SDK, helps the developers to improve the performance and stability of their application easily. With the following demo, you can find the bottleneck point, unstable usage of memory, file, thread, network, openGL and functions of application and library. Some of them are done by automatically and some are by manually but easily. With the debugger, you must pause the application at a certain point to analyze, and it is still hard to get statistical and analytic information. This tool will resolve these regret, and make yourselves experience wider view of application analysis. For the more, this tool have the potential to add more applicable ideas of analysis.
1. How to improve the quality of your
tizen applications and platform
Introduction of Tizen SDK Dynamic Analyzer
S-Core
Juyoung Kim
(j0.kim@samsung.com)
Co-worker: Jooyoul Lee, Jaewon Lim,
Sanghyun Lee, Woojin Jung,
Hyunjong Park, Yeongtaik Byeon
and Hyungoo Kang
2. Why we want to improve …
Because we are not satisfied …
The improvement starts from the dissatisfaction.
Then what’s next…?
Take the steps to find the solution
2
3. The Step of finding solution
Dissatisfaction
Define the problem
Analyze the cause
I am not satisfied with the speed.
Where is the problem: engine or tire?
Why the engine is not fast enough?
3
Find a solution
4. The Step of finding solution
Dissatisfaction
Define the problem
Analyze the cause
What is the cause of tilt: GOD or The ground?
4
Find a solution
5. The key of improvement
Dissatisfaction
Define the problem
Analyze the cause
You need a Tool!!!
The Dynamic Analyzer
5
Find a solution
6. Contents
•
Define the problem: Finding the optimization points
•
•
•
The bottleneck point
The waiting state
Analyze the cause: Finding the mistake
•
•
•
Leaks
Function usage bugs
Additional Support for
•
Network programming
•
OpenGL ES programming
•
•
6
Demonstration
Summary
8. Finding the optimization points (1/4)
• The bottleneck point
•
Bottleneck: core routine, the busiest part
•
Optimizing the bottleneck is one of the most effective way to make you
program fast
High CPU load area
4. Frequently
called functions
1. high exclusive
CPU time
2. high exclusive
elapsed time
8
3. high inclusive
time
9. Finding the optimization points (2/4)
• The bottleneck point: Multi-Thread case
•
The critical path : The longest serialized path
•
Optimizing the routine in this path is more effective than the other path
Critical Path
9
10. Finding the optimization points (3/4)
• the waiting state
•
The waiting state makes your program slow when need to be fast
Low CPU time and
high elapsed time
File IO wait time
Low CPU load area
Network IO wait time
10
11. Finding the optimization points (4/4)
• the waiting state point: Multi-Thread case
•
Waiting for critical section
Not related to this mutex
lock waiting
Critical section
11
13. Analyzing the cause of mistake (1/2)
• How can I find the Leaks
•
Heap chart
•
Leak (candidate)
•
Range based analysis
See the trend
Set the range
Valgrind in Tizen SDK IDE
•
•
Overrunning the top of the stack.
•
Accessing memory after it has been freed.
•
Using undefined values.
•
Double-freeing heap blocks.
•
Mismatch of malloc/new/new[] versus free/delete/delete[].
•
Overlapping src and dst pointers in memcpy-like
•
13
Overrunning and underrunning heap blocks.
Memory leaks.
14. Analyzing the cause of mistake (2/2)
• How can I find the bugs
•
•
14
Failed API List
Call trace: Function’s parameter and return value
16. Support for OpenGL ES Programming (1/2)
• What is important in OpenGL
•
Need to keep up a certain amount of frame rate
low frame rate
long elapsed time
16
Check unnecessary/erroneous
state changing
17. Support for OpenGL ES Programming (2/2)
• What is important in OpenGL
•
Error handling per frame
Failed api existed
Error code
Error Description
17
18. Support for network programming (1/2)
• The pain point of network program
•
Additional problems in network environment
Destination address
Connection failed
Connection state
Check error code
18
19. Support for network programming (2/2)
• The pain point of network program
•
The miss-match of the protocol
Check the protocol
order
19
Check the payload
contents
22. The Tizen SDK Dynamic Analyzer supports...
•
Timeline Chart
•
•
•
CPU load, Heap/Memory usage, Process size, UI event, File usage
Tizen application’s lifetime, Custom chart
Summary:
•
•
Failed API, Leak, Function profiling, Warning
Analysis components
•
•
Thread: thread & synchronization analysis
•
•
File: file lifetime analysis
UI: Tizen UI Controls, Scene Transition History
Others
•
•
Record & replay, Save the trace
•
Source code link
•
Range based analysis
•
•
Call trace, Callstack
Screenshot
New in Tizen 3.0
•
•
OpenGL ES Analysis: Frame rate, Context Navigation
•
No more build option
•
Scheduling & System call information
•
22
Network Analysis: Connection state, Transmitted data
Support Tizen service/hybrid applications, platform libary, multi-process
23. The Next Dynamic Analyzer
•
To make your program better
•
•
The Dynamic Analyzer is indispensable
To be continued…
•
Advanced Thread Analysis
Auto detecting critical path
Concurrency level information
Thread load balancing
Deadlock detection
•
Advanced OpenGL Analysis
Multi-thread/multi-context profiling
Pause and Dump
Auto detecting of wasteful and inefficient 3D operation
•
•
Support more for debugging
•
23
Detailed profiling of Application’s launch time
And more …