• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# TraceStreamer 解析数据状态表
2TraceStreamer使用stat表统计解析trace数据源过程遇到的重要事件状态。通过stat表可以对trace数据源中各个类型事件的数据的数量,数据质量有一个基本了解。
3我们对不同类型的数据,统计了收到多少条,数据逻辑是否匹配,是否有不合法数据,是否有数据丢失情况,所有这些,是基于对数据格式本身和数据前后关系的主观认识。欢迎开发者提供更多的思路来帮我们完善数据本身的校验工作。
4## stat表支持统计的事件
5如[des_support_event.md](des_support_event.md)中所描述。
6## 事件对应解析状态
7每种事件解析数据都有5种状态,描述如下表:
8|stat_type|description|
9|----     |----       |
10|received  | 统计trace数据源中总共有多少该事件。|
11|data_lost | 统计TraceStreamer解析过程中发现丢失数据条数。 |
12|not_match | 统计有多少数据与上下文其他数据不匹配。 |
13|not_supported | 统计有多少暂不支持解析该事件(一个事件可能包含多种类型的子事件, TraceStreamer可能支持该事件的一部分子事件)。|
14|invalid_data | 统计收到多少条该事件的非法数据。|
15
16## 数据状态级别
17数据状态级别总共有4种,分别是:info, warn, error,fatal。由于数据的重要性不同,不同事件的同一种状态可能对应不同的级别。
18例如binder_transaction_received的 not_supported状态的数据为info级别,而binder_transaction_alloc_buf的not_supported状态数据为warn级别。
19可以在src/cfg/trace_streamer_config.cpp的InitSecurityMap方法中自行定义相关事件的优先级。
20
21## 事件,状态与级别对应关系
22我们通过一张表,来记录所有事件的解析情况,拿下面这条数据举例:
23|	event_name	|	count| stat_type	|	serverity	|
24|----           |---|----           |----           |
25|	binder_transaction	|12|	received	|	info	|
26|	binder_transaction	|1|	data_lost	|	error	|
27|	binder_transaction	|3|	not_match	|	info	|
28|	binder_transaction	|0|	not_supported	|	info	|
29|	binder_transaction	|5|	invalid_data	|	error	|
30|	-	|	-	|-|-	|
31上面的图表表示:一共收到了12条binder_transaction的数据,其中有3条数据业务上不匹配,有5条数据格式非法。