Trace解析能力增强主要是提高Trace的解析能力。
焦点问题切割是将现有的trace加载到界面时,对指定时间进行框选,截取框选时间范围内的trace数据通过跳转的方式去打开新的trace界面,新界面的trace数据就是按照这段时间范围去切割的。如下图框选一段时间范围,点击右上方的小剪刀图标对框选时间范围数据进行剪切。
超大trace分段打开是对现有配置抓取的同一种时钟源数据源的。也就是配置命令下发的抓取有效。Htrace数据按照端侧切割的大小分成多个文件,并将不能切割的hiperf、ebpf、arkts的数据单独存储。IDE通过将这几种源文件数据存储在IndexedDB,并调用trace streamer去进行切割数据,并在IDE侧过滤筛选出切割的数据进行展示。
由于大文件切割的数据是保存在浏览器的IndexedDb中,默认存储在系统盘,所以需要修改用户目录数据存放位置。
D:\deskTop\msedge.exe.lnk --user-data-dir=D:\Edgedata D:\deskTop\msedge.exe.lnk 浏览器的exe执行文件位置(或者浏览器exe的快捷方式位置) --user-data-dir=D:\Edgedata 指定用户目录数据位置,本地除系统盘外的位置都可以,内存尽量大一点
错误:D:\desk Top\Microsoft Edge.exe.lnk --user-data-dir=D:\Edgedata 正确:D:\deskTop\MicrosoftEdge.exe.lnk --user-data-dir=D:\Edgedata
edge浏览器: edge://version/
Long Trace Mode: 超大trace抓取模式。
Single file max size: trace文件分割的大小。
本地导入超大trace是导入文件夹,将该文件夹中所有文件导入。如下图从Open long trace file入口导入。
本地导入以后,点击右上方的切页图标可以切页。
已打开的trace界面,增加convert to systrace按钮,支持将htrace和row trace转为systrace。
trace_streamer_shell
–q可以直接将sql查询结果显示在命令行里,如下图bytrace.ftrace是需要解析的文件,a.txt是sql语句。
trace_streamer_shell
–m可以直接将metric接口的查询结果显示在命令行里,如下图bytrace.ftrace是需要解析的文件,trace_stats是metric接口名。
挂起(hang)是离散用户交互中的明显延迟,并且它几乎总是主线程上长时间运行工作的结果。 仅当主线程在大约 50 毫秒到 100 毫秒或更长时间内无响应时,离散交互延迟才会开始变得明显。
进入Probes config页面,打开Record mode开关,勾选notification可以抓取Hangs数据(此选项为默认勾选)。
解析时需要打开Flags页面的Hangs Detection开关(Disabled切换为Enabled)。
将抓取的trace文件导入到smartperf工具中,查看挂起的情况。
点击Hangs Detection开关下的选项可以选择展示的不同类型。
根据duration大小将hang划分为4个type,即Instant、Circumstantial、Micro、Severe。4个type分别对应时长为 33ms<d<100ms、100ms≤d<250ms、250ms≤d<500ms、500ms≤d。
颜色按type由浅及深:Instant蓝色、Circumstantial黄色、Micro橙色、Severe红色。
选择不同类型展示出的泳道会不一样: 选择Instant会显示Instant、Circumstantial、Micro、Severe,如图一; 选择Circumstantial则显示Circumstantial、Micro、Severe,如图二,以此类推。
图一
图二
可以对hangs的各个slice进行点选,点选后在最下方的弹出层中会展示点选数据的统计的tab页。点击Hang type右侧蓝色箭头,会跳转到该hang对应的trace点。
Trace点的name依次对应tab页的Sender tid、Send time、Expect handle time、Task name/ID、Prio、Sender。
StartTime(Relative):开始时间(相对时间)。
StartTime(Absolute):开始时间(绝对时间)。
Duration:持续时间。
Hang Type:挂起类型。
Sender tid:发送event的线程ID。
Send time:事件发送时间。
Expect handle time:期望事件开始时间。
Task name/Id:事件名/事件ID。
Prio:优先级。
Sender:发送者。
框选Hangs的泳道图,展示Hangs的tab页,右侧第一个下拉框可以选择类型,也能根据process ,sender去搜索。
StartTime:开始时间。
Duration:持续时间。
Hang Type:挂起类型。
Process:进程名。
Sender tid:发送event的线程ID。
Send time:事件发送时间。
Expect handle time:期望事件开始时间。
Task name/Id:事件名/事件ID。
Prio:优先级。
Sender:发送者。
框选Hangs的泳道图,展示Summary的tab页。
Type/Process/Hang:根据类型显示挂起情况。
Count:各类型的数量。
为了方便查看hangs数据,对不同进程下的hangs泳道进行了归一化处理