背景介绍
为了进一步提高鲲鹏云的软件移植效率与工作量评估以及性能调优能力深化;针对华为云鲲鹏云,鲲鹏软件栈的开发工具中提供的三款分析迁移与性能优化工具进行了研究;并给出了验证报告;具体工具如下:
Dependency Advisor
一、工具介绍
一款可以简化客户应用迁移到TaiShan服务器过程的工具。该工具安装在X86服务器上,当客户有软件需要移植到TaiShan服务器上时,可先用该工具分析可移植性和移植投入。该工具解决了客户软件移植评估分析过程中人工分析投入大、准确率低、整体效率低下的痛点,通过该工具能够自动分析并输出指导报告。
工具支持的功能特性如下:
检查用户软件资源包(RPM、JAR、TAR、zip、gzip文件)中包含的SO依赖库,并评估SO依赖库的可移植性。
检查指定的用户软件安装路径下的SO依赖库,并评估SO依赖库的可移植性。
检查用户软件C/C++软件构建工程文件,并评估该文件的可移植性。
检查用户软件C/C++源码,并评估软件源文件的可移植性。
向用户提供软件移植报告,提供移植工作量评估。
支持命令行方式和Web两种工作模式。
二、安装
按照《华为鲲鹏分析扫描工具 用户指南.pdf》在linux-x86_64安装web模式。
三、进行测试
案例一
以hadoop安装包为例分析发布版本二进制软件包迁移可行性及迁移投入
该发布包中部分包含so文件的jar包需要重新编译迁移,hadoop相关的多个二进制文件以及so动态库需要重新编译。
分析结果如下:
从分析报告可知迁移需要重新编译上述5个库文件,但该库的路径不够明确。
案例二
以mysql-clustre源码包为例分析源码包迁移可行性及迁移投入
该源码包迁移过程中遇到C库不兼容导致的C代码修改40行以及汇编未适配导致的20行左右内嵌汇编需要重写。
分析结果如下:
从分析报告可知无需代码量修改可直接重新编译进行迁移。
四、总结
1. 优点
1)安装、使用简单,方便,可在迁移前进行分析,工具无需安装到迁移环境上;
2)支持RPM、JAR、TAR、zip、gzip文件等文件的分析;
3)根据分析报告给出具体的工作量。
2. 缺点
1)只能分析出so文件是否需要重新编译,并且未给出so所在路径以便查找所属包;
2)对C/C++源码分析不够准确,存在遗漏项,导致工作量遗漏;
3)工具未评估so的可移植性。
4)源码编译时的工作量评估不够准确。
3. 预测使用场景
1)业务二进制发布包迁移评估工作量时可使用该工具进行评估作为参考,但不可过度依赖该工具评估的工作量。
Porting Advisor
一、工具介绍
该工具是一款可以简化客户应用迁移到TaiShan服务器的过程的工具。当客户有X86平台上源代码的软件要移植到TaiShan服务器上时,可用该工具自动分析出需修改的代码内容,并指导用户如何修改。该工具解决了用户代码兼容性人工排查困难、移植经验欠缺、反复依赖编译调错定位等痛点。
支持的功能特性如下:
检查用户C/C++软件构建工程文件,并指导用户如何移植该文件。
检查用户C/C++软件构建工程文件使用的链接库,并提供可移植性信息。
检查用户C/C++软件源码,并指导用户如何移植源文件。
检查用户软件中X86汇编代码,并指导用户如何移植。
支持命令行方式和Web两种工作模式。
二、安装
按照《华为鲲鹏代码迁移工具 用户指南.pdf》在linux-x86_64安装web模式。
三、进行测试
案例一
以mysql-clustre源码包为例分析源码包迁移可行性
该源码包迁移过程中遇到C库不兼容导致的C代码修改40行以及汇编未适配导致的20行左右内嵌汇编需要增加。
分析结果如下:
从分析结果看未扫出任何需要修改的代码,与实际不符。
四、总结
1. 优点
1)安装、使用简单,方便,可在迁移前进行分析,工具无需安装到迁移环境上;
2. 缺点
1)内嵌汇编检查不够完善。
2)对库调用检查不完整(如:syscall(__NR_epoll_create, size));
3)当工具无法扫描到,实施时人工识别到时,无法从工具页面获取如何修改的案例。
4)用户手册中的白名单不知从哪里获取更新,并且其格式是什么,资料中未给出。
5)用户对自己识别到的常用迁移问题无法扩展。
3. 预测使用场景
1)业务代码或开源代码迁移前先用该工具扫描,可以识别到部分迁移过程可能会遇到的问题。
Tuning Kit
一、工具介绍
是针对TaiShan服务器的性能分析和优化工具,能收集服务器的处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析出系统性能指标,定位到瓶颈点及热点函数。
华为鲲鹏性能优化工具支持的功能特性如下:
支持采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的CPU Cycles性能事件,能够快速定位到热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。
支持热点函数按照CPU核/线程/模块进行分组,支持查看热点函数调用栈。
支持通过火焰图查看热点函数及其调用栈。
支持代码映射功能,即查看函数内的热点指令及该指令对应的高级语言文件及行号。
支持显示汇编代码的控制流图。
支持分析Java代码的热点函数及热点指令。
二、安装
按照《华为鲲鹏性能优化工具 用户指南.pdf》在鲲鹏云linux-aarch64实例上进行安装。
三、进行测试
案例一
以ls为例检查工具功能可用性
分析结果如下:
从分析结果可以看到热点函数、火焰图等信息进行分析系统瓶颈。
四、总结
1. 存在如下问题
1)安装资料2.3章节步骤8安装nginx:./auto/configure文件不存在,需要修改为./configure;
2)安装资料2.3章节步骤9安装python3:发布包未包含python3包,需要自行下载,资料未提供下载路径;
4)安装资料2.3章节步骤11修改端口号:端口号不可修改为8000端口,该端口为gunicron监听端口。
2. 优点:
1)安装部署方便、除第三方工具外支持一键部署;
2)工具分析比较全面,可分析正在运行以及未运行的C、JAVA进程的热点函数、指令以及调用栈、火焰图;
3)可分析整体系统的热点函数、指令以及火焰图。
3. 缺点:
1)需要部署在待分析环境上进行分析;
2)需要安装的第三方软件包python3、nginx、sqlite3需要自行编译安装,比较麻烦。
4. 预测使用场景
1)有助于开发人员分析客户应用以及开源软件迁移导致的性能变化的原因;
2)有助于开发人员进行软件及系统性能的调优;
3)由于需要部署到待测环境上,所以在生产环境上可能存在使用限制问题。
转载自鲲鹏论坛