提交 ae37c6b0 编写于 作者: S shanghuanni

hitracemeter-guidelines.md 文档格式修改

Signed-off-by: Nshanghuanni <shanghuanni1@huawei.com>
上级 09029458
...@@ -7,6 +7,7 @@ HiTraceMeter在OpenHarmony中,为开发者提供业务流程调用链跟踪的 ...@@ -7,6 +7,7 @@ HiTraceMeter在OpenHarmony中,为开发者提供业务流程调用链跟踪的
## 基本概念 ## 基本概念
HiTraceMeter系统主要分为三部分: HiTraceMeter系统主要分为三部分:
- JS/C++应用打点API; - JS/C++应用打点API;
- Trace数据采集命令行工具; - Trace数据采集命令行工具;
- Trace数据图形分析工具。 - Trace数据图形分析工具。
...@@ -80,7 +81,6 @@ HiTraceMeter主要提供抓取用户态和内核态Trace数据的命令行工具 ...@@ -80,7 +81,6 @@ HiTraceMeter主要提供抓取用户态和内核态Trace数据的命令行工具
## 约束与限制 ## 约束与限制
- HiTraceMeter所有功能与接口的实现都依赖于内核提供的ftrace功能,ftrace 是内核提供的一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能,因此使用HiTraceMeter之前要使能 ftrace,否则HiTraceMeter的功能无法使用(目前大部分Linux内核默认使能了ftrace,关于ftrace的详细介绍可查看内核ftrace相关资料 - HiTraceMeter所有功能与接口的实现都依赖于内核提供的ftrace功能,ftrace 是内核提供的一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能,因此使用HiTraceMeter之前要使能 ftrace,否则HiTraceMeter的功能无法使用(目前大部分Linux内核默认使能了ftrace,关于ftrace的详细介绍可查看内核ftrace相关资料
...@@ -95,7 +95,6 @@ HiTraceMeter分为JS/C++应用打点API与数据采集命令行工具hitrace, ...@@ -95,7 +95,6 @@ HiTraceMeter分为JS/C++应用打点API与数据采集命令行工具hitrace,
## 场景介绍 ## 场景介绍
在实际开发过程中,开发者可能会遇到app卡顿或者在代码调试过程中需要查看代码调用流程,HiTraceMeter接口提供了相应的接口来跟踪程序延时和代码调用流程,分析性能问题。 在实际开发过程中,开发者可能会遇到app卡顿或者在代码调试过程中需要查看代码调用流程,HiTraceMeter接口提供了相应的接口来跟踪程序延时和代码调用流程,分析性能问题。
...@@ -106,18 +105,17 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开 ...@@ -106,18 +105,17 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
**表 1** 同步接口 **表 1** 同步接口
| Sync trace | 功能描述 |参数说明 | | Sync trace | 功能描述 | 参数说明 |
| :----------------------------------------------------------- | ------------- |------------- | |:---------------------------------------------------------------------------- | --------- | --------------------------------------------------------------------- |
| void StartTrace(uint64_t label, const std::string& value, float limit = -1); | 启动同步trace |label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。 | | void StartTrace(uint64_t label, const std::string& value, float limit = -1); | 启动同步trace | label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。 |
| void FinishTrace(uint64_t label); | 关闭同步trace |label: Trace category。 | | void FinishTrace(uint64_t label); | 关闭同步trace | label: Trace category。 |
同步接口StartTrace和FinishTrace必须配对使用,FinishTrace和前面最近的StartTrace进行匹配。StartTrace和FinishTrace函数对可以嵌套模式使用,跟踪数据解析时使用栈式数据结构进行匹配。接口中的limit参数用于限流,使用默认值即可。 同步接口StartTrace和FinishTrace必须配对使用,FinishTrace和前面最近的StartTrace进行匹配。StartTrace和FinishTrace函数对可以嵌套模式使用,跟踪数据解析时使用栈式数据结构进行匹配。接口中的limit参数用于限流,使用默认值即可。
**表 2** 异步接口 **表 2** 异步接口
| Async trace | 功能描述 |参数说明 | | Async trace | 功能描述 | 参数说明 |
| ------------------------------------------------------------ | ------------- |------------- | | ------------------------------------------------------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------- |
| void StartAsyncTrace(uint64_t label, const std::string& value, int32_t taskId, float limit = -1); | 开启异步trace | label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。<br />taskId:异步Trace中用来表示关联的ID。 | | void StartAsyncTrace(uint64_t label, const std::string& value, int32_t taskId, float limit = -1); | 开启异步trace | label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。<br />taskId:异步Trace中用来表示关联的ID。 |
| void FinishAsyncTrace(uint64_t label, const std::string& value, int32_t taskId); | 关闭异步trace | label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。<br />taskId:异步Trace中用来表示关联的ID。 | | void FinishAsyncTrace(uint64_t label, const std::string& value, int32_t taskId); | 关闭异步trace | label: Trace category。<br />value: Trace携带的信息,表明当前的某种状态,例如内存大小,队列长短等。<br />taskId:异步Trace中用来表示关联的ID。 |
...@@ -127,17 +125,18 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开 ...@@ -127,17 +125,18 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
**表 3** 计数器接口 **表 3** 计数器接口
| Counter Trace | 功能描述 |参数说明 | | Counter Trace | 功能描述 | 参数说明 |
| ------------------------------------------------------------ | --------- |--------- | | ------------------------------------------------------------------ | ------- | -------------------------------------------------------------- |
| void CountTrace(uint64_t label, const std::string& name, int64_t); | 计数trace |label: Trace category。<br />name: Trace的名称,IDE中会以此字段展示这段Trace。 | | void CountTrace(uint64_t label, const std::string& name, int64_t); | 计数trace | label: Trace category。<br />name: Trace的名称,IDE中会以此字段展示这段Trace。 |
## 开发步骤 ## 开发步骤
1. 编译依赖添加,需要修改的编译配置文件base\hiviewdfx\hitrace\cmd\BUILD.gn 。 1. 编译依赖添加,需要修改的编译配置文件base\hiviewdfx\hitrace\cmd\BUILD.gn 。
``` ```
external_deps = [ "hitrace_native:hitrace_meter"] external_deps = [ "hitrace_native:hitrace_meter"]
``` ```
2. 头文件依赖添加。 2. 头文件依赖添加。
```cpp ```cpp
...@@ -146,13 +145,12 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开 ...@@ -146,13 +145,12 @@ C++接口仅系统开发者使用,JS(目前暂未开放js接口)应用开
3. 接口调用,将需要跟踪的Trace value传入参数,目前HiTraceMeter支持的Trace Tag在基本概念hitrace_meter.h中都已列出,我们以OHOS这个Tag为例,假设我们需要获取func1,func2函数的Trace数据,参考下面实例,在shell中执行hitrace命令后会自动抓取Trace数据,抓到的Trace数据中包括了函数调用过程以及调用过程消耗的内存和时间,可用于分析代码调用流程,代码性能问题。 3. 接口调用,将需要跟踪的Trace value传入参数,目前HiTraceMeter支持的Trace Tag在基本概念hitrace_meter.h中都已列出,我们以OHOS这个Tag为例,假设我们需要获取func1,func2函数的Trace数据,参考下面实例,在shell中执行hitrace命令后会自动抓取Trace数据,抓到的Trace数据中包括了函数调用过程以及调用过程消耗的内存和时间,可用于分析代码调用流程,代码性能问题。
```cpp
#include "hitrace_meter.h" // 包含hitrace_meter.h
using namespace std;
```cpp int main()
#include "hitrace_meter.h" // 包含hitrace_meter.h {
using namespace std;
int main()
{
uint64_t label = BYTRACE_TAG_OHOS; uint64_t label = BYTRACE_TAG_OHOS;
sleep(1); sleep(1);
CountTrace(label, "count number", 2000); // 整数跟踪 CountTrace(label, "count number", 2000); // 整数跟踪
...@@ -180,7 +178,6 @@ int main() ...@@ -180,7 +178,6 @@ int main()
抓取之后的数据可以在smartperf中"Open trace file"或者直接拖入图形区打开,关于smartperf的详细介绍可查看 [smartperf](https://toscode.gitee.com/openharmony-sig/smartperf) 抓取之后的数据可以在smartperf中"Open trace file"或者直接拖入图形区打开,关于smartperf的详细介绍可查看 [smartperf](https://toscode.gitee.com/openharmony-sig/smartperf)
## 调测验证 ## 调测验证
以下为一个demo调试过程,该demo使用了同步接口中的StartTrace和FinishTrace。 以下为一个demo调试过程,该demo使用了同步接口中的StartTrace和FinishTrace。
...@@ -274,7 +271,7 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony ...@@ -274,7 +271,7 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony
**表 4** 命令行列表 **表 4** 命令行列表
| Option | Description | | Option | Description |
| ------------------------------ | ------------------------------------------------------------ | | ----------------------------- | -------------------------------------------------------- |
| -h,--help | 查看option帮助 | | -h,--help | 查看option帮助 |
| -b n,--buffer_size n | 指定n(KB)内存大小用于存取trace日志,默认2048KB | | -b n,--buffer_size n | 指定n(KB)内存大小用于存取trace日志,默认2048KB |
| -t n,--time n | 用来指定trace运行的时间(单位:s),取决于需要分析过程的时间 | | -t n,--time n | 用来指定trace运行的时间(单位:s),取决于需要分析过程的时间 |
...@@ -291,36 +288,43 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony ...@@ -291,36 +288,43 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony
- 查询支持的label。 - 查询支持的label。
``` ```
hitrace -l hitrace -l
```
或者 ```
或者
```
```
hitrace --list_categories hitrace --list_categories
```
```
- 设置4M缓存,抓取10秒,抓取label为ability的trace信息。 - 设置4M缓存,抓取10秒,抓取label为ability的trace信息。
``` ```
hitrace -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace hitrace -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
```
- 设置trace的输出时钟为mono。 - 设置trace的输出时钟为mono。
``` ```
hitrace --trace_clock mono -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace hitrace --trace_clock mono -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
```
- 抓取trace后进行压缩。 - 抓取trace后进行压缩。
``` ```
hitrace -z -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace hitrace -z -b 4096 -t 10 --overwrite ability > /data/log/mytrace.ftrace
```
```
...@@ -330,11 +334,11 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony ...@@ -330,11 +334,11 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony
#### 现象描述 #### 现象描述
执行hitrace命令抓数据不全或者没抓到数据。 执行hitrace命令抓数据不全或者没抓到数据。
#### 解决方法 #### 解决方法
参数-t 时间设置过小或者-b缓冲区buffer设置过小导致数据丢失,可设置-t 60,-b 204800扩大抓trace时间和缓冲区buffer解决。 参数-t 时间设置过小或者-b缓冲区buffer设置过小导致数据丢失,可设置-t 60,-b 204800扩大抓trace时间和缓冲区buffer解决。
...@@ -342,3 +346,6 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony ...@@ -342,3 +346,6 @@ HiTraceMeter提供了可执行的二进制程序hitrace,设备刷openharmony
更多关于HiTraceMeter的详细内容请参考:[hiviewdfx_hitrace: A Lightweight Distributed Tracing | 轻量级的分布式调用链跟踪 (gitee.com)](https://gitee.com/openharmony/hiviewdfx_hitrace) 更多关于HiTraceMeter的详细内容请参考:[hiviewdfx_hitrace: A Lightweight Distributed Tracing | 轻量级的分布式调用链跟踪 (gitee.com)](https://gitee.com/openharmony/hiviewdfx_hitrace)
```
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册