如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。
例如首先从os上利用top命令找到当前占用cpu资源最高的一个进程的PID号9999;
然后在数据库中根据PID号找到相应的sid和serial#
select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid='9999'
然后通过exec dbms_monitor.session_trace_enable(sid,serial#)开启trace;
最后利用tkprof察看trace输出。
开启Trace文件输出
可以通过以下方法开启Trace文件输出(需要ALTER SESSION系统权限):
1) alter session/system set sql_trace=true
2) exec dbms_monitor.session_trace_enable/dbms_monitor.database_trace_enable
3) alter session set events '10046 trace name context forever, level 12'
Trace文件的位置
1.TraceView
官方说明文档:
https://developer.android.google.cn/studio/profile/cpu-profiler
android CPU profiler
CPU profiler可以实时检查应用的CPU使用率和线程activity,并记录函数跟踪,以便于您可以优化和调试您的应用程序.
Flame Chart如果出现问题 颜色也会加深
2.systrace
简介:
systrace是Android4.1版本之后推出的,对系统Performance分析的工具。systrace的功能包括跟踪系统I/O *** 作,内核工作队列,CPU负载以及Android各个子系统的运行状况等。
主要由三部分构成:
1.内核部分
systrace采用了linux Kernel的ftrace功能,所以如果要使用systrace的话,必须开启Kernel和ftrace相关的模块.
2.数据采集部分
Android中定义了一个trace类,应用程序可以使用该类把统计信息输出给trace,同时,android有一个atrace程序,它可以从ftrace中读取统计信息然后交给数据分析工具来处理.
3.数据分析工具
Android提供一个systrace.py用来配置数据采集的方法(如采集数据的标签,输出文件名等)和收集ftrace统计数据并生成一个结果网页文件供用户查看。
简单的说,当机器以60帧/秒显示,用户会感知机器流畅。如果出现显示时丢帧的情况,就需要知道系统在做什么?Systrace是用来收集系统和应用的数据信息和一些中间生成数据的细节,在Android4.1和4.2系统之后出现。Systrace在分析一些显示问题上特别有用,如应用画图慢,显示动作或者动画时变形。
抓取systrace
进入本地Android/Sdk/platform-tools/systrace目录下,执行python systrace.py view --time = 10
python脚本的option
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)