# **API参考** ## 接口列表 msMemScope工具提供开放接口,帮助用户进行内存分析,识别内存问题。 analyzer类是msMemScope工具新增的离线分析模块,负责所有的离线分析功能。可以从msMemScope导入对应的analyzer分析类,实现内存泄漏分析和自定义低效内存识别。 msMemScope工具提供快速分析接口和基于analyzer类的离线分析两种方式,推荐使用快速分析接口。 - 快速分析接口 msMemScope工具提供快速分析接口,推荐直接使用快速分析接口进行离线分析,接口列表如[**表 1** 接口列表](#接口列表-1)所示。 **表 1** 接口列表 |接口|说明| |--|--| |list_analyzers|该接口输出msMemScope工具当前支持的所有内存分析类型。| |get_analyzer_config|该接口查看运行相应内存分析类型需要输入的参数。| |analyze|msMemScope工具提供的快速分析接口。支持内存泄漏分析和自定义低效内存识别。| |check_leaks|msMemScope工具提供的内存泄漏快速分析接口。| |check_inefficient|msMemScope工具提供的自定义低效内存识别快速分析接口。| - analyzer类 可以直接从msMemScope工具导入analyzer类,进行离线分析,涉及的接口如[**表 2** analyzer类接口说明](#analyzer类接口说明)所示。但是代码实现较为繁琐,不推荐使用该方式。 实现示例代码如下: ```python # 导入内存泄漏的分析类和对应的config from msmemscope.analyzer import LeaksAnalyzer, LeaksConfig # 声明参数生成config leaks_config = LeaksConfig( input_path="user/memscope.csv", # input_path以实际路径为准 mstx_info="test", start_index=0 ) # 生成分析类实例进行分析 leaks_analyzer=LeaksAnalyzer() leaks_analyzer.analyze(leaks_config) # 导入低效内存的分析类和对应的config from msmemscope.analyzer import InefficientConfig, InefficientAnalyzer # 声明参数生成config ineff_config = InefficientConfig( input_path="user/ineff.csv", # input_path以实际路径为准 mem_size=0, inefficient_type=["early_allocation","late_deallocation","temporary_idleness"], idle_threshold=3000 ) # 生成分析类实例进行分析 ineff_analyzer=InefficientAnalyzer() ineff_analyzer.analyze(ineff_config) ``` **表 2** analyzer类接口说明 |接口|说明| |--|--| |LeaksAnalyzer|内存泄漏分析类。| |LeaksConfig|内存泄漏分析参数。| |InefficientConfig|低效内存分析参数。| |InefficientAnalyzer|低效内存分析类。| ## list\_analyzers **功能说明** 该接口可输出msMemScope工具当前支持的所有内存分析类型,且支持用户打印。当前仅支持内存泄漏分析和低效内存识别。 **函数原型** ```shell list_analyzers() -> List[str] ``` **参数说明** |参数名|输入/输出|说明| |--|--|--| |List[str]|输出|字符串列表。| **返回值说明** 运行后会输出当前msMemScope工具支持的内存分析类型。 **调用示例** ```python import msmemscope config_list = msmemscope.list_analyzers() print(config_list) ``` ## get\_analyzer\_config **功能说明** 该接口可查看运行对应内存分析类型需要输入的参数。 **函数原型** ```shell get_analyzer_config(analyzer_type: str) -> Dict[str, Any] ``` **参数说明** |参数名|输入/输出|说明| |--|--|--| |str|输入|字符串,代表对应的内存分析类型,可参考list_analyzers的输出结果,例如“leaks”或“inefficient”。| |Dict[str, Any]|输出|包含所有参数的字典,支持直接打印。| **返回值说明** 所有参数的字典,支持直接打印。 运行后会直接输出对应内存分析类型所需的入参信息。 **调用示例** ```python import msmemscope leaks_para = msmemscope.get_analyzer_config("leaks") print(leaks_para) ineff_para = msmemscope.get_analyzer_config("inefficient") print(ineff_para) ``` ## analyze **功能说明** msMemScope工具提供的对外分析接口。支持内存泄漏分析和自定义低效内存识别。 - 内存泄漏分析 提供对指定范围内的内存泄漏进行离线分析的功能,支持对msMemScope生成的落盘csv文件进行离线分析,并在检测到指定范围内的内存泄漏时触发告警。当前功能仅适用于HAL内存泄漏分析。 使用该接口前,需要在指定范围内通过mstx的mark进行打点,并使用msMemScope启动用户进程,以获取落盘csv文件。之后,通过该接口输入待分析的csv文件、打点信息以及起始index,即可进行离线泄漏分析。 - 自定义低效内存识别 支持输入自定义参数,对msMemScope生成的落盘csv文件或db文件进行离线低效内存识别。根据自定义参数规范,灵活设置低效内存识别的内存块阈值、关注的低效内存类型,以及临时闲置的API间隔时间,从而准确识别落盘的csv或db文件中的低效内存。 > [!NOTE] > > 如果输入的csv文件或db文件已有低效内存识别的结果,使用自定义低效内存识别功能时,不会清除原有的低效内存识别结果,而是会在此基础上新增识别结果。如果需要多次执行自定义低效内存识别功能,建议备份原始文件。 **函数原型** ```shell analyze(analyzer_type: str, **kwargs): ``` **参数说明** - 内存泄漏分析 参数为leaks时,请参见[check\_leaks](#check_leaks)查看参数说明。 - 自定义低效内存识别 参数为inefficient时,请参见[check\_inefficient](#check_inefficient)查看参数说明。 **返回值说明** 无返回值。 运行后会输出分析结果。 **调用示例** ```python import msmemscope msmemscope.analyze("leaks", input_path="user/memscope.csv", mstx_info="test",start_index=0) msmemscope.analyze("inefficient", input_path="user/ineff.csv",mem_size=0, inefficient_type=["early_allocation","late_deallocation","temporary_idleness"], idle_threshold=3000 ) # input_path以实际路径为准 ``` ## check\_leaks **功能说明** msMemScope工具对外提供内存泄漏快速分析接口。 **函数原型** ```shell check_leaks(input_path: str, mstx_info: str, start_index: int) ``` **参数说明** 所有输入的参数需根据[list\_analyzers](#list_analyzers)和[get\_analyzer\_config](#get_analyzer_config)获取。 |参数名|输入/输出|说明| |--|--|--| |input_path|输入|使用msMemScope采集的csv文件所在路径,需使用绝对路径。| |mstx_info|输入|mark打点使用的mstx文本信息,用于标识泄漏分析的范围。| |start_index|输入|开始进行泄漏分析的mstx打点索引。| **返回值说明** 无返回值。 运行后会直接打印显示内存泄漏分析结果。 **调用示例** ```python import msmemscope msmemscope.check_leaks(input_path="user/memscope.csv",mstx_info="test",start_index=0) # input_path以实际路径为准 ``` ## check\_inefficient **功能说明** msMemScope工具对外提供的自定义低效内存识别快速分析接口。 **函数原型** ```shell check_inefficient(input_path: str, mem_size: int = 0, inefficient_type: List[str] = None, idle_threshold: int = 3000) # 如果无输入采用默认值 ``` **参数说明** 所有输入的参数需根据[list\_analyzers](#list_analyzers)和[get\_analyzer\_config](#get_analyzer_config)获取。 |参数名|输入/输出|说明| |--|--|--| |input_path|输入|需要进行离线自定义低效内存识别处理的csv或者db文件路径。| |mem_size|输入|低效内存阈值,单位:Bytes,低于该阈值的内存块不会输出结果。| |inefficient_type|输入|低效类型分类,确定判断策略,仅输出用户关注的低效内存类型。当前支持的类型如下:
- 过早申请:early_allocation
- 过迟释放:late_deallocation
- 临时闲置:temporary_idleness| |idle_threshold|输入|临时闲置阈值,决定临时闲置低效内存的API阈值,可以灵活设置阈值大小。| **返回值说明** 无返回值。 运行后会打印提示分析过程,并识别结果写入原文件中。 **调用示例** ```python import msmemscope msmemscope.check_inefficient(input_path="user/ineff.csv",mem_size=0, inefficient_type=["early_allocation","late_deallocation","temporary_idleness"],idle_threshold=3000 ) # input_path以实际路径为准 ```