背景
因QNX侧 QVM的分析CPU负载问题在android侧使用trace无法分析,故QNX侧的CPU负载问题需要用到tracelogger日志分析。
例如:使用hogs -l 42|grep qvm 中发现qvm的cpu负载 30%多
但是使用trace日志在Perfetto又查不到qvm信息,则需要抓取qnx的tracelogger 并转换成 perfetto数据才能看到qvm的线程
抓trace命令
1.抓取
命令
adb shell "atrace -o /sdcard/systrace.trace -z -b 50000 -t 60 am wm view res ss gfx view hal bionic pm sched irq freq idle disk sync binder_driver binder_lock memreclaim dalvik input"
50000:缓冲区的大小,单位是消息数。
30:抓取时间,单位是秒。
1.导出trace
adb pull /sdcard/systrace.trace xxx(文件存放路径)
1. QNX抓tracelogger日志
采集15秒的traceLogger日志-tracelogger -f /data/trace_15.kev -s 15 -c
根据 QNX 7.1 文档,tracelogger 命令的参数含义如下:
- -f /data/trace_15.kev:指定输出文件的路径和名称。在这个例子中,跟踪日志将被保存到 /data/trace_15.kev 文件中。
- -s 15:设置跟踪会话的持续时间为 15 秒。tracelogger 将在这段时间内收集系统的跟踪信息。
- -c:以循环模式运行 tracelogger。这意味着当指定的输出文件(在这个例子中是 /data/trace_15.kev)填满后,tracelogger 会回绕到文件的开始处并覆盖旧的跟踪信息。这允许持续收集跟踪数据而不会耗尽磁盘空间,但同时也意味着最早的跟踪数据可能会被新数据覆盖。
简而言之,这个命令配置了 tracelogger 以循环模式收集 15 秒的系统跟踪信息,并将这些信息保存到 /data/trace_15.kev 文件中。
例如在QNX的终端执行:tracelogger -f /data/trace_15.kev -s 15 -c
2. QNX导出tracelogger日志到Win
通过网线形式使用ssh将qnx的日志通过scp导出到window
ssh -L 172.30.1.50:22:172.30.10.4:22 root@172.30.1.1 -p 22
scp -r root@172.30.1.50:/data/trace_15.kev ./
首先,通过 SSH 建立了一个本地端口转发,将本地
172.30.1.50:22 端口转发到远程 172.30.10.4:22 端口。
然后,使用 SCP 命令从
172.30.1.50 的 /data/trace_15.kev 路径复制文件或目录到本地当前目录。
3.QNX IDE查看tracelogger
qnx-dev.tar/qnx-dev/qnx/ide7.0$ ./qde
1.随便新建一个qnx工程
2.将trace.kev拷贝到工程目录,双击文件