• Home
Name Date Size #Lines LOC

..--

build/12-May-2024-102101

prebuilts/12-May-2024-976907

src/12-May-2024-16,15912,935

test/12-May-2024-8,0495,734

.gitignoreD12-May-2024113 87

.gnD12-May-2024626 1513

BUILD.gnD12-May-2024652 1715

README.mdD12-May-20248.8 KiB296285

build.shD12-May-20241.7 KiB5640

changelog.txtD12-May-2024352 1510

compile_trace_streamer.mdD12-May-20243.2 KiB9587

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.md296```