1# TraceStreamer数据表概述 2TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据,也可在理解TraceStreamer生成的数据库的基础上,在TraceStreamer的交互模式或者Smartperf的数据库查询模式下,使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述,给用户使用SQL查询系统跟踪数据提供帮助。 3 4## TraceStreamer输出的数据表分类 5* 常规泳道图数据表 6 7* native memory数据源相关表 8 9* perf相关数据表 10 11* hisysevent相关数据表 12 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 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 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 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 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 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的结束时间,纳秒为单位