# 性能调优组件 - [简介](#section6874544183112) - [架构图](#section1514713331342) - [目录](#section1742612449345) - [说明](#section2165102016359) - [接口说明](#section558917318367) - [使用说明](#section681316903611) - [调测验证](#section35362541215) - [hiprofiler_cmd 使用说明](#section35362541216) - [参数说明](#section35362541290) - [命令展示](#section35362541500) - [基础配置参数](#section35362541219) - [ftrace抓取场景示例](#section35362541220) - [内存信息抓取场景示例](#section35362541221) - [内核内存信息](#section35362541222) - [虚拟内存统计](#section35362541223) - [进程内存使用跟踪](#section35362541224) - [bytrace/hitrace场景示例](#section35362541225) - [hiperf场景示例](#section35362541226) - [相关仓](#section1293495681320) ## 简介 性能调优组件包含系统和应用调优框架,旨在为开发者提供一套性能调优平台,可以用来分析内存、性能等问题。 该组件整体分为PC端和设备端两部分,PC端最终作为deveco studio的插件进行发布,内部主要包括分为UI绘制、设备管理、进程管理、插件管理、数据导入、数据存储、 数据分析、Session管理、配置管理等模块;设备端主要包括命令行工具、服务进程、插件集合、应用程序组件等模块。设备端提供了插件扩展能力,对外提供了插件接口,基于该扩展能力可以按需定义自己的能力,并集成到框架中来,目前基于插件能力已经完成了实时内存插件,trace插件。下文会重点对设备端提供的插件能力进行介绍。 ## 架构图 ![](figures/zh-cn_image_0000001162598155.png) ## 目录 ``` /developtools/profiler ├── device # 设备侧代码目录 │ ├── base # 基础功能代码 │ │ ├── include # 基础功能的头文件代码目录 │ | ├── src # 基础功能的源文件代码目录 │ | └── test # 基础功能的测试代码目录 │ ├── cmds # 对外命令行模块的代码 │ | ├── include # 对外命令行模块的头文件代码目录 │ | ├── src # 对外命令行模块的源文件代码目录 │ | └── test # 对外命令行模块的测试代码目录 │ └── plugins # 插件代码目录 │ ├── api # 插件模块对外提供的接口文件代码目录 │ | ├── include # 插件模块对外提供的接口头文件代码目录 │ | └── src # 插件模块对外提供的接口源文件代码目录 │ ├── memory_plugin # 内存插件模块代码目录 │ | ├── include # 内存插件模块头文件代码目录 │ | ├── src # 内存插件模块源文件代码目录 │ | └── test # 内存插件模块测试代码目录 │ └── trace_plugin # trace插件模块代码目录 │ ├── include # trace插件模块头文件代码目录 │ ├── src # trace插件模块源文件代码目录 │ └── test # trace插件模块测试代码目录 ├── host # 主机侧代码目录 │ └── ohosprofiler # 主机侧调优模块代码目录 │ └── src # 主机侧调优模块源文件代码目录 ├── protos # 项目中的proto格式文件的代码目录 │ └── innerkits # 对内部子系统暴露的头文件存放目录 │ └── builtin # JS应用框架对外暴露JS三方module API接口存放目录 ├── trace_analyzer # bytrace解析模块的代码目录 │ ├── include # bytrace解析模块的公共头文件存放目录 │ └── src # bytrace解析模块功能源文件存放目录 ├── interfaces # 项目中接口的代码目录 │ ├── innerkits # 模块间接口的代码目录 │ └── kits # 对外提供接口存放目录 ``` ## 说明 下面针对设备端对外提供的插件扩展能力进行接口和使用说明。 ### 接口说明 下面是设备端插件模块对外提供的接口: - PluginModuleCallbacks为插件模块对外提供的回调接口,插件管理模块通过该回调接口列表与每一个插件模块进行交互,每一个新增插件都需要实现该接口列表中的函数。 **表 1** PluginModuleCallbacks接口列表
int (*PluginSessionStartCallback)(const uint8_t* configData, uint32_t configSize); |
||
int (*PluginReportResultCallback)(uint8_t* bufferData, uint32_t bufferSize); |
||
long (*WriteFuncPtr)(WriterStruct* writer, const void* data, size_t size); |
||