内存工具系列-老化场景日志解析指导

来源飞书 wiki(obj_token: LONxdW2GjowrCdxpb7Dc6ZVnnfg)

本文档共 14 张图片均因权限不足(403)无法下载,已就地以文字描述占位保留。文档中包含 2 处 kpan 企业网盘外链和 2 处 wiki 内部引用。

一、Native内存日志解析指导

1、解析工具下载

解析工具如下:(需要在Linux环境中使用,由于老化日志数据较大,建议在linux服务器上使用)

🔗 小米企业网盘外链:[https://kpan.mioffice.cn/webfolder/ext/H507l6zdDJXuVm31GQvyw@@) | 密码 869f

📷 图片描述: 内存工具系列中老化场景日志解析指导中解析工具下载页面的部分内容。页面显示当前权限为”管理员”,当前位置为”/内存工具”,下方有”返回根目录”选项。文件列表中,以红色框突出显示了”agingmem_process”文件夹。该图片与上下文关系紧密,上下文提到解析工具需在Linux环境中使用,且需在网盘下载特定地址的解析工具,此图直观呈现了下载页面中解析工具文件夹的位置,辅助用户找到并使用相关解析工具。(token IzfXbm84moZceYxOY0aczePdnOf,下载失败:403 权限不足)

注意:如果是使用老化测试新框架工具采集的mem_use日志,请使用最新的解析工具。

📷 图片描述: 内存老化日志解析工具中”aging_memory_data_process_v2.0”文件夹。该文件夹位于”aging_memory_data_process”文件夹下,被红色框线突出显示。上下文提到解析工具需在Linux环境中使用,且如果是使用老化测试新框架工具采集的mem_use日志,需使用最新解析工具,此图片直观呈现了需使用的解析工具文件夹及版本,与上下文介绍的解析工具下载及使用环境等内容相呼应。(token JetYbpt5DoTHEdx9vdgcq1mHnbd,下载失败:403 权限不足)

2、准备好对应的符号文件

参考链接中的**“采集symbol工具”**章节:内存工具系列-日志采集&解析工具发布和使用指导

3、解析工具使用方法

  • 将不同设备上老化测试过程中抓取的native日志数据按照不同目录存放,然后将日志上传到Linux服务器上:

📷 图片描述: Windows资源管理器界面,显示了两个文件夹,分别为”systemserver-magic”和”systemserver-p1”,均为文件夹类型,创建日期均为2026年1月30日17:40。该图片与文档中”将不同设备上老化测试过程中抓取的native日志数据按照不同目录存放”的内容相关,直观呈现了日志数据存放时的文件夹结构示例,帮助理解日志数据存放的目录形式。(token TtmCbo6L5oCPh0xguqlcOCHtnVg,下载失败:403 权限不足)

📷 图片描述: Windows文件资源管理器中,一个名为”aging_mem”的文件夹下的内容。其中,有一个名为”symbol_data”的文件夹被红色框突出显示。该图片与文档中”解析工具使用方法”部分内容相关,用于说明在将不同设备上老化测试过程中抓取的native日志数据上传到Linux服务器后,需将每个设备上测试进程对应的符号文件导出,放到和日志同目录的”symbol_data”文件夹中,且文件夹名称必须命名为”symbol_data”,否则解析会失败。(token JwQ6bsNgaoRNcFxVCiyc7QzGnub,下载失败:403 权限不足)

注意:需要将每个设备上测试进程对应的符号文件导出来,放到和日志同目录的symbol_data文件夹中。这里的文件目录名称必须命名为symbol_data,否则解析会失败。 TIPS:将符号工具导出的符号文件夹改名为symbol_data后直接拷贝过来即可。

  • 将aging_memory_data_process工具放到和日志目录同级的目录中,使用chmod 777 aging_memory_data_process添加可执行权限。
  • 在Linux环境上使用解析工具解析日志,工具的命令格式如下:

命令格式:./aging_memory_data_process --input_nums <输入目录的个数> --input_dirs <输入目录1 输入目录2 ...> --output_dir <输出目录> --input_showmap_dir <showmap日志目录> --parse_mode <解析模式> --start_time <待解析日志起始时间戳> --end_time <待解析日志结束时间戳>

参数说明:

--input_nums : 输入目录的个数

--input_dirs :输入目录列表(设备老化测试内存日志存放路径)

--output_dir :输出结果目录

--input_showmap_dir:【可选】传入showmap日志后,会解析出showmap文件中的峰值信息。

--parse_mode :【可选】解析模式,默认为”all”模式,支持”all”, “max”, “both”。all模式解析老化测试的全量生命周期采集的Native内存日志信息;max模式只解析老化测试过程中从开始到峰值时刻的Native内存日志信息;both模式即解析all模式,也解析max模式。

--start_time:【可选】用户指定需要解析的时间段范围的起始时间戳。

--end_time:【可选】用户指定需要解析的时间段范围的结束时间戳。

--enable_max_all:【可选】该参数为开关选项,用户控制解析峰值内存信息时是否解析全量内存事件。一般不建议使用。

示例:system_server进程的老化场景Native内存的解析过程

(1)将日志和解析工具上传到Linux服务器,这里有两份日志(对比)。也可以只有一份日志(没有对比)。

📷 图片描述: 内存老化场景日志解析工具”aging_memory_data_process”在”output”目录下的文件结构。其中,“systemserver-magic”和”systemserver-p1”两个目录下均包含”symbol_data”子目录,以及多个以”system_server”开头的文件,如”system_server_1.showmap”等,还有”system_server_memuse.data""system_server_memuse.filename.data""system_server_memuse.stack1.data""system_server_memuse.stack2.data”等文件。该图片与文档中解析工具使用方法相关,直观呈现了解析后的日志文件分布情况。(token EfZIbtBa3o6y4mxW0HHcGjBPnGd,下载失败:403 权限不足)

这个的output目录为新创建的日志解析输出路径

(2)使用命令:./aging_memory_data_process --input_nums 2 --input_dirs ./systermserver-p1 ./systermserver-magic --output_dir ./output

📷 图片描述: 内存老化测试内存数据处理脚本的运行结果。命令为./aging_memory_data_process --input_nums 2 --input_dirs ./systemserver-p1 ./systemserver-magic --output_dir ./output。结果显示输入目录为/systemserver-p1/systemserver-magic,输出目录为./output,并提示输出目录已创建。接着列出处理设备1/2,开始处理设备目录./systemserver-p1,找到数据文件/systemserver-p1/system_server_menuse_data等信息。该图片与文档中解析Native内存日志使用方法的内容相关,展示了脚本的操作结果。(token TXU7bXaijoF4Qex0KswcLAyIn6g,下载失败:403 权限不足)

📷 图片描述: 内存老化场景日志解析后的文件目录。目录下有多个文件,其中”system_server_memuse_merged.symbolized_native_func.csv""system_server_memuse_merged.symbolized_native_lib.csv”两个文件被红色框突出显示。前者大小为5KB,后者大小为1KB,均为2026 - 01 - 30 18:53修改。这些文件是解析后存放拆解到函数维度和库维度信息的文件,与文档中解析工具使用方法及解析后文件存放内容相关,直观呈现了解析结果。(token IXUPbFZtxox8g1xZ5GicxCFGn3c,下载失败:403 权限不足)

解析后_native_func.csv文件中存放的是拆解到函数维度的信息,_native_lib.csv文件中存放的是拆解到库维度的信息。callstack目录中存放的是所有调用栈信息。

(3)如果指定showmap,且解析模式配置为both的话。解析后的数据目录如下:

📷 图片描述: 内存老化场景日志解析后的数据目录。其中”max”文件夹下存放峰值内存数据,“showmap_analysis”文件夹下存放showmap分析数据。目录中还包括systemui_p1_aging_memuse.info文件,以及多个csv、json、html等格式的文件,如”systemui_p1_aging_memuse.info_flamegraph.html”等。该图片与文档中解析工具使用方法的内容相关,直观呈现了解析后生成的数据文件及类型。(token EaUKbWGAlozZ5ox7ULtcb6SOncc,下载失败:403 权限不足)

二、老化场景单独解析内存峰值信息

典型的应用场景:查找到Java堆内存峰值时刻的hprof文件。

将老化测试中采集到的showmap和hprof日志拷贝到本地,具体采集方式请参考进程老化模型使用说明文档中4.2 老化场景Java堆日志采集 的章节内容。

1、解析工具下载

解析工具如下:(需要在Linux环境中使用,由于老化日志数据较大,建议在linux服务器上使用)

🔗 小米企业网盘外链:[https://kpan.mioffice.cn/webfolder/ext/H507l6zdDJXuVm31GQvyw@@) | 密码 869f

📷 图片描述: 内存工具系列中老化场景日志解析指导文档中”解析工具下载”部分的网盘下载地址界面。界面显示当前权限及当前位置为”/内存工具”,下方有”返回根目录”选项,文件列表中”agingmem_process”文件夹被红色框突出显示,其下方还有”libGLES_mali""mem_catch""mem_parse”等文件夹。该图片与上文提到的解析工具下载内容相关,直观呈现了下载地址中文件夹结构。(token A9g5bDUkPodYKWxMoJccoUrondd,下载失败:403 权限不足)

📷 图片描述: Linux环境下的文件目录界面,当前目录为/agingmem_process。界面中有”返回根目录”和”返回上一级”选项,下方列出多个文件夹,其中”showmap_data_max_parse”文件夹被红色框线突出显示。该图片与文档中”解析工具使用方法”部分相关,用于说明在Linux环境中下载的showmap_all和hprof_all目录下,使用showmap_data_max_parse工具解析内存峰值信息的操作步骤,直观呈现了工具所在位置。(token EjbTb9dARo9K9JxmtcDcnHYHnhf,下载失败:403 权限不足)

2、解析工具使用方法

将showmap_all和hprof_all目录下载到本地,使用showmap_data_max_parse工具在linux环境上解析一下即可。

解析工具的命令格式:./showmap_data_max_parse --showmap_dir <showmap日志目录> --hprof_dir <hprof日志目录> --output_dir <解析结果输出目录>

运行命令解析后会在结果输出目录生成如下三个文件:

📷 图片描述: 运行命令解析后在结果输出目录生成的三个文件。分别是aging_showmap_detail.csv、aging_showmap_detail.html和aging_showmap_max_result.txt。其中,aging_showmap_detail.csv和aging_showmap_detail.html用于解析showmap的整体数据变化趋势,aging_showmap_max_result.txt则存放峰值的核心数据,包括RSS维度和PSS维度的峰值信息。该图片与上下文紧密相关,直观呈现了解析结果文件的名称及用途。(token HsWgbIlh2olaw5x3kXqcMR9wnmg,下载失败:403 权限不足)

showmap的整体数据变化趋势在aging_showmap_detail.csv和aging_showmap_detail.html中

📷 图片描述: 老化测试中Showmap的内存趋势图,包含RSS和PSS维度。图中有多个颜色标识的曲线,分别代表不同内存维度的数值变化,如RSS Total、RSS Native、RSS Shared等。图中还标注了部分峰值点,如RSS 1457200、RSS 1457204等。该图与上下文紧密相关,是对解析工具命令运行后生成的aging_showmap_detail.csv和aging_showmap_detail.html中showmap的整体数据变化趋势的可视化呈现。(token LMrob8Owmov5nsx4pRdcRrUkn6d,下载失败:403 权限不足)

峰值的核心数据存放在aging_showmap_max_result.txt中:

RSS维度的峰值信息:

📷 图片描述: 内存老化测试中Showmap峰值分析结果,包含系统内存峰值信息。文件名为systemui_dijun_2947500000000_iter1_showmap_9.txt,文件编号9,测试场景为systemui,设备为dijun,轮次iter1,起始时间戳259010000000(9291 - 01 - 09 06:13:20),峰值时间为294750000000(未知),峰值81240 KB,最近的hprof文件为systemui_dijun_2911200000000_iter1_hprof_5.hprof。该图片与上下文介绍的内存峰值信息解析相关,是解析结果的具体呈现。(token WX2sbmkGGo8Mg6x4ZdwcoxGanzc,下载失败:403 权限不足)

PSS维度的峰值信息:

📷 图片描述: 老化场景单独解析内存峰值信息中PSS维度的部分内容。其中被红色框高亮突出显示的是PSS维度下Java Heap(匿名页 - Java)的峰值信息。文件为systemui_dijun_26183999999_iter1_showmap_9.txt,编号9,测试场景为systemui,设备dijun,轮次iter1,起始时间1921 - 01 - 09 06:13:20,峰值时间戳5243 KB,最近的hprof文件为systemui_dijun_2912100000000_iter1_hprof_5.hprof。此图片是对上文提到的PSS维度峰值信息的具体呈现。(token ASewbg1GKojUZHxOL58clTsBnDe,下载失败:403 权限不足)