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