Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
build/ | 12-May-2024 | - | 102 | 101 | ||
prebuilts/ | 12-May-2024 | - | 976 | 907 | ||
src/ | 12-May-2024 | - | 16,159 | 12,935 | ||
test/ | 12-May-2024 | - | 8,049 | 5,734 | ||
.gitignore | D | 12-May-2024 | 113 | 8 | 7 | |
.gn | D | 12-May-2024 | 626 | 15 | 13 | |
BUILD.gn | D | 12-May-2024 | 652 | 17 | 15 | |
README.md | D | 12-May-2024 | 8.8 KiB | 296 | 285 | |
build.sh | D | 12-May-2024 | 1.7 KiB | 56 | 40 | |
changelog.txt | D | 12-May-2024 | 352 | 15 | 10 | |
compile_trace_streamer.md | D | 12-May-2024 | 3.2 KiB | 95 | 87 |
README.md
1# trace_streamer工具说明 2trace_streamer工具可以将系统离线trace文件解析并转为db,此工具支持基于文本的trace和基于proto的trace。 3关于trace解析工具的使用说明: 4trace_streamer.exe trace文件路径名 -e 导出db路径名.db 5此命令可以将trace文件转为db 6本应用支持在ohos, linux, windows, mac使用。 7关于db文件的说明: 8使用db查看工具查看stat表,可以浏览当前数据一共有多少类数据,各类数据都收到多少条,数据是否正常等情况。在meta表会记录数据库导出时的一些系统信息,比如导入和导出的文件全路径,解析时间等信息。 9meta表可以选择不导出(有些情况下会暴露系统敏感信息),在导出时添加 -nm选项即可。 10在数据导出之后,会在本地目录下生成一个trace_streamer.log文件,在导出db的目录下生成一个数据库文件同名,.db.ohos.ts后缀的文件 11文件内容如下: 12时间戳:执行结果(数字) 13应用运行时间 14 15执行结果解释如下:0 代表执行成功 1 表示输入文件不匹配, 2 表示解析错误, 3其他错误 16你也可以执行如下命令查看应用帮助 17./trace_streamer --help 18-i 选项可查看应用支持的事件源和具体的事件名列表 19# trace_streamer支持的事件解析 20本工具支持基于文本的trace(# TRACE)和基于proto的二进制日志文件的解析,支持的事件列表如下: 21## ftrace事件 22``` 23binder_transaction 24binder_transaction_received 25binder_transaction_alloc_buf 26binder_transaction_lock 27binder_transaction_locked 28binder_transaction_unlock 29sched_switch 30task_rename 31task_newtask 32tracing_mark_write 33print 34sched_wakeup 35sched_waking 36cpu_idle 37cpu_frequency 38suspend_resume 39workqueue_execute_start 40workqueue_execute_end 41clock_set_rate 42clock_enable 43clock_disable 44clk_set_rate 45clk_enable 46clk_disable 47sys_enter 48sys_exit 49regulator_set_voltage 50regulator_set_voltage_complete 51regulator_disable 52regulator_disable_complete 53ipi_entry 54ipi_exit 55irq_handler_entry 56irq_handler_exit 57softirq_raise 58softirq_entry 59softirq_exit 60sched_wakeup_new 61sched_process_exit 62trace_event_clock_sync 63``` 64## 内存事件 65``` 66mem.vm.size 67mem.rss 68mem.rss.anon 69mem.rss.file 70mem.rss.schem 71mem.swap 72mem.locked 73mem.hwm 74mem.oom_score_adj 75``` 76## 系统内存事件 77``` 78sys.mem.unspecified 79sys.mem.total 80sys.mem.free 81sys.mem.avaiable 82sys.mem.buffers 83sys.mem.cached 84sys.mem.swap.chard 85sys.mem.active 86sys.mem.inactive 87sys.mem.active.anon 88sys.mem.inactive.anon 89sys.mem.active_file 90sys.mem.inactive_file 91sys.mem.unevictable 92sys.mem.mlocked 93sys.mem.swap.total 94sys.mem.swap.free 95sys.mem.dirty 96sys.mem.writeback 97sys.mem.anon.pages 98sys.mem.mapped 99sys.mem.shmem 100sys.mem.slab 101sys.mem.slab.reclaimable 102sys.mem.slab.unreclaimable 103sys.mem.kernel.stack 104sys.mem.page.tables 105sys.mem.commit.limit 106sys.mem.commited.as 107sys.mem.vmalloc.total 108sys.mem.vmalloc.used 109sys.mem.vmalloc.chunk 110sys.mem.cma.total 111sys.mem.cma.free 112``` 113## 系统虚拟内存事件 114``` 115sys.virtual.mem.unspecified 116sys.virtual.mem.nr.free.pages 117sys.virtual.mem.nr.alloc.batch 118sys.virtual.mem.nr.inactive.anon 119sys.virtual.mem.nr.active_anon 120sys.virtual.mem.nr.inactive.file 121sys.virtual.mem.nr.active_file 122sys.virtual.mem.nr.unevictable 123sys.virtual.mem.nr.mlock 124sys.virtual.mem.anon.pages 125sys.virtual.mem.nr.mapped 126sys.virtual.mem.nr.file.pages 127sys.virtual.mem.nr.dirty 128sys.virtual.mem.nr.writeback 129sys.virtual.mem.nr.slab.reclaimable 130sys.virtual.mem.nr.slab.unreclaimable 131sys.virtual.mem.nr.page_table.pages 132sys.virtual.mem.nr_kernel.stack 133sys.virtual.mem.nr.overhead 134sys.virtual.mem.nr.unstable 135sys.virtual.mem.nr.bounce 136sys.virtual.mem.nr.vmscan.write 137sys.virtual.mem.nr.vmscan.immediate.reclaim 138sys.virtual.mem.nr.writeback_temp 139sys.virtual.mem.nr.isolated_anon 140sys.virtual.mem.nr.isolated_file 141sys.virtual.mem.nr.shmem 142sys.virtual.mem.nr.dirtied 143sys.virtual.mem.nr.written 144sys.virtual.mem.nr.pages.scanned 145sys.virtual.mem.workingset.refault 146sys.virtual.mem.workingset.activate 147sys.virtual.mem.workingset_nodereclaim 148sys.virtual.mem.nr_anon.transparent.hugepages 149sys.virtual.mem.nr.free_cma 150sys.virtual.mem.nr.swapcache 151sys.virtual.mem.nr.dirty.threshold 152sys.virtual.mem.nr.dirty.background.threshold 153sys.virtual.mem.vmeminfo.pgpgin 154sys.virtual.mem.pgpgout 155sys.virtual.mem.pgpgoutclean 156sys.virtual.mem.pswpin 157sys.virtual.mem.pswpout 158sys.virtual.mem.pgalloc.dma 159sys.virtual.mem.pgalloc.normal 160sys.virtual.mem.pgalloc.movable 161sys.virtual.mem.pgfree 162sys.virtual.mem.pgactivate 163sys.virtual.mem.pgdeactivate 164sys.virtual.mem.pgfault 165sys.virtual.mem.pgmajfault 166sys.virtual.mem.pgrefill.dma 167sys.virtual.mem.pgrefill.normal 168sys.virtual.mem.pgrefill.movable 169sys.virtual.mem.pgsteal.kswapd.dma 170sys.virtual.mem.pgsteal.kswapd.normal 171sys.virtual.mem.pgsteal.kswapd.movable 172sys.virtual.mem.pgsteal.direct.dma 173sys.virtual.mem.pgsteal.direct.normal 174sys.virtual.mem.pgsteal_direct.movable 175sys.virtual.mem.pgscan.kswapd.dma 176sys.virtual.mem.pgscan_kswapd.normal 177sys.virtual.mem.pgscan.kswapd.movable 178sys.virtual.mem.pgscan.direct.dma 179sys.virtual.mem.pgscan.direct.normal 180sys.virtual.mem.pgscan.direct.movable 181sys.virtual.mem.pgscan.direct.throttle 182sys.virtual.mem.pginodesteal 183sys.virtual.mem.slabs_scanned 184sys.virtual.mem.kswapd.inodesteal 185sys.virtual.mem.kswapd.low.wmark.hit.quickly 186sys.virtual.mem.high.wmark.hit.quickly 187sys.virtual.mem.pageoutrun 188sys.virtual.mem.allocstall 189sys.virtual.mem.pgrotated 190sys.virtual.mem.drop.pagecache 191sys.virtual.mem.drop.slab 192sys.virtual.mem.pgmigrate.success 193sys.virtual.mem.pgmigrate.fail 194sys.virtual.mem.compact.migrate.scanned 195sys.virtual.mem.compact.free.scanned 196sys.virtual.mem.compact.isolated 197sys.virtual.mem.compact.stall 198sys.virtual.mem.compact.fail 199sys.virtual.mem.compact.success 200sys.virtual.mem.compact.daemon.wake 201sys.virtual.mem.unevictable.pgs.culled 202sys.virtual.mem.unevictable.pgs.scanned 203sys.virtual.mem.unevictable.pgs.rescued 204sys.virtual.mem.unevictable.pgs.mlocked 205sys.virtual.mem.unevictable.pgs.munlocked 206sys.virtual.mem.unevictable.pgs.cleared 207sys.virtual.mem.unevictable.pgs.stranded 208sys.virtual.mem.nr.zspages 209sys.virtual.mem.nr.ion.heap 210sys.virtual.mem.nr.gpu.heap 211sys.virtual.mem.allocstall.dma 212sys.virtual.mem.allocstall.movable 213sys.virtual.mem.allocstall.normal 214sys.virtual.mem.compact_daemon.free.scanned 215sys.virtual.mem.compact.daemon.migrate.scanned 216sys.virtual.mem.nr.fastrpc 217sys.virtual.mem.nr.indirectly.reclaimable 218sys.virtual.mem.nr_ion_heap_pool 219sys.virtual.mem.nr.kernel_misc.reclaimable 220sys.virtual.mem.nr.shadow_call.stack_bytes 221sys.virtual.mem.nr.shmem.hugepages 222sys.virtual.mem.nr.shmem.pmdmapped 223sys.virtual.mem.nr.unreclaimable.pages 224sys.virtual.mem.nr.zone.active.anon 225sys.virtual.mem.nr.zone.active.file 226ys.virtual.mem.nr.zone.inactive_anon 227sys.virtual.mem.nr.zone.inactive_file 228sys.virtual.mem.nr.zone.unevictable 229sys.virtual.mem.nr.zone.write_pending 230sys.virtual.mem.oom.kill 231sys.virtual.mem.pglazyfree 232sys.virtual.mem.pglazyfreed 233sys.virtual.mem.pgrefill 234sys.virtual.mem.pgscan.direct 235sys.virtual.mem.pgscan.kswapd 236sys.virtual.mem.pgskip.dma 237sys.virtual.mem.pgskip.movable 238sys.virtual.mem.pgskip.normal 239sys.virtual.mem.pgsteal.direct 240sys.virtual.mem.pgsteal.kswapd 241sys.virtual.mem.swap.ra 242sys.virtual.mem.swap.ra.hit 243``` 244 245# trace_streamer开发环境搭建和编译运行指引 246 247本应用使用gn作为构建工具,支持在linux环境同时编译linux,windows和mac使用QtCreator作为开发IDE 248## 1、开发环境 249ubuntu使用vscode,windows和mac使用QtCreator 250## 2、参与版本编译 251在上级目录的ohos.build文件中,module_list列表中添加 252``` 253"//developtools/profiler/trace_analyzer/src:trace_streamer_source" 254``` 255在test_list列表中添加"//developtools/profiler/trace_analyzer/test:unittest"来编译UT 256在根目录third_party/sqlite/BUILD.gn文件中,在ohos_shared_library("sqlite")选型中添加 257``` 258visibility += [ "//developtools/profiler/trace_analyzer/*" ] 259``` 260去除 261``` 262cflags_c = [ 263 "-fvisibility=hidden", 264 ] 265``` 266# 对外部的依赖 267本应用依赖与sqlite,protobuf(htrace解析部分依赖) 268 269本应用同时依赖于//developtools/profiler/protos/types/plugins/ftrace_data目录下的部分对象ftrace_data_cpp编译目标来支持htrace的解析 270 271ts.gni文件用来区别独立编译和build目录下的ohos.gni用来支持独立编译,开发者需自行编译相关依赖 272 273### 2.1、 编译linux版应用 274在根目录下执行相关命令进行编译 275 276### 2.2、编译Windows版和Mac应用 277在项目目录下有pro文件,为QtCreator的工程文件,但部分内容赖在于上面所添加的外部依赖,如果要编译相关平台应用,开发者需自行补充相关工程文件,或者在论坛留言 278 279### 2.3、开始编译 280 281```sh 282参与版本编译即可 283``` 284 285### 3、运行程序 286#### 3.1 linux系统 287 288```sh 289# Linux 主机可以直接执行: 290out/linux/trace_streamer 291``` 292#### 3.2 windows系统和Mac系统 293``` 294使用QtCreator打开trace_streamer.pro文件,配置默认编译器,执行编译命令(ctrl + b)即可。 295具体方法可参考《如何独立编译trace_streamer.md》 296```