etl文件性能分析
文章目录
- 1、简单分析
- 2、进程卡慢分析
- 3、文件卡慢分析
1、简单分析
1、打开抓取的etl文件
2、加载符号
3、通过CPU详细记录(CPU Usage(Precise)),找出需要观察的进程的线程ID
——添加NewThreadStack 和 ReadyThreadStack列
列顺序是:
根据Count列,从消耗最高的开始找。展开NewThreadStack/ReadyThreadStack列,直到看到我们的模块,查看ReadyProcess列中的线程id
4、打开CPU采样记录(CPU Usage (Sampled)),查看堆栈调用及时间消耗
添加Stack列,找到3、中的线程id并展开,查找模块,主要看Count列,数值高的有不平均的需注意
2、进程卡慢分析
进程启动时卡慢 或 启动进程后卡慢定位
1、找到要分析的进程,选择CPU详细记录(CPU Usage(Precise))
2、添加TimeSinceList列
3、在进程中查找TimeSinceList列值最大的ReadyProcess,这个就是消耗时间最多的
4、添加ReadyThreadStack列
5、打开NewThreadStack列,根据3、中的ReadyThreadId值在NewThreadStack列中查找进程对应的线程id并展开调用栈
6、查看到对应的ReadyProcess列、ReadyThreadId列、ReadyThreadStack列的值
7、根据6、中的ReadyThreadId列值在NewThreadStack列中查找进程对应的线程id并展开调用栈
8、Readyingprocess是Idle,一般就是调用了sleep,等待sleep完成了。
3、文件卡慢分析
1、左侧选择Storage项,双击File I/O
2、在Analysis窗口选择Count by Process,Thread,Type
3、添加File Name列
找到对应的文件名,查看process列以及Thread列,这就是操作该文件的进程名、进程id和线程id
4、根据3、中的信息打开CPU详细记录(CPU Usage(Precise)),找到对应的进程名的进程
5、添加TimeSinceLast 列,并按TimeSinceLast从高到低排序,对应线程最上报的NewThreadStack就是最耗时的操作,展开追踪,确认是ReadyProcess列对应的进程调用
6、根据5、中的ReadyThreadId以及ReadyThreadStack中的调用栈查看代码
7、若6、中的代码耗时不大,则进一步查看展开6、中的ReadyThreadId对应的调用栈,并按TimeSinceLast从高到低排序,根据调用关系炸开对应的堆栈,直至ReadyProcess列、ReadyThreadId列存在值,即看下调用方
8、若还是没有什么耗时大的操作,则打开CPU采样记录(CPU Usage (Sampled))查看下3、中的进程对应的线程的堆栈