• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# TraceStreamer数据表概述
2TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据,也可在理解TraceStreamer生成的数据库的基础上,在TraceStreamer的交互模式或者Smartperf的数据库查询模式下,使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述,给用户使用SQL查询系统跟踪数据提供帮助。
3
4## TraceStreamer输出的数据表分类
5* 常规泳道图数据表
6![GitHub Logo](../figures/db_common.png)
7* native memory数据源相关表
8![GitHub Logo](../figures/db_native_memory.png)
9* perf相关数据表
10![GitHub Logo](../figures/db_hiperf.png)
11* hisysevent相关数据表
12![GitHub Logo](../figures/db_hisys_event.png)
13## TraceStreamer输出数据库包含以下表格
14| 表名称 |作用|
15| ----          |----      |
16| app_name | 记录HiSysEvent事件的事件名与IDE部分事件的字段名为APPNAME中存放的相关信息的映射关系 |
17| args | 记录方法参数集合|
18| bio_latency_sample | 记录IO操作相关方法调用,及调用栈数据|
19| callstack | 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号|
20| clk_event_filter | 记录时钟相关的信息|
21| clock_event_filter | 此结构用来维护时钟事件,cpu与唯一的ID做关联|
22| cpu_measure_filter | cpu事件过滤器表|
23| cpu_usage | 记录CPU使用率事件|
24| data_dict | 记录常用的字符串,将字符串和索引关联,降低程序运行的内存占用,用作辅助数据|
25| data_type | 记录数据类型和typeId的关联关系|
26| diskio | 记录磁盘读写数据事件|
27| ebpf_callstack | 记录了采样相关信息|
28| file_system_samp | 记录了调用栈的相关信息|
29| hidump | 记录FPS(Frame Per Second)数据|
30| hisys_event_measure | 记录了HiSysEvent事件相关数据,目前HiSysEvent事件包括了异常事件,IDE事件,器件状态事件 |
31| instant |  记录Sched_waking, sched_wakeup事件, 用作ThreadState表的上下文使用 |
32| irq | 记录中断相关事件|
33| live_process | 记录了一些实时的进程中执行的一些数据|
34| log | 记录hilog打印日志数据|
35| measure_filter | 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录|
36| meta | 记录执行解析操作相关的基本信息|
37| native_hook | 记录堆内存申请与释放相关的数据|
38| native_hook_frame | 记录堆内存申请与释放相关的调用栈|
39| network | 抓取网络信息传输时产生的一些相关信息|
40| paged_memory_sample | 记录内存操作相关方法调用,及调用栈数据|
41| perf_callchain | 记录Hiperf采样数据的调用栈信息|
42| perf_files | 记录Hiperf工具采集到的函数符号表和文件名|
43| perf_report | 记录Hiperf工具采集数据时的配置信息。包括|抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称|
44| perf_sample | 记录Hiperf工具的采样信息|
45| perf_thread | 记录Hiperf工具采集到的进程和线程数据|
46| process | 记录所有的进程信息|
47| process_filter | 过滤进程|
48| process_measure | 保存进程的所有计量值|
49| process_measure_filter | 将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id|
50| raw | 此数据结构主要作为ThreadState的上下文使用,这张表是sched_waking,sched_wakup, cpu_idle事件的原始记录|
51| sched_slice | 此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录|
52| smaps | 记录进程的内存消耗的相关信息采样|
53| stat | 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解|
54| symbols | 记录系统调用名称和其函数指针的对应关系,trace中用addr来映射function_name来节省存储空间|
55| syscall | 记录用户空间函数与内核空间函数相互调用记录|
56| sys_event_filter | 记录所有的filter|
57| sys_mem_measure | 记录了所有的系统内存相关的测量信息|
58| thread | 记录所有的线程信息|
59| thread_filter | 过滤线程|
60| thread_state | 记录线程状态信息|
61| trace_range | 记录ftrace数据与其他类型数据的时间交集,供前端展示数据时使用|
62| clock_snapshot | 时钟号和时间,时钟名的映射表|
63| datasource_clockid | 数据源和时钟号的映射表|
64## 表与事件来源
65|        表名称        |   事件源     |      插件名       |          备注         |
66|         ----         |    ----      |         ----      |           ----        |
67|app_name              |    -         |hisysevent-plugin  |JSON数据源             |
68|args                  |    -         |ftrace-plugin      |配合callstack使用      |
69|callstack             |    -         |ftrace-plugin      |异步或非异步的调用     |
70|cpu_measure_filter    |    -         |ftrace-plugin      |cpu跟踪器,cpu频率等   |
71|cpu_usage             |    -         |cpu-plugin         |cpu使用率              |
72|data_dict             |  通用的      |    -              |所有字符串的记录       |
73|data_type             |  通用的      |    -              |辅助表                 |
74|file_system_callstack |    -         |    -              |ebpf文件系统           |
75|file_system_sample    |    -         |    -              |ebpf文件系统           |
76|hidump                |    -         |hidump-plugin      |FPS数据                |
77|hisys_event_measure   |    -         |hisysevent-plugin  |JSON数据源             |
78|instant               |    -         |ftrace-plugin      |waking和wakeup事件     |
79|irq                   |    -         |ftrace-plugin      |记录中断事件           |
80|live_process          |    -         |process-plugin     |Monitor数据            |
81|network               |    -         |network-plugin     |Monitor数据            |
82|diskio                |    -         |diskio-plugin      |Monitor数据            |
83|log                   |    -         |hilog-plugin       |系统日志               |
84|measure               |  通用的      |    -              |系统中的计量值(数值型)|
85|measure_filter        |  通用的      |    -              |计量值的查询辅助表      |
86|meta                  |  通用的      |    -              |记录解析现场数据(解析时间,数据类型,解析工具等)|
87|native_hook           |    -         |nativehook/hookdaemon |内存数据            |
88|native_hook_frame     |    -         |nativehook/hookdaemon |内存数据            |
89|perf_callchain        |    -         |perf-plugin        |perf数据(非插件模式) |
90|perf_files            |    -         |    -              |perf数据(非插件模式) |
91|perf_report           |    -         |    -              |perf数据(非插件模式) |
92|perf_sample           |    -         |    -              |perf数据(非插件模式) |
93|perf_thread           |    -         |    -              |perf数据(非插件模式) |
94|process               |    -         |ftrace-plugin      |进程信息               |
95|process_filter        |    -         |ftrace-plugin      |进程计量表的辅助表     |
96|process_measure       |    -         |ftrace-plugin      |进程内存               |
97|process_measure_filter|    -         |ftrace-plugin      |process_measure的辅助表|
98|raw                   |    -         |ftrace-plugin      |线程唤醒信息           |
99|sched_slice           |    -         |ftrace-plugin      |配合现场状态表使用,dsched_switch的原始数据|
100|smaps                 |    -         |memory-plugin      |进程的内存消耗         |
101|stat                  |  通用的      |    -              |记录不同种类数据的数据量|
102|symbols               |    -         |ftrace-plugin      |符号表(地址到字符串的映射)|
103|syscall               |    -         |ftrace-plugin      |系统调用 sys_enter/exit|
104|sys_event_filter      |    -         |ftrace-plugin      |                       |
105|sys_mem_measure       |    -         |memory-plugin      |系统内存               |
106|thread                |  通用的      |    -              |线程信息(常用)        |
107|thread_state          |  通用的      |ftrace-plugin      |线程调度图(常用)      |
108|trace_range           |  通用的      |    -              |trace数据的时长         |
109|thread_filter         |  通用的      |ftrace-plugin      |线程计量跟踪表(比较少用)|
110|clock_snapshot         |  通用的      |通用的      |时钟号和时间,时钟名的映射表|
111|datasource_clockid         |  通用的      |通用的      |数据源和时钟号的映射表|
112
113## ___表格关系图___
114---
115### 进程表与线程表关系
116当一个进程或者线程结束后,系统可能再次将该进程号或者线程号分配给其他进程或者线程,造成一个进程号或线程号代表多个进程或线程的情况。
117Process和Thread表中的id字段可以唯一标识进程和线程。process表中的id在其他表中用作ipid字段。thread表中的id在其他表中用作itid字段。
118thread表通过ipid字段关联process表的id字段,可以查询线程归属进程。
119![GitHub Logo](../figures/process_thread.png)
120### 查询举例
121已知pid = 123,查看当前进程下的所有线程信息,可以使用如下SQL语句:
122```select thread.* from thread, process where process.pid = 123 and thread.ipid = process.id```
123
124### 线程表与线程运行状态表关系图
125thread_state表记录所有线程的运行状态信息,包含ts(状态起始时间),dur(状态持续时间),cpu, itid, state(线程状态)。 thread表的id字段与thread_state表的itid字段相关联。
126![GitHub Logo](../figures/thread_state.png)
127### 查询举例
128已知tid = 123, 查看当前线程的所有运行状态信息,可以使用如下SQL语句:
129```select thread_state.* from thread, thread_state where thread.tid = 123 and thread.id = thread_state.itid```
130
131### 堆内存数据变化表关系图
132native_hook表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook表通过ipid和itid字段分别与process和thread表的id字段关联,通过callChainId与native_hook_frame表的callChainId字段相关联。
133native_hook表字段解释如下:
134    callChainId: 唯一标识一次堆内存申请或释放, 通过与native_hook_frame表关联可以拿到当前申请或释放的函数调用堆栈。
135    addr: 堆内存申请/释放的地址
136    native_hook_size: 堆内存申请/释放的大小
137native_hook_frame表记录内存申请/释放的调用堆栈。通过callChainId区分一组调用堆栈,depth为堆栈深度,depth为0时,表示当前行为栈顶数据。
138![GitHub Logo](../figures/dump_and_mem.png)
139### 查询举例
140- 已知tid = 123, 查看当前线程的所有堆内存变化信息,可以使用如下SQL语句:
141```select native_hook.* from thread, native_hook where thread.tid = 123 and thread.id = native_hook.itid```
142- 已知callchainid = 0, 查看当前内存变化调用堆栈
143```select * from native_hook_frame where callChainId = 0```
144
145### 日志表与进程线程表关系图
146log表记录日志信息。可以根据seq字段的连续性,来判断是否存在日志丢失的情况。
147![GitHub Logo](../figures/log.png)
148### 查询举例
149已知tid = 123, 查看当前线程的所有error级别的日志,可以使用如下SQL语句:
150```select * from log where tid = 123 and level = "error"```
151
152### perf表之间关系图
153perf_report:此表记录Hiperf工具采集数据时的配置信息。
154perf_thread:此表记录hiperf采集到的进程和线程数据。
155perf_sample:此表中记录Hiperf工具的采样信息。sample_id唯一表识一次采样记录,与perf_callchain表中的sample_id字段相关联。thread_id为线程号。与perf_thread表中的thread_id字段相关联。event_type_id为当前采样的事件类型id,与perf_report表中的id字段相关联。
156perf_callchain:此表格记录的是调用栈信息。
157Perf_files:此表格主要存放着获取到的函数符号表和文件信息。file_id唯一表识一个文件,与perf_callchain表中的file_id字段相关联。
158![GitHub Logo](../figures/perf.png)
159### 查询举例
160- 已知同步后的时间戳为28463134340470,查询采样数据
161```select * from perf_sample where timestamp_trace = 28463134340470```
162
163- 已知同步后的时间戳为28463134340470,查询采样数据对应的的调用栈信息
164```select A.* from perf_callchain as A, perf_sample as B where B.timestamp_trace = 28463134340470 and A.sample_id = B.sample_id```
165
166已知同步后的时间戳为28463134277762,查询采样数据的函数名及文件路径
167```select A.*, B.name, C.path from perf_sample as A, perf_callchain as B, perf_files as C where A.timestamp_trace = 28463134277762 and B.sample_id = A.sample_id and B.callchain_id = 0 and B.file_id = C.file_id and C.serial_id = 0```
168
169已知线程号为6700,查询所有的采样记录
170```select * from perf_sample where thread_id = 6700```
171
172已知进程号为7863,查询所有的采样记录
173```select A.* from perf_sample as A, perf_thread as B where B.process_id = 7863 and A.thread_id = B.thread_id```
174
175查询所有采样对应的事件类型
176```select A.*, B.report_value from perf_sample as A, perf_report as B where A.event_type_id = B.id```
177
178## TraceStreamer输出数据库表格详细介绍
179### app_name表
180#### 表结构
181| Columns Name | SQL TYPE |
182|----          |----      |
183|id            |INT       |
184|flag          |INT       |
185|app_name      |INT       |
186|app_key       |INT       |
187#### 表描述
188记录HiSysevent上报事件中的IDE相关事件中APPNAME的表关联信息。
189#### 字段详细描述
190id:用于与表hisys_event_measure表中的key_id字段做对应
191app_name:对应的事件的信息ID
192app_key:对应的事件的APPNAME字段的信息ID
193
194### args表
195#### 表结构
196| Columns Name | SQL TYPE |
197|----          |----      |
198|id            |INT       |
199|key           |INT       |
200|datatype      |INT       |
201|value         |INT       |
202|argset        |INT       |
203#### 表描述
204记录方法的参数集合
205#### 字段详细描述
206key:键
207datatype:数据类型
208value:取值
209argset:参数集合
210
211### bio_latency_sample表
212#### 表结构
213| Columns Name | SQL TYPE |
214|----          |----      |
215|id            |INT       |
216|callchain_id  |INT       |
217|datatype      |INT       |
218|type          |INT       |
219|ipid          |INT       |
220|itid          |INT       |
221|start_ts      |INT       |
222|end_ts        |INT       |
223|latency_dur   |INT       |
224|tier          |INT       |
225|size          |INT       |
226|block_number  |TEXT      |
227|path          |TEXT      |
228|dur_per_4k    |INT       |
229#### 表描述
230记录IO操作相关方法调用,及调用栈数据
231#### 字段详细描述
232callchain_id:调用栈的唯一标识。与ebpf_callstack表中Callchain_id字段关联
233type:事件类型其取值为枚举类型(DATA_READ,DATA_WRITE,METADATA_READ,METADATA_WRITE,PAGE_IN,PAGE_OUT)
234ipid:TS内部进程号
235itid:TS内部线程号
236start_ts:开始时间
237end_ts:结束时间
238latency_dur:总延迟
239tier:优先级
240size:文件大小
241block_number:数据量大小(一般为4K)
242path:路径id
243dur_per_4k:每4k数据的平均延迟
244
245### callstack表
246#### 表结构
247| Columns Name | SQL TYPE |
248|----          |----      |
249|id            |INT       |
250|ts            |INT       |
251|dur           |INT       |
252|callid        |INT       |
253|cat           |TEXT      |
254|identify      |INT       |
255|name          |TEXT      |
256|depth         |INT       |
257|cookie        |INT       |
258|parent_id     |INT       |
259|argsetid      |INT       |
260|chainId       |TEXT      |
261|spanId        |TEXT      |
262|parentSpanId  |TEXT      |
263|flag          |TEXT      |
264|args          |TEXT      |
265#### 表描述
266记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步的调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号。
267#### 字段详细描述
268dur:调用时长
269callid:调用者的ID,比如针对线程表里面的id
270identify:调用栈的名字,与表dataDict相关联能够取出其string值
271name:调用名称
272depth:调用深度
273parent_id:父调用的id
274spanId:分布式调用关联关系
275flag:C表示分布式调用发送方,S表示接受方
276args:分布式调用函数参数
277
278### clk_event_filter表
279#### 表结构
280| Columns Name | SQL TYPE |
281|----          |----      |
282|id            |INT       |
283|type          |TEXT      |
284|name          |TEXT      |
285|cpu           |INT       |
286#### 表描述
287记录时钟信息
288#### 字段详细描述
289Type:时钟事件类型
290Name:时钟事件名称
291
292### clock_event_filter表
293#### 表结构
294| Columns Name | SQL TYPE |
295|----          |----      |
296|id            |INT       |
297|type          |TEXT      |
298|name          |TEXT      |
299|cpu           |INT       |
300#### 表描述
301此结构用来维护时钟事件,cpu与唯一的ID做关联
302#### 主要字段描述
303Type:时钟事件类型
304Name:时钟事件名称
305
306### cpu_measure_filter表
307#### 表结构
308| Columns Name | SQL TYPE |
309|----          |----      |
310|id            |INT       |
311|type          |TEXT      |
312|name          |TEXT      |
313|cpu           |INT       |
314#### 表描述
315将cpu号作为key1,cpu的频率,空闲等状态作为key2,唯一确定一个filter_id
316#### 主要字段描述
317Id(filterid), cpu:事件名称,cpu号
318
319### cpu_usage表
320#### 表结构
321| Columns Name | SQL TYPE |
322|----          |----      |
323|ts            |INT       |
324|dur           |INT       |
325|total_load    |REAL      |
326|user_load     |REAL      |
327|system_load   |REAL      |
328|process_num   |INT       |
329#### 表描述
330记录了与CPU使用率相关的数据
331#### 主要字段描述
332total_load:总负荷
333user_load:用户负载
334system_load:系统负载
335process_num:线程数
336
337### data_dict表
338#### 表结构
339| Columns Name | SQL TYPE |
340|----          |----      |
341|id            |INT       |
342|data          |TEXT      |
343#### 表描述
344此表记录了一个数据类型ID和字符串的映射。
345#### 主要字段描述
346id:索引值
347data:字符串
348
349### data_type表
350#### 表结构
351| Columns Name | SQL TYPE |
352|----          |----      |
353|id            |INT       |
354|typeId        |INT       |
355|desc          |TEXT      |
356#### 表描述
357此表记录了一个数据类型ID和数据描述的映射。
358#### 主要字段描述
359typeId::数据类型id
360Desc:数据类型描述
361
362### diskio表
363#### 表结构
364| Columns Name | SQL TYPE |
365|----          |----      |
366|ts            |INT       |
367|dur           |INT       |
368|rd            |INT       |
369|wr            |INT       |
370|rd_speed      |REAL      |
371|wr_speed      |REAL      |
372|rd_count      |INT       |
373|wr_count      |INT       |
374|rd_count_speed  |REAL      |
375|wr_count_speed  |REAL      |
376#### 表描述
377记录了与磁盘读写相关的数据
378#### 主要字段描述
379rd_sectors_kb:读数据的速度
380wr_sectors_kb:写入数据的速度
381ts:时间戳
382
383### ebpf_callstack表
384#### 表结构
385| Columns Name | SQL TYPE |
386|----          |----      |
387|id            |INT       |
388|callchain_id  |INT       |
389|depth         |TEXT      |
390|ip            |TEXT      |
391|symbols_id    |INT       |
392|file_path_id  |INT       |
393#### 表描述
394记录了与磁盘读写相关的数据
395#### 主要字段描述
396callchain_id:调用栈的唯一标识。与ebpf_callstack表中Callchain_id字段关联
397depth:调用栈深度。取值为零时表示栈顶
398ip:调用栈ip
399symbols_id:调用栈函数名称, 与data_dict中的id字段关联
400file_path_id:调用栈函数所属文件路径, 与data_dict中的id字段关联
401
402### file_system_sample表
403#### 表结构
404| Columns Name | SQL TYPE |
405|----          |----      |
406|callchain_id  |INT       |
407|type          |INT       |
408|ipid          |INT       |
409|itid          |INT       |
410|start_ts      |INT       |
411|end_ts        |INT       |
412|dur           |INT       |
413|return_value  |TEXT      |
414|error_code    |TEXT      |
415|fd            |INT       |
416|file_id       |INT       |
417|size          |INT       |
418|first_argument     |TEXT      |
419|second_argument    |TEXT      |
420|third_argument     |TEXT      |
421|fourth_argument    |TEXT      |
422#### 表描述
423记录了调用栈的相关信息。
424#### 主要字段描述
425callchain_id:调用栈信息ID与file_system_callstack表中call_chain_id字段相关联
426type:对应文件操作open,close,read,write
427ipid:线程所属的进程ID
428start_ts:开始时间
429end_ts:结束时间
430dur:耗时
431return_value:文件操作的返回值
432error_code:文件操作发生错误时的错误码
433fd:文件描述符fd
434file_id:当type为open,close时为其操作的文件路径,当type为read,write时为固定字段(null)
435size:在type为read,write时对应的文件的读或者写的大小
436first_argument:参数一
437second_argument:参数二
438third_argument:参数三
439fourth_argument:参数四
440
441### hidump表
442#### 表结构
443| Columns Name | SQL TYPE |
444|----          |----      |
445|id            |INT       |
446|ts            |INT       |
447|fps           |INT       |
448#### 表描述
449此表记录了设备的帧率信息,fps。
450#### 相关字段描述
451fps:帧率值
452
453### hisys_event_measure表
454#### 表结构
455| Columns Name | SQL TYPE |
456|----          |----      |
457|serial        |INT       |
458|ts            |INT       |
459|name_id       |INT       |
460|key_id        |INT       |
461|type          |INT       |
462|int_value     |REAL       |
463|string_value  |TEXT      |
464#### 表描述
465记录所有的system event事件的相关数据,及其相关表的映射信息。
466#### 相关字段描述
467serial:每条数据过来携带唯一一条id作为标识
468name_id:存放事件对应的ID,与data_dict表相关联可以取出对应的字段
469key_id:存放事件包含的字段的ID,与表app_name的id字段相关联,找到app_name表的id字段对应行的app_key字段与表data_dict表相关联取出对应的字段
470type:存放事件所包含的字段的值所属的类型为int型还是string(0为int,1为string)
471int_value:存放本事件所包含的字段的int型的值
472string_value:存放本事件所包含的字段的string型的值
473
474### instant表
475#### 表结构
476| Columns Name | SQL TYPE |
477|----          |----      |
478|ts            |INT       |
479|name          |TEXT      |
480|ref           |INT       |
481|wakeup_from   |INT       |
482|ref_type      |TEXT      |
483|value         |REAL      |
484#### 表描述
485记录了系统中的waking和wakeup事件。
486#### 字段描述
487ts:唤醒时间
488name:唤醒事件的名称
489ref:索引号
490wakeup_from:唤醒当前线程的内部线程号(itid)
491ref_type:描述了value字段的类型(一般取值为itid)
492value:一般为当前线程的内部线程号取值
493
494### irq表
495#### 表结构
496| Columns Name | SQL TYPE |
497|----          |----      |
498|id            |INT       |
499|ts            |INT       |
500|dur           |INT       |
501|callid        |INT       |
502|cat           |TEXT      |
503|name          |TEXT      |
504|depth         |INT       |
505|cookie        |INT       |
506|parent_id     |INT       |
507|argsetid      |INT       |
508|chainId       |TEXT      |
509|spanId        |TEXT      |
510|parentSpanId  |TEXT      |
511|flag          |TEXT      |
512|args          |TEXT      |
513#### 表描述
514记录中断相关事件。
515#### 相关字段描述
516dur:调用中断时长
517callid:调用中断者的ID,比如针对线程表里面的id
518cat:调用栈数据类型(取值范围:irq,softirq...)
519name:调用中断的名称
520depth:中断调用的深度
521parent_id:父调用中断的id
522spanId:分布式调用中断关联关系
523
524### live_process表
525#### 表结构
526| Columns Name | SQL TYPE |
527|----          |----      |
528|ts            |INT       |
529|dur           |INT       |
530|cpu_time      |INT       |
531|process_id    |INT       |
532|process_name  |TEXT      |
533|parent_process_id   |INT       |
534|uid           |INT       |
535|user_name     |TEXT      |
536|cpu_usage     |REAL      |
537|pss_info      |INT       |
538|thread_num    |INT       |
539|disk_writes   |INT       |
540|disk_reads    |INT       |
541#### 表描述
542记录了一些实时的进程中执行的一些数据(Monitor)。
543#### 主要字段描述
544process_id:进程id
545process_name:进程名
546parent_process_id:父进程的id
547uid:用户id
548user_name:用户名
549cpu_usage:cpu使用率
550pss_info:进程信息
551thread_num:线程数量
552disk_writes:磁盘写量
553disk_reads:磁盘读量
554
555### log表
556#### 表结构
557| Columns Name | SQL TYPE |
558|----          |----      |
559|seq           |INT       |
560|ts            |INT       |
561|pid           |INT       |
562|tid           |INT       |
563|level         |TEXT      |
564|tag           |TEXT      |
565|context       |TEXT      |
566|origints      |INT       |
567#### 表描述
568记录日志信息。
569#### 关键字段描述
570Seq:日志序号,保证日志解析的准确性
571Ts:打印日志时间
572Pid:日志的进程号
573Tid:日志的线程号
574Level:日志级别
575Tag:日志标签
576Context:日志内容
577
578### measure表
579#### 表结构
580| Columns Name | SQL TYPE |
581|----          |----      |
582|type          |TEXT      |
583|ts            |INT       |
584|value         |INT       |
585|filter_id     |INT       |
586#### 表描述
587记录所有的计量值。
588#### 关键字段描述
589type:固定字段(measure)
590ts:事件时间
591value:数值
592filter_id:对应filter表中的ID
593
594### measure_filter表
595#### 表结构
596| Columns Name     | SQL TYPE |
597|----              |----      |
598|id                |INT       |
599|type              |TEXT      |
600|name              |TEXT      |
601|source_arg_set_id |INT       |
602#### 表描述
603记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录。
604#### 字段详细描述
605过滤分类(type),过滤名称(key2),数据ID(key1)。
606数据ID在process_measure_filter, sys_event_filter中作为id。
607
608### meta表
609#### 表结构
610| Columns Name | SQL TYPE |
611|----          |----      |
612|name          |TEXT      |
613|value         |TEXT      |
614#### 表描述
615此表记录了数据解析或导出时的一些现场数据,比如使用的TraceStreamer版本, 工具的发布时间,数据解析的时间,数据的持续时长,以及原始数据的格式。
616#### 主要字段描述
617Name:指定元数据的key
618Value:指定元数据的value
619
620### native_hook表
621#### 表结构
622| Columns Name | SQL TYPE |
623|----          |----      |
624|id            |INT       |
625|callChainId   |INT       |
626|ipid          |INT       |
627|itid          |INT       |
628|event_type    |TEXT      |
629|sub_type_id   |NUM       |
630|start_ts      |INT       |
631|end_ts        |INT       |
632|dur           |INT       |
633|addr          |INT       |
634|heap_size     |INT       |
635|all_heap_size |INT       |
636|current_size_dur   |INT       |
637|last_lib_id   |INT       |
638#### 表描述
639记录native_hook抓取的某个进程的堆内存,内存映射相关数据。
640#### 关键字段描述
641callChainId:唯一标识一条native_hook数据
642event_type:事件类型取值范围(AllocEvent,FreeEvent,MmapEvent, MunmapEvent)
643sub_type_id:子事件类型(只有sub_type字段为MmapEvent时,该字段才会有值)
644start_ts:申请内存开始时间
645end_ts:释放内存时间
646Dur:申请内存活跃时间
647Addr:申请内存地址
648mem_size:申请或释放内存大小
649all_mem_size:从采集数据开始到当前时刻,申请并活跃的内存总量。 event_type为AllocEvent或者FreeEvent时,表示活跃的堆内存总量。当event_type为MmapEvent或者MunmapEvent时,表示活跃的映射内存总量
650current_size_dur:表示当前活跃内存总量的持续时间
651last_lib_id:函数调用栈他最后一个函数所属的文件路径,除了文件名中带musl和libc++
652
653### native_hook_frame表
654#### 表结构
655| Columns Name | SQL TYPE |
656|----          |----      |
657|id            |INT       |
658|callchain_id  |INT       |
659|depth         |INT       |
660|symbol_id     |INT       |
661|file_id       |INT       |
662|offset        |INT       |
663|symbol_offset |INT       |
664#### 表描述
665记录了内存的申请和释放的堆栈。
666#### 相关字段描述
667callchain_id:标识一组调用堆栈
668depth:调用栈深度
669symbol_id:函数名
670file_id:函数所属文件
671
672### network表
673#### 表结构
674| Columns Name | SQL TYPE |
675|----          |----      |
676|ts            |INT       |
677|dur           |INT       |
678|tx            |INT       |
679|rx            |INT       |
680|tx_speed      |REAL      |
681|rx_speed      |REAL      |
682|packet_in     |INT       |
683|packet_in_sec |REAL      |
684|packet_out    |INT       |
685|packet_out_sec   |REAL      |
686|net_type      |TEXT      |
687#### 表描述
688记录了网络数据传输相关的信息。
689#### 主要字段描述
690tv_sec:时间,秒为单位
691tv_nsec:时间,纳秒为单位
692tx_bytes:网络数据的写入量
693rx_bytes:网络数据的读取量
694
695### paged_memory_sample表
696#### 表结构
697| Columns Name | SQL TYPE |
698|----          |----      |
699|id            |INT       |
700|callchain_id  |INT       |
701|type          |INT       |
702|ipid          |INT       |
703|start_ts      |INT       |
704|end_ts        |INT       |
705|dur           |INT       |
706|size          |INT       |
707|addr          |TEXT      |
708|itid          |INT       |
709#### 表描述
710记录了网络数据传输相关的信息。
711#### 主要字段描述
712callchain_id: 取值相同的一组数据,表示一个完整的调用栈
713type:事件类型
714ipid:TS内部进程号
715start_ts:开始时间
716end_ts:结束时间
717dur:持续时间
718size:操作页数
719itid:TS内部线程号
720
721### perf_callchain表
722#### 表结构
723| Columns Name | SQL TYPE |
724|----          |----      |
725|id            |INT       |
726|callchain_id  |INT       |
727|depth         |INT       |
728|vaddr_in_file |INT       |
729|file_id       |INT       |
730|symbol_id     |INT       |
731|name          |TEXT      |
732#### 表描述
733记录了Hiperf采样数据的调用栈信息。
734#### 主要字段描述
735callchain_id:标识一组调用堆栈
736depth:调用栈深度
737vaddr_in_file:函数在文件中的虚拟地址
738file_id:与PerfFiles中的file_id字段相关联
739symbol_id:与PerfFiles中的symbol_id相关联
740name:函数名
741
742### perf_files表
743#### 表结构
744| Columns Name | SQL TYPE |
745|----          |----      |
746|id            |INT       |
747|file_id       |INT       |
748|serial_id     |INT       |
749|symbol        |TEXT      |
750|path          |TEXT      |
751#### 表描述
752记录Hiperf工具采集到的函数符号表和文件名。
753#### 主要字段描述
754file_id:文件编号
755serial_id:一个文件中可能有多个函数,serial_id表示函数的编号
756symbol:函数名
757path:文件路径
758
759### perf_report表
760#### 表结构
761| Columns Name | SQL TYPE |
762|----          |----      |
763|id            |INT       |
764|report_type   |TEXT      |
765|report_value  |TEXT      |
766#### 表描述
767记录Hiperf工具采集数据时的配置信息。包括:抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称。
768#### 主要字段描述
769report_type:数据类型。取值只有三种类型:config_name(事件类型), workload(抓取的进程名), cmdline(抓取命令)
770report_value:对应类型的取值
771
772### perf_sample表
773#### 表结构
774| Columns Name | SQL TYPE |
775|----          |----      |
776|id            |INT       |
777|callchain_id  |INT       |
778|timestamp     |INT       |
779|thread_id     |INT       |
780|event_count   |INT       |
781|event_type_id |INT       |
782|timestamp_trace   |INT       |
783|cpu_id        |INT       |
784|thread_state  |TEXT      |
785#### 表描述
786记录Hiperf工具的采样信息。
787#### 主要字段描述
788timestamp:未进行时钟源同步的时间戳
789thread_id:线程号
790event_count:采样统计
791event_type_id:事件类型编号。与PerfReport表的id字段相关联
792timestamp_trace:时钟源同步后的时间戳
793cpu_id:cpu核编号
794thread_state:线程状态。采样对应Sched_Waking事件时,为Runing;对应Sched_Switch事件时,为Suspend。其余事件类型,为“-”
795
796### perf_thread表
797#### 表结构
798| Columns Name | SQL TYPE |
799|----          |----      |
800|id            |INT       |
801|thread_id     |INT       |
802|process_id    |INT       |
803|thread_name   |TEXT      |
804#### 表描述
805记录Hiperf工具采集到的进程和线程数据。
806#### 主要字段描述
807thread_id:线程号
808process_id:进程号
809thread_name:线程名
810
811### process表
812#### 表结构
813| Columns Name | SQL TYPE |
814|----          |----      |
815|id            |INT       |
816|ipid          |INT       |
817|type          |TEXT      |
818|pid           |INT       |
819|name          |TEXT      |
820|start_ts      |INT       |
821|switch_count  |INT       |
822|thread_count  |INT       |
823|slice_count   |INT       |
824|mem_count      |INT       |
825#### 表描述
826记录了进程相关数据。
827#### 关键字段描述
828id:进程在数据库重新重新定义的id,从0开始序列增长
829ipid:TS内部进程id
830type:固定取值:process
831pid:进程的真实id
832name:进程名字
833start_ts:开始时间
834switch_count:统计其切换次数
835thread_count:统计其线程个数
836slice_count:进程是否有线程和线程切换数据
837mem_count:进程是否有内存数据
838
839### process_filter表
840#### 表结构
841| Columns Name | SQL TYPE |
842|----          |----      |
843|id            |INT       |
844|type          |TEXT      |
845|name          |TEXT      |
846|ipid          |INT       |
847#### 表描述
848将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, filter_id同时被记录在filter表中。
849#### 主要字段描述
850id:进程id
851type:固定取值:process_filter
852name:进程名
853ipid:该进程表中的id与process表中的id相关联
854
855### process_measure表
856#### 表结构
857| Columns Name | SQL TYPE |
858|----          |----      |
859|type          |TEXT      |
860|ts            |INT       |
861|value         |NUM       |
862|filter_id     |INT       |
863#### 表描述
864保存进程的内存,堆栈值等所有计量值信息。
865#### 字段详细描述
866ts:事件时间
867value:数值
868filter_id:对应process_measure_filter表中的ID
869
870### process_measure_filter表
871#### 表结构
872| Columns Name | SQL TYPE |
873|----          |----      |
874|id            |INT       |
875|type          |TEXT      |
876|name          |TEXT      |
877|ipid          |INT       |
878#### 表描述
879将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, filter_id同时被记录在measure_filter表中。
880#### 字段详细描述
881type:固定取值:process_measure_filter
882name:cpu状态名
883ipid:进程内部编号
884
885### raw表
886#### 表结构
887| Columns Name | SQL TYPE |
888|----          |----      |
889|id            |INT       |
890|type          |TEXT      |
891|ts            |INT       |
892|name          |TEXT      |
893|cpu           |INT       |
894|itid          |INT       |
895#### 表描述
896记录了系统中的waking、wakup、cpu_idel、cpu_frequency数据。
897#### 相关字段描述
898type:固定字段(raw)
899name:调度名称(取值:cpu_idle,sched_wakeup,sched_waking)
900cpu:事件发生在哪个CPU
901itid:时间对应哪个utid
902
903### sched_slice表
904#### 表结构
905| Columns Name | SQL TYPE |
906|----          |----      |
907|id            |INT       |
908|type          |TEXT      |
909|ts            |INT       |
910|dur           |INT       |
911|ts_end        |INT       |
912|cpu           |INT       |
913|itid          |INT       |
914|end_state     |TEXT      |
915|priority      |INT       |
916#### 表描述
917此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录。
918#### 主要字段描述
919ts:事件发生事件
920type:固定字段(sched_slice)
921dur:状态持续时长
922ts_end:状态结束时长
923cpu:事件发生在哪个cpu
924itid:事件对应哪个utid
925end_state:线程的终结状态
926
927### smaps表
928#### 表结构
929| Columns Name | SQL TYPE |
930|----          |----      |
931|id            |INT       |
932|timestamp     |INT       |
933|start_addr    |TEXT      |
934|end_addr      |TEXT      |
935|dirty         |INT       |
936|swapper       |INT       |
937|resident_size |INT       |
938|pss           |INT       |
939|virtaul_size  |INT       |
940|reside        |REAL      |
941|protection_id |INT       |
942|path_id       |INT       |
943#### 表描述
944记录进程的内存消耗的相关信息采样。
945#### 主要字段描述
946id:状态持续时长
947timestamp:事件发生事件
948start_addr:内存段地址的起始位置
949end_addr:内存段地址的结束位置
950dirty:其他进程共享的被写的页的大小 + 已被改写的私有页面的大小
951swapper:存在于交换分区的数据大小
952resident_size:实际分配的内存大小
953pss:平摊计算后的实际物理使用内存
954virtaul_size:虚拟内存空间的大小
955reside:实际分配的内存大小与虚拟内存空间的大小的比
956protection_id:内存段的权限id与表data_dict的id字段相关联
957path_id:如果区域是从文件映射的,则这是文件的名称对应的id序号与表data_dict的id字段相关联
958
959### stat表
960#### 表结构
961| Columns Name | SQL TYPE |
962|----          |----      |
963|event_name    |TEXT      |
964|stat_type     |TEXT      |
965|count         |INT       |
966|serverity     |TEXT      |
967|source        |TEXT      |
968#### 表描述
969此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解。
970#### 主要字段描述
971event_name:数据类型
972stat_type:数据状态
973count:数据条数
974severity:严重级别
975source:数据来源
976
977### symbols表
978#### 表结构
979| Columns Name | SQL TYPE |
980|----          |----      |
981|id            |INT       |
982|funcname      |TEXT      |
983|addr          |INT       |
984#### 表描述
985此表记录了被调用函数与其地址的映射关系。
986#### 相关字段描述
987funcname:系统调用名称
988adr:系统调用地址
989
990### syscall表
991#### 表结构
992| Columns Name | SQL TYPE |
993|----          |----      |
994|syscall_num   |INT       |
995|type          |TEXT      |
996|ipid          |INT       |
997|ts            |INT       |
998|ret           |INT       |
999#### 表描述
1000记录用户空间函数与内核空间函数相互调用记录。
1001#### 相关字段描述
1002syscall_num:系统调用的序号
1003type:固定取值:enter或者exit
1004ipid:线程所属的进程ID
1005ts:时间戳
1006ret:返回值,在type为exit时有效
1007
1008### sys_event_filter表
1009#### 表结构
1010| Columns Name | SQL TYPE |
1011|----          |----      |
1012|id            |INT       |
1013|type          |TEXT      |
1014|name          |TEXT      |
1015#### 表描述
1016记录所有的filter。
1017#### 相关字段描述
1018type:文件类型
1019name:文件名
1020
1021### sys_mem_measure表
1022#### 表结构
1023| Columns Name | SQL TYPE |
1024|----          |----      |
1025|type          |TEXT      |
1026|ts            |INT       |
1027|value         |INT       |
1028|filter_id     |INT       |
1029#### 表描述
1030记录系统内存与系统虚拟内存。
1031#### 相关字段描述
1032ts:事件时间
1033value:数值
1034filter_id:对应filter表中的ID
1035
1036### thread表
1037#### 表结构
1038| Columns Name | SQL TYPE |
1039|----          |----      |
1040|id	           |INT	      |
1041|itid	         |INT	      |
1042|type	         |TEXT      |
1043|tid	         |INT	      |
1044|name	         |TEXT      |
1045|start_ts	     |INT	      |
1046|end_ts	       |INT	      |
1047|ipid	         |INT	      |
1048|is_main_thread|INT       |
1049|switch_count  |INT       |
1050#### 表描述
1051记录了线程相关数据。
1052#### 字段详细描述
1053id:线程在数据库重新重新定义的id,从0开始序列增长
1054itid:TS内部线程id
1055type:固定字段(thread)
1056tid:线程号
1057name:线程名
1058start_ts:开始时间
1059end_ts:结束时间
1060ipid:线程所属的进程id, 关联process表中的ID
1061is_main_thread:是否主线程,主线程即该线程实际就是进程本身
1062switch_count:当前线程的切换次数
1063
1064### thread_filter表
1065#### 表结构
1066| Columns Name | SQL TYPE |
1067|----          |----      |
1068|id            |INT       |
1069|type          |TEXT      |
1070|name          |TEXT      |
1071|itid          |INT       |
1072#### 表描述
1073将线程ID作为key1,线程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, filter_id同时被记录在filter表中。
1074#### 主要字段描述
1075id:线程id
1076type:线程类型
1077name:线程名称
1078itid:该表中的tid与thread表中的tid相关联
1079
1080### thread_state表
1081#### 表结构
1082| Columns Name | SQL TYPE |
1083|----          |----      |
1084|id            |INT       |
1085|type          |TEXT      |
1086|ts            |INT       |
1087|dur           |INT       |
1088|cpu           |INT       |
1089|itid          |INT       |
1090|tid           |INT       |
1091|pid           |INT       |
1092|state         |TEXT      |
1093#### 表描述
1094记录了线程状态相关的数据。
1095#### 字段详细描述
1096id:线程状态在数据库中的id,从0开始序列增长
1097ts:该线程状态的起始时间
1098dur:该线程状态的持续时间
1099cpu:该线程在哪个cpu上执行(针对running状态的线程)
1100itid:该状态所属的线程id, 关联线程表中的id
1101tid:线程号
1102pid:进程号
1103state:线程实际的的状态值
1104```
1105'R', Runnable状态
1106'S', interruptible sleep
1107'D', uninterruptible sleep
1108'T', Stoped
1109't', Traced
1110'X', ExitedDead
1111'Z', ExitZombie
1112'x', TaskDead
1113'I', TaskDead
1114'K', WakeKill
1115'P', Parked
1116'N', NoLoad
1117```
1118
1119### clock_snapshot表
1120#### 表结构
1121| Columns Name | SQL TYPE |
1122|----          |----      |
1123|clock_id      |INT       |
1124|ts      |INT       |
1125|clock_name      |TEXT       |
1126#### 表描述
1127时钟号和时间,时钟名的映射表。
1128#### 关键字段描述
1129clock_id:时钟号
1130ts:时钟快照报的时间
1131clock_name:时钟号对应的时钟名字
1132时钟快照是用来对齐不同时钟号的时间。
1133比如,时钟号1的时间100,和时钟号2的时间200对齐。
1134则时钟号为2 的250,转换为时钟号1的时间后,为150
1135
1136### datasource_clockid表
1137#### 表结构
1138| Columns Name | SQL TYPE |
1139|----          |----      |
1140|data_source_name      |TEXT       |
1141|clock_id      |INT       |
1142#### 表描述
1143数据源和时钟号的映射表。
1144#### 关键字段描述
1145data_source_name:数据源的名称,和数据源的插件名保持一致
1146clock_id:时钟号,对应clock_snapshot中的时钟号
1147这个表是用来告诉IDE,不同的事件源的事件,原始时钟号是多少,在数据库中保存的事件,通常是转换为boottime后的时间,但有些情况下,IDE仍然需要知道原始的时钟号是怎样的
1148
1149### trace_range表
1150#### 表结构
1151| Columns Name | SQL TYPE |
1152|----          |----      |
1153|start_ts      |INT       |
1154|end_ts        |INT       |
1155#### 表描述
1156记录解析解析开始时间以及结束时间。
1157#### 关键字段描述
1158start_ts:trace的开始时间,纳秒为单位
1159end_ts:trace的结束时间,纳秒为单位