2.3.t10 鲲鹏开发套件插件工具(vscode

431
鲲鹏开发套件 2.3.T20 插件工具(VSCode文档版本 01 发布日期 2021-10-25 华为技术有限公司

Upload: others

Post on 31-Oct-2021

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2.3.T10 鲲鹏开发套件插件工具(VSCode

鲲鹏开发套件2.3.T20

插件工具(VSCode)

文档版本 01

发布日期 2021-10-25

华为技术有限公司

Page 2: 2.3.T10 鲲鹏开发套件插件工具(VSCode

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址: https://www.huawei.com

客户服务邮箱: [email protected]

客户服务电话: 4008302118

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 i

Page 3: 2.3.T10 鲲鹏开发套件插件工具(VSCode

目 录

1 工具概述......................................................................................................................................1

2 安装..............................................................................................................................................32.1 安装 Kunpeng DevKit 插件....................................................................................................................................................32.2 安装鲲鹏开发套件.................................................................................................................................................................... 42.3 安装并登录鲲鹏代码迁移工具...............................................................................................................................................52.4 安装并登陆鲲鹏性能分析工具............................................................................................................................................ 112.5 安装鲲鹏编译插件.................................................................................................................................................................. 162.6 安装鲲鹏加速库插件............................................................................................................................................................. 172.7 升级性能分析工具.................................................................................................................................................................. 222.8 卸载性能分析工具.................................................................................................................................................................. 262.9 升级鲲鹏代码迁移工具......................................................................................................................................................... 282.10 卸载鲲鹏代码迁移工具....................................................................................................................................................... 31

3 代码迁移插件............................................................................................................................343.1 介绍............................................................................................................................................................................................ 343.2 特性指南................................................................................................................................................................................... 353.2.1 软件迁移评估....................................................................................................................................................................... 353.2.1.1 特性描述............................................................................................................................................................................ 353.2.1.2 特性操作............................................................................................................................................................................ 353.2.2 源码迁移................................................................................................................................................................................ 403.2.2.1 特性描述............................................................................................................................................................................ 403.2.2.2 特性操作............................................................................................................................................................................ 403.2.3 软件包重构........................................................................................................................................................................... 533.2.3.1 特性描述............................................................................................................................................................................ 533.2.3.2 特性操作............................................................................................................................................................................ 533.2.4 专项软件迁移....................................................................................................................................................................... 543.2.4.1 特性描述............................................................................................................................................................................ 553.2.4.2 特性操作............................................................................................................................................................................ 553.2.5 增强功能................................................................................................................................................................................ 593.2.5.1 特性描述............................................................................................................................................................................ 593.2.5.2 特性操作............................................................................................................................................................................ 593.2.5.2.1 64 位运行模式检查...................................................................................................................................................... 593.2.5.2.2 结构体字节对齐检查................................................................................................................................................... 61

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 ii

Page 4: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3.2.5.2.3 内存一致性检查............................................................................................................................................................ 643.3 常用操作................................................................................................................................................................................... 753.3.1 通过普通用户连接鲲鹏代码迁移工具............................................................................................................................753.3.2 配置 SSH 密钥认证............................................................................................................................................................. 753.3.3 配置扫描参数....................................................................................................................................................................... 763.3.4 重置密码................................................................................................................................................................................ 783.3.5 管理依赖字典....................................................................................................................................................................... 803.3.6 管理弱口令字典................................................................................................................................................................... 813.3.7 修改当前登录用户密码...................................................................................................................................................... 823.3.8 配置历史报告阈值.............................................................................................................................................................. 833.3.9 管理 web 服务端证书........................................................................................................................................................ 843.3.10 管理吊销证书列表............................................................................................................................................................ 873.3.11 排查服务端状态异常问题............................................................................................................................................... 893.3.12 构建工具配置文件识别编译命令.................................................................................................................................. 893.3.13 多任务并发异常处理........................................................................................................................................................913.3.14 反馈建议............................................................................................................................................................................. 913.3.15 申请试用远程实验室........................................................................................................................................................923.4 FAQ............................................................................................................................................................................................ 933.4.1 工具检测连接失败提示算法不匹配................................................................................................................................ 933.4.2 工具安装失败提示 OpenSSL 库未找到......................................................................................................................... 943.4.3 工具安装时出现 nginx 编译错误而导致安装失败...................................................................................................... 963.4.4 工具在容器中安装失败...................................................................................................................................................... 963.4.5 Ctrl+Z 快捷键在代码迁移插件不能进行操作撤销...................................................................................................... 973.4.6 专项软件迁移 yum 命令无法执行.................................................................................................................................. 97

4 性能分析插件............................................................................................................................994.1 介绍............................................................................................................................................................................................ 994.2 特性指南................................................................................................................................................................................. 1054.2.1 系统性能分析.....................................................................................................................................................................1054.2.1.1 联动分析.......................................................................................................................................................................... 1054.2.1.1.1 特性描述...................................................................................................................................................................... 1054.2.1.1.2 特性操作...................................................................................................................................................................... 1064.2.1.2 HPC 分析......................................................................................................................................................................... 1104.2.1.2.1 特性描述...................................................................................................................................................................... 1104.2.1.2.2 特性操作...................................................................................................................................................................... 1104.2.1.3 全景分析.......................................................................................................................................................................... 1144.2.1.3.1 特性描述...................................................................................................................................................................... 1154.2.1.3.2 特性操作...................................................................................................................................................................... 1154.2.1.4 微架构分析......................................................................................................................................................................1384.2.1.4.1 特性描述...................................................................................................................................................................... 1384.2.1.4.2 特性操作...................................................................................................................................................................... 1384.2.1.5 访存分析.......................................................................................................................................................................... 1424.2.1.5.1 特性描述...................................................................................................................................................................... 142

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 iii

Page 5: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.2.1.5.2 特性操作...................................................................................................................................................................... 1434.2.1.6 I/O 分析........................................................................................................................................................................... 1534.2.1.6.1 特性描述...................................................................................................................................................................... 1534.2.1.6.2 特性操作...................................................................................................................................................................... 1534.2.1.7 进程/线程性能分析....................................................................................................................................................... 1584.2.1.7.1 特性描述...................................................................................................................................................................... 1584.2.1.7.2 特性操作...................................................................................................................................................................... 1594.2.1.8 热点函数分析................................................................................................................................................................. 1644.2.1.8.1 特性描述...................................................................................................................................................................... 1644.2.1.8.2 特性操作...................................................................................................................................................................... 1644.2.1.9 资源调度分析................................................................................................................................................................. 1694.2.1.9.1 特性描述...................................................................................................................................................................... 1694.2.1.9.2 特性操作...................................................................................................................................................................... 1694.2.1.10 锁与等待分析............................................................................................................................................................... 1734.2.1.10.1 特性描述.................................................................................................................................................................... 1734.2.1.10.2 特性操作.................................................................................................................................................................... 1734.2.2 Java 性能分析.................................................................................................................................................................... 1764.2.2.1 在线分析.......................................................................................................................................................................... 1764.2.2.1.1 特性描述...................................................................................................................................................................... 1764.2.2.1.2 特性操作...................................................................................................................................................................... 1774.2.2.2 采样分析.......................................................................................................................................................................... 2124.2.2.2.1 特性描述...................................................................................................................................................................... 2124.2.2.2.2 特性操作...................................................................................................................................................................... 2134.2.3 系统诊断............................................................................................................................................................................. 2254.2.3.1 内存泄漏诊断................................................................................................................................................................. 2254.2.3.1.1 特性描述...................................................................................................................................................................... 2254.2.3.1.2 特性操作...................................................................................................................................................................... 2254.2.3.2 内存越界诊断................................................................................................................................................................. 2344.2.3.2.1 特性描述...................................................................................................................................................................... 2344.2.3.2.2 特性操作...................................................................................................................................................................... 2344.2.3.3 网络 IO 诊断................................................................................................................................................................... 2354.2.3.3.1 特性描述...................................................................................................................................................................... 2354.2.3.3.2 特性操作...................................................................................................................................................................... 2354.2.4 调优助手............................................................................................................................................................................. 2454.2.4.1 工程管理(调优助手)................................................................................................................................................ 2454.2.4.1.1 特性描述...................................................................................................................................................................... 2454.2.4.1.2 特性操作...................................................................................................................................................................... 2454.2.4.2 任务管理(调优助手)................................................................................................................................................ 2474.2.4.2.1 特性描述...................................................................................................................................................................... 2474.2.4.2.2 特性操作...................................................................................................................................................................... 2474.3 常用操作................................................................................................................................................................................. 2874.3.1 配置 SSH 密钥认证...........................................................................................................................................................287

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 iv

Page 6: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.2 修改用户密码.....................................................................................................................................................................2884.3.3 修改内部端口号................................................................................................................................................................ 2894.3.4 采集 MySQL Trace 数据................................................................................................................................................. 2914.3.5 创建用户............................................................................................................................................................................. 2974.3.6 管理弱口令字典................................................................................................................................................................ 2994.3.7 管理服务证书.....................................................................................................................................................................2994.3.7.1 Agent 服务证书管理.................................................................................................................................................... 3004.3.7.2 内部通信证书管理.........................................................................................................................................................3044.3.7.3 如何管理 Web 服务端证书......................................................................................................................................... 3054.3.8 反馈建议............................................................................................................................................................................. 3084.3.9 普通用户连接鲲鹏性能分析工具.................................................................................................................................. 3094.3.10 添加节点(系统性能分析及调优助手).................................................................................................................. 3104.3.11 添加目标环境(Java 性能分析)...............................................................................................................................3124.3.12 创建分析任务.................................................................................................................................................................. 3144.3.12.1 创建系统分析任务(系统性能分析)................................................................................................................... 3144.3.12.2 创建 Java 分析任务.................................................................................................................................................... 3164.3.12.3 创建系统诊断任务...................................................................................................................................................... 3164.3.13 安装根证书(Java 性能分析)................................................................................................................................... 3214.3.14 优化建议指导.................................................................................................................................................................. 3284.3.14.1 系统配置....................................................................................................................................................................... 3284.3.14.1.1 升级网卡驱动........................................................................................................................................................... 3284.3.14.1.2 中断 NUMA 绑核.....................................................................................................................................................3304.3.14.2 热点函数....................................................................................................................................................................... 3324.3.14.3 系统性能....................................................................................................................................................................... 3324.3.14.3.1 %USER....................................................................................................................................................................... 3321. TLB Miss 高.............................................................................................................................................................................. 3322. page fault 高........................................................................................................................................................................... 3334.3.14.3.2 %IOWAIT.................................................................................................................................................................. 3331. 写比例高................................................................................................................................................................................... 3332. 吞吐量小时延大...................................................................................................................................................................... 3344.3.14.3.3 %IRQ.......................................................................................................................................................................... 3411. 网络收发 IOPS 或流量高...................................................................................................................................................... 3414.3.14.3.4 %SOFT....................................................................................................................................................................... 3431. 升级网卡驱动...........................................................................................................................................................................3434.3.14.4 进程线程性能............................................................................................................................................................... 3444.3.14.4.1 %USER....................................................................................................................................................................... 3451. TLB Miss 高.............................................................................................................................................................................. 3452. page fault 高........................................................................................................................................................................... 3453. 编译器及编译选项.................................................................................................................................................................. 3454.3.14.4.2 %SYSTEM..................................................................................................................................................................3481. 内存消耗高............................................................................................................................................................................... 3494.4 代码样例................................................................................................................................................................................. 350

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 v

Page 7: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.5 FAQ.......................................................................................................................................................................................... 3514.5.1 工具检测连接失败提示算法不匹配..............................................................................................................................3524.5.2 工具安装失败提示 OpenSSL 库未找到....................................................................................................................... 3524.5.3 工具安装时出现 nginx 编译错误而导致安装失败....................................................................................................3554.5.4 工具在容器中安装失败................................................................................................................................................... 3554.5.5 工具安装时 SELinux 处于强制模式导致安装失败....................................................................................................3554.5.6 服务端状态异常问题排查............................................................................................................................................... 356

5 编译插件................................................................................................................................. 3585.1 介绍......................................................................................................................................................................................... 3585.2 特性指南................................................................................................................................................................................. 3585.2.1 配置服务器和编译器部署............................................................................................................................................... 3585.2.1.1 特性描述.......................................................................................................................................................................... 3585.2.1.2 特性操作.......................................................................................................................................................................... 3595.2.1.2.1 配置服务器.................................................................................................................................................................. 3595.2.1.2.2 安装鲲鹏 GCC 编译器............................................................................................................................................... 3645.2.1.2.3 安装毕昇编译器......................................................................................................................................................... 3675.2.1.2.4 安装毕昇 JDK.............................................................................................................................................................. 3695.2.2 编译调试............................................................................................................................................................................. 3715.2.2.1 特性描述.......................................................................................................................................................................... 3715.2.2.2 特性操作.......................................................................................................................................................................... 3715.2.3 自动同步............................................................................................................................................................................. 3835.2.3.1 特性描述.......................................................................................................................................................................... 3835.2.3.2 特性操作.......................................................................................................................................................................... 3835.2.4 手动同步............................................................................................................................................................................. 3855.2.4.1 特性描述.......................................................................................................................................................................... 3855.2.4.2 特性操作.......................................................................................................................................................................... 3855.3 常用操作................................................................................................................................................................................. 3855.3.1 安装编译调试工具............................................................................................................................................................ 3855.3.2 申请并配置远程实验室................................................................................................................................................... 3865.3.3 如何通过普通用户安装编译器...................................................................................................................................... 3875.3.4 反馈建议............................................................................................................................................................................. 3885.4 佳实践................................................................................................................................................................................. 3885.4.1 编译调试插件.....................................................................................................................................................................3885.4.1.1 安装...................................................................................................................................................................................3895.4.1.2 配置服务器......................................................................................................................................................................3895.4.1.2.1 添加目标服务器......................................................................................................................................................... 3895.4.1.2.2 免费试用...................................................................................................................................................................... 3935.4.1.3 部署编译器......................................................................................................................................................................3945.4.1.4 编译任务.......................................................................................................................................................................... 3965.4.1.4.1 生成 tasks.json 文件................................................................................................................................................. 3965.4.1.4.2 配置编译任务信息..................................................................................................................................................... 3975.4.1.4.3 启动编译...................................................................................................................................................................... 398

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 vi

Page 8: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.4.1.4.4 修改或删除编译任务................................................................................................................................................. 3995.4.1.5 测试用例.......................................................................................................................................................................... 3995.4.1.5.1 生成 launch.json 文件.............................................................................................................................................. 3995.4.1.5.2 配置调试任务信息..................................................................................................................................................... 4005.4.1.5.3 调试任务...................................................................................................................................................................... 4025.4.1.5.4 修改或删除测试用例................................................................................................................................................. 4035.4.1.6 附录...................................................................................................................................................................................4035.4.1.6.1 配置文件 settings.json............................................................................................................................................. 4035.4.1.6.2 编译任务配置文件 tasks.json................................................................................................................................. 4045.4.1.6.3 测试用例配置文件 launch.json.............................................................................................................................. 4045.4.1.6.4 实际样例 demo(world.c)................................................................................................................................... 4055.5 FAQ.......................................................................................................................................................................................... 4055.5.1 编译器系统信息文件校验不通过.................................................................................................................................. 4055.5.2 编译器部署失败................................................................................................................................................................ 406

6 加速库插件............................................................................................................................. 4086.1 介绍......................................................................................................................................................................................... 4086.2 特性指南................................................................................................................................................................................. 4106.2.1 加速分析............................................................................................................................................................................. 4106.2.1.1 特性描述.......................................................................................................................................................................... 4116.2.1.2 特性操作.......................................................................................................................................................................... 4116.2.2 编码辅助............................................................................................................................................................................. 4126.2.2.1 特性描述.......................................................................................................................................................................... 4126.2.2.2 特性操作.......................................................................................................................................................................... 4136.2.3 函数搜索............................................................................................................................................................................. 4136.2.3.1 特性描述.......................................................................................................................................................................... 4136.2.3.2 特性操作.......................................................................................................................................................................... 4136.3 常用操作................................................................................................................................................................................. 4146.3.1 字典管理............................................................................................................................................................................. 4146.3.2 选择加速分析类型............................................................................................................................................................ 4156.3.3 检测新版本......................................................................................................................................................................... 4166.3.4 反馈建议............................................................................................................................................................................. 4166.4 FAQ.......................................................................................................................................................................................... 4176.4.1 无法下载字典文件............................................................................................................................................................ 4176.4.2 无法解析字典文件内容................................................................................................................................................... 4186.4.3 无法获取远端校验文件................................................................................................................................................... 4196.4.4 字典文件校验不通过........................................................................................................................................................4206.4.5 字典文件校验不合法........................................................................................................................................................4206.4.6 导入本地字典文件常见问题...........................................................................................................................................4216.4.7 函数搜索功能常见问题................................................................................................................................................... 4226.4.8 待扫描文件中函数数量与扫描结果中的函数数量不一致.......................................................................................4226.4.9 为什么语法没有高亮........................................................................................................................................................423

鲲鹏开发套件插件工具(VSCode) 目 录

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 vii

Page 9: 2.3.T10 鲲鹏开发套件插件工具(VSCode

1 工具概述

鲲鹏开发套件插件工具是基于Visual Studio Code提供给开发者面向鲲鹏平台进行应用软件开发、迁移、编译调试、性能调优等一系列端到端工具,即插即用。一体化呈现代码迁移插件、加速库插件、编译插件及性能分析插件的完整开发套件。

鲲鹏开发套件插件工具是一个工具集,由多个插件组成,支持IDE前端界面,支持一键式安装后端,代码编辑体验增强,自动检测安装鲲鹏编译器,编译调试,用例可视化,编码辅助,工程分析扫描。用户可以通过安装Kunpeng DevKit插件直接将四个插件都安装好,也可以单独选择个别插件安装使用。

图 1-1 逻辑模型

鲲鹏开发套件插件工具(VSCode) 1 工具概述

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 1

Page 10: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 1-1 逻辑模型

模块名 功能

一键式部署 一键式安装/升级/卸载代码迁移工具和性能分析工具后端。

后端工具安装包通过鲲鹏网站下载。

UI入口 工具的VSCode前端入口。

编译调试 通过SSH远程安装鲲鹏编译器。

● 一键式安装鲲鹏GCC/毕昇编译器/毕昇JDK● 可视化编译配置任务,一键式任务运行

● 远程单步调试C/C++代码

● 编译调试过程信息实时展示

● gtest框架用例树渲染及状态展示

用户配置 用户可配置远程环境,编译/调试任务。

辅助编码 插件会自动下载鲲鹏的字典库数据,字典数据下载完成后,插件会启用针对加速库函数的语法高亮、函数定义跳转、以及代码自动补全。

语法字典在联网环境下自动从github上下载。

鲲鹏开发套件插件工具(VSCode) 1 工具概述

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 2

Page 11: 2.3.T10 鲲鹏开发套件插件工具(VSCode

2 安装

2.1 安装Kunpeng DevKit插件

2.2 安装鲲鹏开发套件

2.3 安装并登录鲲鹏代码迁移工具

2.4 安装并登陆鲲鹏性能分析工具

2.5 安装鲲鹏编译插件

2.6 安装鲲鹏加速库插件

2.7 升级性能分析工具

2.8 卸载性能分析工具

2.9 升级鲲鹏代码迁移工具

2.10 卸载鲲鹏代码迁移工具

2.1 安装 Kunpeng DevKit 插件Kunpeng DevKit插件是Visual Studio Code的一款扩展工具。用于为开发者提供面向鲲鹏平台进行应用软件开发、迁移、编译调试、性能调优等一系列端到端工具,即插即用。作为鲲鹏平台插件管理工具,极大的简化客户在应用迁移到鲲鹏平台的过程,为客户提供快捷的插件管理方式,方便客户配置鲲鹏平台应用开发环境。

Kunpeng DevKit插件目前支持对以下插件的管理:

● 鲲鹏代码迁移插件:自动扫描并分析用户待迁移软件,提供专业迁移指导。

● 鲲鹏加速库插件:对软件基础库进行深度性能优化,构建常用软件在鲲鹏平台上的性能竞争力。

● 鲲鹏编译插件:支持鲲鹏平台远程编译调试能力,通过可视化界面提升编译调试效率。

● 鲲鹏性能分析插件:支持系统性能分析和Java性能分析,提供系统全景及常见应用场景下的性能采集和分析能力,同时基于调优系统给出优化建议。

当前版本的Kunpeng DevKit插件已在如下操作系统上验证:

Windows 10

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 3

Page 12: 2.3.T10 鲲鹏开发套件插件工具(VSCode

插件安装● 在Visual Studio Code扩展菜单中根据关键字搜索“Kunpeng DevKit”,或者在

Visual Studio Code应用商店网页中找到Kunpeng DevKit,单击“安装”。

● 也可选择在华为企业业务网站下载鲲鹏开发套件扩展安装包。步骤如下:

步骤1 登录华为企业业务网站下载Kunpeng DevKit插件和数字签名,确保与网站上的原始安装包一致。

说明

校验方法如下:

1. 在如下链接中获取校验工具和校验方法:

https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

2. 下载以上链接中的《OpenPGP签名验证指南》,并根据指南进行软件包完整性检查。

步骤2 打开本地PC上的Visual Studio Code,在左侧菜单栏中单击扩展图标。

步骤3 在更多选项中单击“从VSIX安装”,选择已下载的鲲鹏开发套件扩展安装包,单击“安装”。

说明

英文界面Visual Studio Code对应的选项为“Install from VSIX”,请根据实际情况选择。

----结束

安装完成后,按下“Ctrl + Shift + X ”或单击左侧菜单栏中 打开扩展,在搜索框

中输入“Kunpeng DevKit”,单击搜索结果中的 。

2.2 安装鲲鹏开发套件

简介

鲲鹏开发套件是Visual Studio Code的一款扩展工具,通常将此类工具称作集成开发环境(IDE)插件。

鲲鹏性能分析插件是其中一个子工具,作为客户端调用服务端的功能,完成系统性能分析和Java性能分析。系统性能分析在软件运行状态下,通过采集系统数据,可视化分析出系统性能指标,精准定位到瓶颈点及热点函数,提供一站式分析报告、多维度数据关联及优化建议。Java性能分析针对服务器上运行的Java程序,图形化显示Java程序的堆、线程、锁、垃圾回收等信息,收集热点函数,定位性能瓶颈点,帮助用户采取针对性优化。系统诊断工具通过分析系统运行指标,识别异常点,例如:内存泄漏、内存越界、网络丢包等,并给出优化建议。工具还支持压测系统,如:网络IO,评估系统 大性能。调优助手工具通过系统化组织和分析性能指标、热点函数、系统配置等信息,形成系统资源消耗链条,引导用户根据优化路径分析性能瓶颈,并针对每条优化路径给出优化建议和操作指导,以此实现快速调优。

环境要求

当前版本已在如下操作系统上验证:

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 4

Page 13: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● Windows 10● macOS 10.0 x86● macOS 10.0 ARM

安装方式

说明

该插件兼容VScode 新版本。

安装方式有以下两种:

1. 在Visual Studio Code应用商店安装鲲鹏开发套件。

在Visual Studio Code扩展菜单中搜索“Kunpeng DevKit”,单击“安装”。(或在Visual Studio Code应用商店中安装)。

2. 在华为企业业务网站下载鲲鹏开发套件扩展安装包。步骤如下:

步骤1 登录华为企业业务网站下载鲲鹏开发套件扩展安装包和数字签名,并校验安装包,确保与网站上的原始安装包一致。

说明

校验方法如下:

1. 点此链接获取校验工具和校验方法。

2. 参见步骤1.1中下载的《OpenPGP签名验证指南》进行软件包完整性检查。

步骤2 打开本地PC上的Visual Studio Code,在左侧菜单栏中单击扩展图标。

步骤3 在更多选项中单击“从VSIX安装...”,选择已下载的鲲鹏开发套件扩展安装包,单击“安装”。

安装完成后,在左侧菜单栏中单击 打开鲲鹏性能分析插件。

----结束

2.3 安装并登录鲲鹏代码迁移工具

须知

● 代码迁移工具进行代码迁移时,需要调用Linux下的rpm、deb等命令才能完成扫描和迁移相关任务,这些命令和逻辑必须在后端Linux运行。

● IDE插件只支持以Web模式使用root用户安装工具,不支持以CLI模式安装工具。

● 由于root用户拥有 高权限,直接使用root用户登录服务器可能会存在安全风险。建议您使用普通用户登录服务器后切换为root用户,再执行后续安装操作,并建议您通过配置禁止root用户SSH登录的选项,来提升系统安全性。具体配置如下:

先以普通用户登录服务器,切换至root登录后检查/etc/ssh/sshd_config配置项PermitRootlogin,如果显示no,说明禁止了root用户登录;如果显示yes,则需要将配置项PermitRootlogin是否设置no。

可以通过以下两种方式安装鲲鹏代码迁移工具:

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 5

Page 14: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 选择使用插件部署功能一键式安装:

– 部署过程中,系统会自动下载鲲鹏代码迁移工具安装包。

– 请确保部署工具的服务器可以访问外部网络,否则工具将部署失败(出现如下报错)。

curl: (7) Failed connect to mirrors.huaweicloud.com:443; Operation nowin progressConnection to xx.xx.xx.xx closed.

● 选择手动下载并在服务器上安装鲲鹏代码迁移工具:

– 详细操作请参见鲲鹏代码迁移工具中的“配置操作系统yum/apt/zypper源”和“安装”章节。

– 手动将鲲鹏代码迁移工具的安装包下载到本地,并将安装包、安装包验证的Keys.txt和.asc文件上传到目标服务器“/tmp”路径,以vs_code+时间戳命名的目录下,再使用插件的一键式安装。

说明

获取软件包后,需要校验软件包,确保与网站上的原始软件包一致。校验方法参见鲲鹏代码迁移工具中“安装包完整性校验”章节。

以使用部署功能安装工具为例,安装鲲鹏开发套件后,选择鲲鹏代码迁移插件 ,单击“配置服务器”,打开如图2-1所示界面,参数描述如表2-1所示。配置参数后单击“保存”。

图 2-1 配置远端服务器

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 6

Page 15: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 2-1 配置远端服务器参数说明

参数 说明

IP地址 安装工具的远程服务器IP地址。

端口 工具安装过程中设置的HTTPS端口。

说明如果服务器已开通防火墙,使用代码迁移工具前请确认服务器OS防火墙已开通HTTPS端口(默认为8084)。

服务证书设置 ● 选择“指定根证书”前,请管理员在“web服务端证书”设置中获取CSR文件并用该CSR文件在CA系统或自签名证书系统生成标准的X.509证书,完成签名后导入证书,完成后通过指定根证书建立安全连接。

● 选择“信任当前服务证书”则意味着用户信任同服务端建立的连接。

如果没有在服务器上部署工具,单击“点击此处部署”,打开“部署前必读”对话框。勾选“我已阅读以上文字”,单击“确认”,打开如图2-2所示界面,参数描述如表2-2所示。

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始部署”。

安装过程中需要:

● 再次输入服务器用户密码。

● 输入服务器root用户密码安装工具。

● 配置工具安装目录,默认为“/opt”。

● 配置Web Server的IP地址。

● 配置HTTPS端口,默认端口为8084。

● 配置tool端口,默认端口为7998。

说明

如果服务器已开通防火墙,使用代码迁移工具前请确认服务器OS防火墙已开通HTTPS端口(默认为8084)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 7

Page 16: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-2 安装代码迁移工具

表 2-2 安装代码迁移工具参数说明

参数 说明

IP地址 待安装工具的服务器IP地址。

SSH端口 待安装工具的服务器SSH端口。

操作系统用户名 登录待安装工具的服务器操作系统的用户名。

说明如果想通过普通用户安装,需要满足一些条件,具体参照3.3.1 通过普通用户连接鲲鹏代码迁移工具。

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见3.3.2 配置SSH密钥认证。

操作系统用户密码 登录待安装工具的服务器操作系统的用户密码。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 8

Page 17: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

说明安装后如需卸载工具,使用SSH远程登录工具,以root用户登录Linux操作系统命令行界面,执行如下命令(“/opt/portadv”为工具安装目录,请根据实际情况替换):

bash /opt/portadv/tools/uninstall.sh

工具部署完成后,单击“立即登录”,打开如图2-3和图2-4所示界面,参数描述如表2-3所示。输入用户名和密码,单击“登录”。

说明

默认连续5次登录失败,系统将对此用户进行锁定,锁定3分钟后可以重新登录。

图 2-3 首次登录

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 9

Page 18: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-4 非首次登录

表 2-3 登录代码迁移工具参数描述

参数 说明

用户名 登录工具的用户。默认的管理员为portadmin。

密码 登录工具的用户密码。

工具安装完成后首次登录需要创建管理员密码,密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合

● 密码不能是用户名

说明

● 首次登录的普通用户,系统提示修改初始密码,请按提示修改密码。

● 为了保证安全,用户应定期修改自己的登录密码。

确认密码 再次输入设置的密码。

记住密码 当用户勾选“记住密码”登录后,再次登录该用户时,只需输入用户名,单击密码框会自动填充密码,以方便用户登录。记住密码功能只支持普通用户,不支持管理员账户(portadmin)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 10

Page 19: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

自动登录 当用户同时勾选“记住密码”和“自动登录”登录后,插件重启后,无需输入用户名和密码,自动登录该用户。自动密码功能只支持普通用户,不支持管理员账户(portadmin)。

工具部署完成后,在左上角 的下拉菜单中单击“配置远端服务器”可切换其他已经部署了代码迁移工具的服务器。

2.4 安装并登陆鲲鹏性能分析工具

须知

● 由于root用户拥有 高权限,直接使用root用户登录服务器可能会存在安全风险。建议您使用普通用户登录服务器后切换为root用户,再执行后续安装操作,并建议您通过配置禁止root用户SSH登录的选项,来提升系统安全性。具体配置如下:

先以普通用户登录服务器,切换至root登录后检查/etc/ssh/sshd_config配置项PermitRootlogin,如果显示no,说明禁止了root用户登录;如果显示yes,则需要将配置项PermitRootlogin设置no。

● SSH是高危服务,建议不要在公网开放。

环境准备

安装鲲鹏性能分析工具之前,请按照确认用于安装的系统运行环境是否符合要求。

表 2-4 运行环境要求

类别 配置要求 说明

硬盘空间 ● 只安装系统性能分析 ,建议至少规划:80GB。

● 同时安装系统性能分析 、Java性能分析和系统诊断,建议至少规划:110GB。

安装目录所在的分区剩余大小作为工具安装目录和工作空间。

说明用户的工作空间为工具安装目录,默认安装在“/opt/hyper_tuner”目录,可手动配置。

安装

可以通过以下方式安装鲲鹏性能分析工具:

1. 使用插件部署功能一键式安装:

– 部署过程中,系统会自动下载鲲鹏工具安装包。

– 请确保部署工具的服务器可以访问外部网络,否则工具将部署失败(出现如下报错)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 11

Page 20: 2.3.T10 鲲鹏开发套件插件工具(VSCode

curl: (7) Failed connect to mirrors.huaweicloud.com:443; Operation now in progressConnection to xx.xx.xx.xx closed.

2. 手动下载并在服务器上安装鲲鹏性能分析工具:

详细操作请参见《鲲鹏性能分析工具 用户指南》中的“安装”章节。

3. 手动将鲲鹏性能分析工具安装过程中需要的软件包下载到本地,并将安装包、安装包验证的Keys.txt和.asc文件上传到目标服务器“/tmp”路径,以vs_code+时间戳命名的目录下,再使用插件的一键式安装。

说明

获取软件包后,需要校验软件包,确保与网站上的原始软件包一致。校验方法参加《鲲鹏性能分析工具 用户指南》中“安装包完整性校验”章节。

以使用部署功能一键式安装为例,安装鲲鹏开发套件后,选择鲲鹏性能分析插件

,单击“配置远端服务器”,打开如图2-5所示界面,参数描述如表2-5所示。配置参数后单击“保存”。

图 2-5 配置远端服务器

表 2-5 配置远端服务器参数说明

参数 说明

IP地址 安装工具的远程服务器IP地址。

HTTPS端口 工具安装过程中设置的HTTPS端口。

说明如果服务器已开通防火墙,使用鲲鹏性能分析工具前请确认服务器OS防火墙已开通HTTPS端口(默认为8086)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 12

Page 21: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

远端服务器配置完成后,单击“鲲鹏性能分析插件”菜单右侧的“更多操作…” ,在下拉菜单中选择“配置远端服务器”可以切换其他已经部署了鲲鹏性能分析工具的服务器。

如果没有在服务器上部署工具,单击图2-5中的“点击此处部署”,打开“部署前必读”对话框。勾选“我已阅读以上文字”,单击“确认”,打开如图2-6所示界面,参数描述如表2-6所示。

图 2-6 安装性能分析工具

表 2-6 安装性能分析工具参数说明

参数 说明

IP地址 待安装工具的服务器IP地址。

SSH端口 待安装工具的服务器SSH端口(默认为22)。

操作系统用户名 登录待安装工具的服务器操作系统的用户名。

说明可以使用root用户/普通用户登录,建议使用普通用户,相关加固操作请参考“如何通过普通用户连接鲲鹏性能分析工具”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 13

Page 22: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见“如何配置SSH密钥认证”。

操作系统用户密码 操作系统用户密码。

说明安装后如需卸载工具,使用SSH远程登录工具,以系统用户登录Linux操作系统命令行界面(若以普通系统用户登录,需要执行su切换到root用户下执行后续操作)。

执行如下命令进入工具安装目录(“/opt/hyper_tuner”为工具安装目录,请根据实际情况替换)

cd /opt/hyper_tuner再执行如下命令卸载工具。

./hyper_tuner_uninstall.sh

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始部署”。

安装过程中需要:

● 输入服务器普通用户密码。

● 输入服务器root用户密码。

● 配置工具安装目录,默认为“/opt”。

● 配置服务器的IP地址,需要手动输入服务器IP地址对应的编号。

● 配置鲲鹏性能分析工具HTTPS端口,默认为8086,设置范围为1024~65535。

● 配置系统性能分析工具内部使用的IP地址,默认为使用服务器的IP地址。

● 配置服务器和Agent节点服务器之间的通信端口,默认为50051,设置范围为1024~65535。

● 配置Java性能分析工具内部使用的IP地址,默认为使用服务器的IP地址。

● 配置Java性能分析工具内部模块通信端口,默认为9090,设置范围为1024~65535。

说明

● 工具安装完成后会判断防火墙服务端口是否放开,当用户在交互界面输入“y”,将自动开启该端口。如果服务器防火墙是关闭状态,或防火墙服务端口已开启,会跳过此步骤。

● 如果工具安装时选择自动打开防火墙服务端口,卸载工具后,端口会恢复至安装前的状态。

登录

工具部署完成后,单击“立即登录”,打开如图2-7和图2-8所示界面,参数描述如表2-7所示。输入用户名和密码,单击“登录”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 14

Page 23: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 工具安装完成后首次登录需要创建管理员密码。普通用户在创建时设置初始密码,在首次登录时强制要求重置密码。为了保证安全,用户应定期修改自己的登录密码。

● 默认连续5次登录失败,系统将对此用户进行锁定,锁定3分钟后可以重新登录。

图 2-7 首次登录

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 15

Page 24: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-8 非首次登录

表 2-7 登录性能分析工具参数描述

参数 说明

用户名 登录工具的用户。

说明默认的管理员用户名为tunadmin。

密码 登录工具的用户密码。密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合

● 密码不能是用户名或用户名的逆序

● 密码不能在弱口令字典

确认密码 再次输入设置的密码。

记住密码 开启记住密码功能后,下次登录会自动填充已保存的账号密码。

说明管理员用户不支持保存密码。

自动登录 开启自动登录功能的同时将默认记住密码,下次登录时无需输入账号密码,直接进入工具页面。

2.5 安装鲲鹏编译插件鲲鹏开发套件是基于Visual Studio Code的一款扩展工具,编译插件是其中的一个子工具。编译插件即插即用,支持一键安装鲲鹏GCC编译器,以及鲲鹏平台远程调试能力,支持的功能特性如下:

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 16

Page 25: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 一键式部署

支持从Visual Studio Marketplace下载并在线安装插件,同时支持一键部署服务端鲲鹏GCC编译器

● 编译调试

– 一键式安装鲲鹏GCC– 可视化编译配置任务,一键式任务运行

– 远程单步调试C/C++代码

– 编译调试过程信息实时展示

– gtest框架用例树渲染及状态展示

当前已在如下服务端操作系统上验证:

● CentOS 7.6

● openEuler 20.03(LTS)(鲲鹏GCC编译器)

鲲鹏编译插件安装方式如下:

● 在Visual Studio Code扩展菜单中根据关键字搜索“Kunpeng DevKit”或“Kunpeng Compiler Plugin”,或者在Visual Studio Code应用商店网页中找到Kunpeng Compiler Plugin,单击“安装”。

● 也可选择在华为企业业务网站下载鲲鹏开发套件扩展安装包。步骤如下:

步骤1 登录华为企业业务网站下载鲲鹏编译插件安装包和数字签名,确保与网站上的原始安装包一致。

说明

校验方法如下:

1. 在如下链接中获取校验工具和校验方法:

https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

2. 下载以上链接中的《OpenPGP签名验证指南》,并根据指南进行软件包完整性检查。

步骤2 打开本地PC上的Visual Studio Code,在左侧菜单栏中单击扩展图标。

步骤3 在更多选项中单击“从VSIX安装”,选择已下载的鲲鹏开发套件扩展安装包,单击“安装”。

----结束

安装完成后,在左侧菜单栏中单击 打开鲲鹏编译插件。

说明

该插件兼容VScode 新版本。

2.6 安装鲲鹏加速库插件鲲鹏开发套件是基于Visual Studio Code的一款扩展工具,鲲鹏加速库插件是其中的一个子工具。加速库插件即插即用,能够扫描代码文件中可使用鲲鹏加速库优化后的函数或汇编指令,生成可视化报告;编码时能够自动匹配鲲鹏加速库函数字典,智能提

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 17

Page 26: 2.3.T10 鲲鹏开发套件插件工具(VSCode

示、高亮、联想字典中可以替换的库和函数。关于鲲鹏加速库的详细介绍请参见鲲鹏加速库插件。

鲲鹏加速库插件支持的功能特性如下:

● 智能联想

Coding时自动联想鲲鹏加速库优化后的相关函数

● 函数搜索

支持鲲鹏加速库函数的代码定义跳转、函数搜索

● 语法高亮

Coding时高亮鲲鹏加速库优化后的相关函数

● 加速分析

支持工程和文件扫描,识别出可以用鲲鹏加速库替换的函数

● 字典管理

支持加速库函数字典管理,可线上(自动)和线下更新

鲲鹏加速库插件安装步骤如下:

● 在Visual Studio Code扩展菜单中根据关键字搜索“Kunpeng DevKit”或“Kunpeng Library Plugin”,或者在Visual Studio Code应用商店网页中找到Kunpeng Library Plugin,单击“安装”。

● 也可选择在华为企业业务网站下载并安装鲲鹏开发套件扩展安装包。步骤如下:

步骤1 登录华为企业业务网站下载鲲鹏加速库插件安装包和数字签名,确保与网站上的原始安装包一致。

说明

校验方法如下:

1. 在如下链接中获取校验工具和校验方法:

https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

2. 下载以上链接中的《OpenPGP签名验证指南》,并根据指南进行软件包完整性检查。

步骤2 打开本地PC上的Visual Studio Code,在左侧菜单栏中单击扩展图标。

步骤3 在更多选项中单击“从VSIX安装”,选择已下载的鲲鹏开发套件扩展安装包,单击“安装”。

说明

● 英文界面Visual Studio Code对应的选项为“Install from VSIX”,请根据实际情况选择。

● 该插件兼容VScode 新版本。

----结束

鲲鹏加速库插件安装成功,请参考以下图片使用鲲鹏加速库插件的功能。

加速分析

在VSCode资源栏目,用户可以右键点击自己项目下的任意文件或者文件夹或者空白区域,此时会出现“鲲鹏加速分析”、“清除加速分析报告”、“查看加速分析报告”(英文环境下对应“Kunpeng accelerated analysis”、“Clear accelerated analysisreport”、“View accelerated analysis report”)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 18

Page 27: 2.3.T10 鲲鹏开发套件插件工具(VSCode

单击“鲲鹏加速分析”后,插件会分析工程里面依赖加速库的函数,并将扫描的结果在可视化面板以及VSCode的问题栏展示。点击问题栏中的问题可以跳转到函数方法,点击可视化界面中的“函数所在路径”可以跳转到函数方法。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 19

Page 28: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-9 加速分析

编码辅助

当插件安装完成后,插件会自动下载鲲鹏的字典库数据,字典数据下载完成后,插件会启用针对加速库函数的语法高亮、函数定义跳转、以及代码自动补全。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 20

Page 29: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-10 编码辅助(语法高亮/智能联想/智能提示/定义跳转)

函数搜索

单击编辑区右上角的 ,会出现函数搜索界面,提供对function函数的名称、优化点、描述搜索,以及Intrinsic函数的名称、函数详细定义、Intel对应的Intrinsic功能函数名称、Intel对应的汇编指令名称、ARM对应的汇编指令名称的搜索。单击function函数会跳转头文件定义,单击Intrinsic函数会打开Intrinsic的帮助文档地址。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 21

Page 30: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-11 加速库优化后的函数搜索

其他常用操作● 支持配置远程字典地址,导入本地字典,是否开启加速库提示。

说明

● 用户启动鲲鹏鲲鹏加速库插件时会自动从远程字典地址获取 新字典数据。请提前确认VSCode网络代理是否正常配置,并能联网。

● 如果要导入本地字典,请从以下连接获取:

https://gitee.com/kunpengcompute/kunpengacclibdict/raw/master/dictionary.json

● 单击编辑区右上角 ,即可检测新版本。插件自身也存在自动检测机制。

2.7 升级性能分析工具支持从V2.2.0、V2.2.T2、V2.2.T2.SPC100、V2.2.T2.SPC200、V2.2.T3版本升级到2.3.T10版本,再通过2.3.T10升级到2.3.T20版本。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 22

Page 31: 2.3.T10 鲲鹏开发套件插件工具(VSCode

前提条件● 已将所需升级的鲲鹏性能分析工具的软件包下载到本地。

联网状态下,系统会自动下载鲲鹏性能分析工具包。也可手动将鲲鹏性能分析工具的安装包下载到本地,上传到目标服务器用户主目录下,再使用插件的一键式安装。

● 升级前请确认鲲鹏性能分析工具可以正常使用。

● 升级前请确认安装空间至少保留原工具安装目录的大小加上新版本安装空间(1GB),且软件包所在目录的空闲空间不能小于原工具安装目录的大小。

当前安装版本为V2.2.T3时,原工具安装目录指“/opt/hyper_tuner”,当前安装版本为V2.2.T3之前的版本时,原工具安装目录指“/opt/tuning_kit”。

须知

● 升级过程中请勿执行Ctrl+Z、Ctrl+C和重启系统操作。

● 建议不要在分析任务执行过程中升级,否则可能出现异常。

● 鲲鹏性能分析插件客户端升级需先卸载当前安装的插件,再下载 新版本安装即可。

升级操作

步骤1 单击“鲲鹏性能分析工具”菜单右侧“更多操作…” ,在下拉菜单中选择“升级性能分析工具”。

步骤2 打开如图2-12所示界面,参数描述如表2-8所示。

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始升级”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 23

Page 32: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-12 升级性能分析工具

表 2-8 升级性能分析工具参数说明

参数 说明

IP地址 待升级工具的服务器IP端口。

SSH端口 待升级工具的服务器SSH端口。

操作系统用户名 登录待升级工具的服务器操作系统的用户名。

说明可以使用root用户/普通用户登录,建议使用普通用户,相关加固操作请参考“如何通过普通用户连接鲲鹏性能分析工具”。

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见“如何配置SSH密钥认证”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 24

Page 33: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

操作系统用户名密码 操作系统用户密码。

步骤3 在终端输入服务器普通用户密码。

步骤4 在终端输入服务器root用户密码。

步骤5 在终端输入原工具安装目录,默认为“/opt/hyper_tuner”。

步骤6 显示如下内容,确认是否升级鲲鹏性能分析工具。To update Hyper-Tuner, you need to install debugging tools such as binutils, strace, etc. from the operating system image file. Do you want to continue [ Y/[N] ]?

● 继续升级:输入Y 。● 放弃升级:输入N。

步骤7 界面显示“工具升级成功”,单击“立即登录”按钮使用升级后的工具。

说明

如果在其他服务器上添加了Agent节点,升级系统性能分析工具过程中请根据实际情况输入添加节点时的用户名、安装节点的绝对路径、登录节点服务器的SSH私钥文件的绝对路径、SSH私钥文件的口令或者root用户密码依次升级所有的Agent节点。

----结束

版本回退

出现以下情况,可以进行回退操作。

1. 升级过程中显示如下内容(其他升级失败的情况下,工具版本依然为升级前的版本,不需要进行回退操作)。Upgrade Hyper-tuner failed, Do you want to rollback Hyper-Tuner [ Y/[N] ]?

– 确认回退:输入Y 。升级脚本会自动将工具回退到升级前的版本。

– 放弃回退:输入N。

须知

放弃回退将导致工具无法使用,不建议放弃回退。

2. 升级过程中出现如下“升级成功”的提示。Upgrade success!

回退到升级前的版本步骤如下:

步骤1 使用SSH远程登录工具,以系统用户登录Linux操作系统命令行界面。

说明

该步骤必须在root用户下执行,若以普通系统用户登录,需要执行su切换到root用户下执行后续操作。

步骤2 执行如下命令进入鲲鹏性能分析工具安装目录(“/opt/hyper_tuner”为工具安装目录,请根据实际情况替换)。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 25

Page 34: 2.3.T10 鲲鹏开发套件插件工具(VSCode

cd /opt/hyper_tuner

步骤3 执行如下命令回退到升级前的版本。

./hyper_tuner_install.sh -r

显示如下内容说明回退成功。Hyper-tuner rollback Success

说明

如果在其他服务器上添加了Agent节点,回退系统性能分析工具过程中请根据实际情况输入登录节点服务器的SSH私钥文件的绝对路径、SSH私钥文件的口令或者root用户密码依次回退所有的Agent节点。

----结束

2.8 卸载性能分析工具

须知

建议不要在分析任务执行过程中卸载,否则可能出现异常。

前提条件

没有正在运行中的任务。

操作步骤

步骤1 单击“鲲鹏性能分析工具”菜单右侧“更多操作…” ,在下拉菜单中选择“卸载性能分析工具”。

步骤2 打开如图2-13所示界面,参数描述如表2-9所示。

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始卸载”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 26

Page 35: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-13 卸载性能分析工具

表 2-9 卸载性能分析工具参数说明

参数 说明

IP地址 待卸载工具的服务器IP端口

SSH端口 待卸载工具的服务器SSH端口

操作系统用户名 登录待安装工具的服务器操作系统的用户名。

说明可以使用root用户/普通用户登录,建议使用普通用户,相关加固操作请参考“如何通过普通用户连接鲲鹏性能分析工具”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 27

Page 36: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见“如何配置SSH密钥认证”。

操作系统用户名密码 操作系统用户密码

步骤3 在终端输入服务器普通用户密码。

步骤4 在终端输入服务器root用户密码。

步骤5 出现如下提示,确认是否卸载华为鲲鹏性能分析工具。You will remove from your operating system, do you want to continue [ y/[n] ]?

● 确认卸载:输入y 。● 放弃卸载:输入n。

步骤6 界面显示“工具卸载成功”,单击“完成”按钮完成卸载。

说明

如果没有在界面删除Agent节点,卸载系统性能分析工具过程中请根据实际情况输入登录Agent节点服务器的SSH私钥文件的绝对路径、SSH私钥文件的口令或者root用户密码依次卸载所有的Agent节点。

----结束

2.9 升级鲲鹏代码迁移工具● 支持2.2.T1、2.2.T2、2.2.T2.SPC100、2.2.T2.SPC200、2.2.T2.SPC300版本升级到

2.2.T3版本。

● 支持2.2.T3升级到2.2.1版本。

● 支持2.2.T3、2.2.1升级到2.2.T4版本。

● 支持2.2.T4、2.2.1升级到2.3.T10版本。

● 支持2.3.T10升级到2.3.T20版本。

前提条件● 联网状态下,系统会自动下载鲲鹏代码迁移工具安装包。

● 也可以手动将所需升级的鲲鹏代码迁移工具的软件包下载到本地,并上传到目标服务器用户主目录下,再使用一键式升级。

获取软件包后,需要校验软件包,确保与网站上的原始软件包一致。详细步骤如下:

a. 分别下载软件数字证书和软件。

b. 在如下链接中获取校验工具和校验方法:

https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 28

Page 37: 2.3.T10 鲲鹏开发套件插件工具(VSCode

c. 参见2中下载的《OpenPGP签名验证指南》进行软件包完整性检查。

● 升级前请确认鲲鹏代码迁移工具可以正常使用。

● 工具默认安装在“/opt/portadv”目录,升级前请确认安装空间至少保留2GB。

须知

● 不支持在分析任务执行过程中升级,请确保升级时没有任务在运行。

● 升级过程中请勿执行Ctrl+Z、Ctrl+C和重启系统操作。

● IDE插件只支持以Web模式升级工具,不支持以CLI模式升级工具。

● 鲲鹏性能分析插件客户端升级需先卸载当前安装的插件,再下载 新版本安装即可。

升级操作

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“升级代码迁移工具”。

步骤2 打开如图2-14所示界面,参数描述如表2-10所示。

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始升级”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 29

Page 38: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-14 升级代码迁移工具

表 2-10 升级代码迁移工具参数说明

参数 说明

IP地址 待升级工具的服务器IP地址。

SSH端口 待升级工具的服务器SSH端口。

操作系统用户名 登录待安装工具的服务器操作系统的用户名。

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见3.3.2 配置SSH密钥认证。

操作系统用户名密码 登录待安装工具的服务器操作系统的用户密码。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 30

Page 39: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 在终端输入服务器用户密码。

步骤4 在终端输入服务器root用户密码。

步骤5 在终端输入工具安装目录,默认为“/opt/portadv”。

步骤6 显示如下内容,确认是否升级鲲鹏代码迁移工具。Please confirm that there are no running tasks(yes/no):

● 确认升级:输入yes后回车。

● 放弃升级:输入no后回车。

步骤7 在终端输入当前服务器的IP地址。

步骤8 在终端输入HTTPS端口,默认端口为8084。

步骤9 在终端输入tool端口,默认端口为7998。

步骤10 界面显示“工具升级成功”,单击“立即登录”按钮使用升级后的工具。

须知

升级失败的情况下,升级脚本会自动将工具回退到升级前的版本。

----结束

2.10 卸载鲲鹏代码迁移工具

须知

建议不要在分析任务执行过程中卸载,否则可能出现异常。

IDE插件只支持以Web模式卸载工具,不支持以CLI模式卸载工具。

前提条件

没有正在运行中的任务。

操作步骤

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“卸载代码迁移工具”。

步骤2 打开如图2-15所示界面,参数描述如表2-11所示。

配置参数后单击“检测连接”。若工具提示连接检测失败,可根据提示修改参数后重新尝试检测连接。工具提示“SSH连接检测成功”后,单击“开始卸载”。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 31

Page 40: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 2-15 卸载代码迁移工具

表 2-11 卸载代码迁移工具参数说明

参数 说明

IP地址 待卸载工具的服务器IP地址。

SSH端口 待卸载工具的服务器SSH端口。

操作系统用户名 登录待安装工具的服务器操作系统的用户名。

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 32

Page 41: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要导入“id_rsa”私钥文件,详细操作请参见3.3.2 配置SSH密钥认证。

操作系统用户密码 登录待安装工具的服务器操作系统的用户密码。

步骤3 在终端输入服务器用户密码。

步骤4 在终端输入服务器root用户密码。

步骤5 显示如下内容,确认是否卸载鲲鹏代码迁移工具。Are you sure you want to uninstall porting advisor?(y/n)

● 确认卸载:输入y 后回车。

● 放弃卸载:输入n后回车。

步骤6 界面显示“工具卸载成功”,单击“完成”按钮完成卸载。

说明

当用户执行卸载命令时,如果有正在运行的任务,工具会给出提示“A task is running. Are yousure you want to uninstall porting advisor?(y/n)”。若用户仍选择卸载,当前运行的任务会直接中断。

----结束

鲲鹏开发套件插件工具(VSCode) 2 安装

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 33

Page 42: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3 代码迁移插件

3.1 介绍

3.2 特性指南

3.3 常用操作

3.4 FAQ

3.1 介绍鲲鹏代码迁移插件作为客户端调用服务端的功能,完成扫描迁移任务,可以对待迁移软件进行快速扫描分析,并提供专业的代码迁移指导,极大简化客户应用迁移到鲲鹏平台的过程。当客户有软件需要迁移到鲲鹏平台上时,可先用该工具分析可迁移性和迁移投入,以解决客户软件迁移评估中分析投入大、准确率低、整体效率低下的痛点。

代码迁移工具支持五个功能特性:

● 软件迁移评估:自动扫描并分析软件包(非源码包)、已安装的软件,提供可迁移性评估报告。

● 源码迁移:能够自动检查并分析出用户源码、C/C++/ASM/Fortran/Python解释型语言/汇编软件构建工程文件、C/C++/ASM/Fortran/Python解释型语言/汇编软件构建工程文件使用的链接库、x86汇编代码中需要修改的内容,并给出修改指导,以解决用户代码兼容性排查困难、迁移经验欠缺、反复依赖编译调错定位等痛点。

● 软件包重构:通过分析x86平台软件包(RPM格式、DEB格式)的软件构成关系及硬件依赖性,重构适用于鲲鹏平台的软件包。

● 专项软件迁移:基于鲲鹏解决方案的软件迁移模板,进行自动化迁移修改、编译、构建软件包,帮助用户快速迁移软件。

● 增强功能:支持软件代码质量的静态检查功能,如在64位环境中运行的兼容性检查、结构体字节对齐检查和内存一致性检查等增强功能。

说明

仅支持x86 Linux到Kunpeng Linux的扫描与分析,不支持Windows软件代码的扫描、分析与迁移。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 34

Page 43: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3.2 特性指南

3.2.1 软件迁移评估

3.2.1.1 特性描述

软件迁移评估帮助用户分析用户x86环境上软件包安装路径中的SO库文件,并检查这些文件与鲲鹏平台的兼容性。

3.2.1.2 特性操作

软件迁移评估适用于x86服务器和基于鲲鹏916/920的服务器。

前提条件

已成功登录鲲鹏代码迁移工具。

说明

“/opt/portadv”为工具默认安装目录,下文以此默认路径为例,请根据实际情况替换。

操作步骤

步骤1 在页面左侧,选择“软件迁移评估”,点击 创建任务。

步骤2 在创建分析任务区勾选“分析软件包”或“分析已安装软件”,并对以下参数进行配置。

说明

● “分析软件包”和“分析已安装软件”相互独立,可根据实际需求勾选其中的一个或所有。

● “分析已安装软件”只能在x86环境上勾选使用。

图 3-1 创建任务区参数项

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 35

Page 44: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 3-1 创建分析任务区参数项说明

参数 说明

分析软件包

已上传的软件包 单击填写框选择下拉框中的软件包即可,也可以手动填写软件包名称,多个路径请通过“,”分隔。

上传软件包 单击“上传”按钮上传软件包。

说明

● 只允许同时上传一个软件包,软件包小于或等于1GB,且解压后小于或等于剩余磁盘空间的一半。

● 软件包支持rpm、deb、jar、war、tar、zip、gz、tar.gz、tar.bz,tgz、tbz,tbz2、egg、whl类型。

● 类Debian系统上可以扫描deb、jar、war、tar、zip、gz、tar.gz、tar.bz,tgz、tbz,tbz2、egg、whl类型。

● 类RHEL系统上可以扫描rpm、jar、war、tar、zip、gz、tar.gz、tar.bz,tgz、tbz,tbz2、egg、whl类型。

分析已安装软件(仅x86平台)

x86上已安装路径 需要填写已安装软件的绝对路径,例如:/home/pathname/说明

需要保证porting用户对已安装软件的绝对路径有访问权限,权限不足会导致分析失败。

目标操作系统 选择目标系统版本。可选择:

● BC-Linux 7.6/7.7● CentOS 7.4/7.5/7.6/7.7/8.0/8.1/8.2● Deepin V15.2● Debian 10● EulerOS 2.8● iSoft 5.1● Kylin V10 SP1● LinxOS 6.0.90● NeoKylin V7U5/V7U6● openEuler 20.03● openEuler 20.03 SP1● openEuler 20.03 SP2● SUSE SLES 15.1● Ubuntu 18.04.x/20.04.x● UOS 20 SP1● uosEuler 20● 更多

说明点击“更多”后,根据页面上的步骤升级依赖字典,然后查看更新后的操作系统列表。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 36

Page 45: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

目标系统内核版本 选择目标系统内核版本。

● BC-Linux 7.6支持4.19.25● BC-Linux 7.7支持4.19.25● CentOS 7.4支持4.11.0● CentOS 7.5支持4.14.0● CentOS 7.6支持4.14.0● CentOS 7.7支持4.18.0● CentOS 8.0支持4.18.0● CentOS 8.1支持4.18.0● CentOS 8.2支持4.18.0● Deepin V15.2支持4.19.34● Debian 10支持4.14.0● EulerOS 2.8支持4.19.36● iSoft 5.1支持4.19.90● Kylin V10 SP1支持4.19.90● LinxOS 6.0.90支持4.19.0● NeoKylin V7U5支持4.14.0● NeoKylin V7U6支持4.14.0● openEuler 20.03支持4.19.90● openEuler 20.03 SP1支持4.19.90● openEuler 20.03 SP2支持4.19.90● SUSE SLES 15.1支持4.12.14● Ubuntu 18.04.x支持4.15.0● Ubuntu 20.04.x支持5.4.0● UOS 20 SP1支持4.19.0● uosEuler 20支持4.19.90

步骤3 单击“开始分析”,生成分析报告。

分析完成后,自动跳转至分析报告详情界面,如图3-2图3-3所示,参数描述如表3-2所示。

说明

● 用户可在任务进行过程中单击关闭,取消任务。

● 支持多个用户同时创建分析任务。

● 用户可以在分析报告的列表中,单击指定分析任务的报告名称查看分析报告。

● 分析报告的名称为生成报告的时间。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 37

Page 46: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-2 迁移评估报告结果

图 3-3 迁移评估报告结果

表 3-2 迁移评估报告结果参数说明

参数 说明

配置信息 显示软件安装包存放路径或软件包名称或x86上已安装软件路径,目标操作系统和目标系统内核版本。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 38

Page 47: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

与架构相关的依赖库文件

显示SO文件。

● 针对兼容鲲鹏平台的动态库、静态库文件、软件包、可执行文件、Jar包等,用户可以直接单击处理建议中的“下载”,下载鲲鹏平台可用的文件,然后进行替换,或者下载鲲鹏版本源码,直接编译。对于一些未开源的依赖文件,工具无法提供下载URL,请自行获取后进行替换。

● 针对鲲鹏平台兼容性未知的文件,请先在鲲鹏平台上验证。若不兼容,请联系供应方获取鲲鹏兼容版本,或获取源码并编译成鲲鹏兼容版本,或使用其他方案替代。

说明如果“处理建议”列中提示“该文件已兼容鲲鹏平台”,则表示分析的对象是已迁移过的软件包或源码包且该x86依赖文件已在鲲鹏平台有对应鲲鹏依赖文件。

单击“下载报告 (.csv)”,下载的分析报告如图3-4所示,参数描述如表3-3所示。

图 3-4 分析报告的基本信息

表 3-3 分析报告的基本信息说明

参数 说明

Scanned time 扫描时间。

Configuration

Softwarepackagepath

软件包存放路径。

Softwareinstallationpath

软件已安装路径。

Target OS 目标操作系统。

Target OSKernelVersion

内核版本。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 39

Page 48: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Summary

TotalDependencies: x,Compatible: x, To beVerified: x

显示依赖库文件总数,兼容鲲鹏平台的文件数,待验证文件数。

Architecture-relatedDependencies

显示依赖库文件扫描的详细信息:

● File Name:文件名称

● File Type:文件类型

● Path:存放路径

● Analysis Results:分析结果

● Remarks:备注

● Handling Suggestions:处理建议

● URL:下载地址

----结束

3.2.2 源码迁移

3.2.2.1 特性描述

源码迁移功能分析用户C/C++/ASM/Fortran/PythonGo/解释型语言软件的可迁移性。

3.2.2.2 特性操作

单击“源码迁移”后面的 ,打开如图3-5图3-6所示界面,参数描述如表3-4所示。配置参数后单击“开始分析”。

说明

以下内容中的“/opt/portadv”为服务端默认安装路径,如果为自定义安装,请使用对应的自定义安装路径替换。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 40

Page 49: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-5 新建源码迁移任务

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 41

Page 50: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-6 新建源码迁移任务

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 42

Page 51: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 3-4 源码迁移参数说明

参数 说明

源码文件存放路径 需要填写相对路径,可以通过以下两种方式实现:

● 单击“上传”按钮上传压缩包(上传过程中自动解压)或文件夹。

● 先将源码文件手动上传到服务器上本工具的指定路径下(例如:/opt/portadv/portadmin/sourcecode/),再单击填写框选择下拉框中的源码路径即可,也可以手动填写源码路径。

说明在扫描含全汇编的源码时,用户需要先在源码文件的根目录下编译生成make.log,然后再打包上传。例如:用户要扫描含纯汇编的源码example,需要先在/opt/portadv/用户名/sourcecode/example/下生成make.log,再填写相对路径example。

在“上传”下拉菜单中可选择:

● 压缩包:选择上传源码文件压缩包,工具会自动解压。

说明

● 支持上传tar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zipzip,tar,gz,tar.gz,tar.bz,tar.bz2,tar.xz,tgz,tbz,tbz2,txz格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。

● 工具会自动将压缩包解压至和压缩包同名的文件夹。例如上传的压缩包为test.zip,工具会自动解压至test文件夹。

● 文件夹:选择上传本地解压的源码文件夹。

说明

● 只允许同时上传一个文件夹,文件夹小于或等于剩余磁盘空间的一半。

● IE浏览器不兼容文件夹上传功能,上传文件夹需要使用其他浏览器,如Google Chrome,Microsoft Edge。

源码类型 选择源码类型。可选择:

● C/C++● C/C++/ASM● Fortran● Python● Go● 解释型语言

目前支持的解释型语言包括Python、Java和Scala。

源码增强检查 选择是否对源码进行增强检查。默认为“否”。

启动源码增强检查可以提升源码在鲲鹏平台上运行的性能。例如检查结构体变量是否对齐鲲鹏Cache Line。

Suggestion: Set the __attribute__((__aligned__(128)))attribute for the struct structure in line XX.

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 43

Page 52: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

编译器版本 选择编译器版本。

目标系统默认的编译器版本:

● BC-Linux 7.6默认为GCC 4.8.5● BC-Linux 7.7默认为GCC 4.8.5● CentOS 7.4默认为GCC 4.8.5● CentOS 7.5默认为GCC 4.8.5● CentOS 7.6默认为GCC 4.8.5● CentOS 7.7默认为GCC 4.8.5● CentOS 8.0默认为GCC 8.2● CentOS 8.1默认为GCC 8.3● CentOS 8.2默认为GCC 8.3● Deepin 15.2默认为GCC 6.3● Debian 10默认为GCC 8.3● EulerOS 2.8默认为GCC 7.3● iSoft 5.1默认为GCC 7.3● Kylin V10 SP1默认为GCC 7.3● LinxOS 6.0.90默认为GCC 6.3● NeoKylin V7U5默认为GCC 4.8.5● NeoKylin V7U6默认为GCC 4.8.5● openEuler 20.03默认为GCC 7.3● openEuler 20.03 SP1默认为GCC 7.3● openEuler 20.03 SP2默认为GCC 7.3● SUSE SLES 15.1默认为GCC 7.4● Ubuntu 18.04.x默认为GCC 7.3● Ubuntu 20.04.x默认为GCC 9.3● UOS 20 SP1默认为GCC 8.3● uosEuler 20默认为GCC 7.3C/C++/ASM和Go可选择:

● GCC4.8.5/4.9.3/5.1/5.2/5.3/5.4/5.5/6.1/6.2/6.3/6.4/6.5/7.1/7.2/7.3/7.4/8.1/8.2/8.3/9.1/9.2/9.3说明

C/C++/ASM与GO语言共用编译器版本。

Fortran可选择:

● GFORTRAN 7● GFORTRAN 8● GFORTRAN 9

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 44

Page 53: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

构建工具 选择构建工具。可选择:

● make● cmake● automake● go

说明“go”选项只在“源码类型”仅勾选“Go”或同时勾选“Go”与“解释型语言”时可用。

编译命令 源码编译命令。

编译命令需根据构建工具配置文件确定,具体请参考3.3.12 构建工具配置文件识别编译命令。

目标操作系统 选择目标系统版本。可选择:

● BC-Linux 7.6/7.7● CentOS 7.4/7.5/7.6/7.7/8.0/8.1/8.2● Deepin V15.2● Debian 10● EulerOS 2.8● iSoft 5.1● Kylin V10 SP1● LinxOS 6.0.90● NeoKylin V7U5● NeoKylin V7U6● openEuler 20.03● openEuler 20.03 SP1● openEuler 20.03 SP2● SUSE SLES 15.1● Ubuntu 18.04.x● Ubuntu 20.04.x● UOS 20 SP1● uosEuler 20● 更多

说明点击“更多”后,根据页面上的步骤升级依赖字典,然后查看更新后的操作系统列表。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 45

Page 54: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

目标系统内核版本 目标操作系统对应的内核版本。

● BC-Linux 7.6支持4.19.25● BC-Linux 7.7支持4.19.25● CentOS 7.4支持4.11.0● CentOS 7.5支持4.14.0● CentOS 7.6支持4.14.0● CentOS 7.7支持4.18.0● CentOS 8.0支持4.18.0● CentOS 8.1支持4.18.0● CentOS 8.2支持4.18.0● Deepin V15.2支持4.19.34● Debian 10支持4.14.0● EulerOS 2.8支持4.19.36● iSoft 5.1支持4.19.90● Kylin V10 SP1支持4.19.90● LinxOS 6.0.90支持4.19.0● NeoKylin V7U5支持4.14.0● NeoKylin V7U6支持4.14.0● openEuler 20.03支持4.19.90● openEuler 20.03 SP1支持4.19.90● openEuler 20.03 SP2支持4.19.90● SUSE SLES 15.1支持4.12.14● Ubuntu 18.04.x支持4.15.0● Ubuntu 20.04.x支持5.4.0● UOS 20 SP1支持4.19.0● uosEuler 20支持4.19.90

说明如果用户所处的环境Glibc版本低于2.28,则无法使用 新的汇编文件自动翻译功能,如有需要,请单击页面上的“查看安装指导”,按照指示进行操作。

分析完成后,自动跳转至分析报告详情界面,如图3-7图3-8所示。

说明

● 也可以在分析报告的列表中,单击指定分析任务的报告名称查看分析报告。

● 分析报告的名称为生成报告的时间。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 46

Page 55: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-7 迁移报告

图 3-8 迁移报告

说明

要显示页面右上角的“源码迁移人力”,需在“扫描参数配置”页面将“显示工作量评估结果”选为“是”。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 47

Page 56: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 3-5 迁移报告结果参数说明

参数 说明

配置信息 显示源码文件存放路径、是否执行源码增强检查、编译器版本、构建工具、编译命令、目标操作系统和目标系统内核版本。

与架构相关的依赖库文件

显示SO文件。

● 针对兼容鲲鹏平台的动态库、静态库文件、软件包、可执行文件、Jar包等,用户可以直接单击处理建议中的“下载”,下载鲲鹏平台可用的文件,然后进行替换,或者下载鲲鹏版本源码,直接编译。对于一些未开源的依赖文件,工具无法提供下载URL,请自行获取后进行替换。

● 针对鲲鹏平台兼容性未知的文件,请先在鲲鹏平台上验证。若不兼容,请联系供应方获取鲲鹏兼容版本,或获取源码并编译成鲲鹏兼容版本,或使用其他方案替代。

需要迁移的源文件 显示需要迁移的源文件总数和需要修改的代码行数,通过单击操作列“查看建议源码”可以快速进入对应的源码迁移建议页面。

文件类型包括C/C++ Source File,Fortran,makefile,Python,Go,Java,Scala以及.S FileASM File,可通过筛选查看具体类型的文件。

文件所在的路径根据Unicode编码排序,需修改的代码行根据行数排序。

单击“下载报告 (.csv)”,下载的分析报告如图3-9图3-10所示,参数描述如表3-7所示。

图 3-9 下载的分析报告

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 48

Page 57: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-10 下载的分析报告

表 3-6 分析报告的基本信息说明

参数 说明

Scanned time 扫描时间。

Configuration

Source Code File Path 扫描的源码文件存放路径。

Compiler Version 编译器版本。

Python 是否扫描Python源码。

Target OS 目标操作系统。

Target OS Kernel Version 内核版本。

Build Tool 构建工具。

Software make command 编译命令。

Summary Total Dependencies: x,Compatible: x, To beVerified: x

显示依赖库文件总数,兼容鲲鹏平台的文件数,待验证文件数。

Source Need ported 源码是否需要迁移。

● Yes● No

Scanned xx C/C++/Fortranfiles, xx Makefile/CMakelists/Automakerelated files, total xx filesneed to be ported.

显示需要迁移的C/C++/Fortran文件和Makefile/CMakelists/Automakerelated文件总数以及文件个数。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 49

Page 58: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Total xx lines C/C++/Makefile/CMakelists/Automake code and xxlines embedding ASM codeneed to be ported.

显示源码总行数以及需要迁移的内联汇编代码行数。

Scanned xx pure assemblyfiles, xx pure assembly filesto be ported.

显示全汇编文件总数以及需要迁移的汇编文件个数和汇编代码行数。

Scanned xx python files,total xx python files xx linesneed to be ported.

显示Python文件总数以及需要迁移的Python文件个数和Python代码行数。

Estimated transplantworkload: xx person/months.(C/C++/Fortran, 500Line/PM; ASM,250Line/PM)

显示源码迁移预估人力(x/人月)。

预估标准:1人月迁移工作量=500行C/C++/Fortran源代码,或250行汇编代码。

Architecture-related Dependencies 显示依赖库文件扫描的详细信息:

● File Name:文件名称

● File Type:文件类型

● Analysis Results:分析结果

● Handling Suggestions:处理建议

● URL:下载地址

Source files scan details are as follows: 显示源文件分析报告的详细信息:

filename:扫描文件全路径。

filetype:扫描文件的类型。

lineno:函数在文件中的行号。

rows:函数在文件中的总行数。

category:关键字所属类型。

keyword:关键字名称。

suggestion:迁移建议或者提示建议。

description:关键字用法描述。

表 3-7 分析报告的基本信息说明

参数 说明

Scanned time 扫描时间。

Configuration

Source Code File Path 扫描的源码文件存放路径。

Compiler Version 编译器版本。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 50

Page 59: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Python 是否扫描Python源码。

Target OS 目标操作系统。

Target OS Kernel Version 内核版本。

Build Tool 构建工具。

Software make command 编译命令。

SourceEnhance 是否开启“源码增强检查”

● True:开启

● False:关闭

Interpreted(Python) 分析对象是否包括解释型语言文件。

● True:是

● False:否

Go 分析对象是否包括Go语言文件。

● True:是

● False:否

Summary Compatible: x, To beVerified: x, TotalDependencies: x

显示兼容鲲鹏平台的文件数,待验证文件数,依赖库文件总数。

Source Need ported 源码是否需要迁移。

● Yes● No

Scanned xx C/C++/Fortranfiles, xx Makefile/CMakeLists.txt/Automakerelated files, total xx filesneed to be ported.

显示需要迁移的C/C++/Fortran文件和Makefile/CMakeLists.txt/Automakerelated文件总数以及文件个数。

Total xx lines C/C++/Makefile/CMakeLists.txt/Automake code and xxlines embedding ASM codeneed to be ported.

显示源码总行数以及需要迁移的内联汇编代码行数。

Scanned xx pure assemblyfiles, xx pure assembly filesto be ported.

显示全汇编文件总数以及需要迁移的汇编文件个数和汇编代码行数。

Scanned x Go files, total xGo files 28 lines need to bemigrated.

显示Go文件总数一级需要迁移的Go文件个数和代码行数。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 51

Page 60: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Scanned xx python files,total xx files xx lines needto be ported.

显示Python文件总数以及需要迁移的Python文件个数和Python代码行数。

Scanned xx java files, totalxx files xx lines need to beported.

显示Java文件总数以及需要迁移的Java文件个数和Java代码行数。

Scanned xx scala files, totalxx files xx lines need to beported.

显示Scala文件总数以及需要迁移的Scala文件个数和Scala代码行数。

Estimated transplantworkload: xx person/months.(C/C++/Fortran/Go,500Line/PM; ASM,250Line/PM)

显示源码迁移预估人力(x/人月)。

预估标准:1人月迁移工作量=500行C/C++/Fortran/Go源代码,或250行汇编代码。

Architecture-related Dependencies 显示依赖库文件扫描的详细信息:

● File Name:文件名称

● File Type:文件类型

● Analysis Results:分析结果

● Handling Suggestions:处理建议

● URL:下载地址

Source files scan details are as follows: 显示源文件分析报告的详细信息:

filename:扫描文件全路径。

filetype:扫描文件的类型。

line number:函数在文件中的行号。

rows:函数在文件中的总行数。

category:关键字所属类型。

keyword:关键字名称。

suggestion:迁移建议或者提示建议。

description:关键字用法描述。

在“迁移报告”的操作中直接单击“查看建议源码”,可以查看源码迁移建议,如图图3-11所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 52

Page 61: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-11 源码迁移建议

说明

● 用户可以将鼠标悬停置于有红色波浪线的代码上,参考修改建议修改源码。

● 用户可以将光标置于有红色波浪线的代码上,使用快捷键“ctrl+f10”修改。

3.2.3 软件包重构

3.2.3.1 特性描述

软件包重构能够分析用户提供的x86软件包,并根据用户提供的资源文件尝试构建鲲鹏平台软件包。软件包重构需要用户在鲲鹏平台使用。

3.2.3.2 特性操作

单击“软件包重构”,打开如图3-12所示界面,参数描述如表3-8所示。配置参数后单击“下一步”执行重构。

说明

● “/opt/portadv”为默认安装目录,下文以此默认路径为例,请根据实际情况替换。

● RPM包只能在类RHEL系统上执行,重构过程中需要依赖系统组件rpmrebuild/rpmbuild/rpm2cpio,请提前检查系统环境是否已满足。

安装rpmrebuild:自行下载rpmrebuild组件,并上传至服务器执行rpm -ivh xxx.rpm命令安装。

安装rpmbuild:执行yum list | grep rpm-build命令检查yum源中是否包含rpmbuild的rpm包。如果存在,执行yum install -y rpm-build安装。如果不存在,请自行下载对应组件,并上传至服务器执行rpm -ivh xxx.rpm命令安装。

● DEB包只能在类Debian系统上执行,重构过程中需要依赖系统组件ar/dpkg-deb,请提前检查系统环境是否已满足。

● 如果RPM包或者DEB包里面包含JAR包,请检查系统是否存在JAR命令,如果不存在,请安装JDK工具。

● 软件包重构结果默认保存在"/opt/portadv/xx/report/packagerebuild/task_id/"路径(xx代表用户名,task_id即任务创建时间),执行完成后您可以进入该路径查看已重构的软件包。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 53

Page 62: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-12 软件包重构

表 3-8 软件包重构参数说明

参数 说明

已上传的软件包 单击填写框选择下拉框中的软件包即可,也可以手动填写软件包名称。

说明如果构建的软件安装包大于1GB,则只能手动将软件安装包上传至服务器。

上传软件包 单击“上传”按钮上传软件安装包,上传成功自动填写安装包名称。

说明只允许同时上传一个软件包,软件包不超过1GB。

软件包存放路径 软件包的保存路径,即当前登录用户的工作空间。

配置依赖文件 上传重构软件包需要的依赖文件(SO库,JAR文件)。

依赖文件存放路径 上传的依赖文件默认保存在“/opt/portadv/data”目录下。

单击“上传”按钮上传本地依赖文件。

说明

● 工具仅提供部分JAR文件自动下载功能,文件将下载到“/opt/portadv/data”目录下,其他软件包重构过程中需要的依赖文件,请自行上传。

● 可同时上传多个依赖文件,框内如有同名文件时,将被选择的新文件覆盖,且每个 大不超过1GB。

授权访问外部网络获取重构软件包所需要的依赖文件

软件包重构过程中需要访问外部网络获取重构所需的依赖文件。如果是隔离网络环境请自行配置代理。

重构成功后,可下载重构包,查看执行结果。

若重构失败,可以点击页面上的历史报告,查看重构失败原因并按建议进行处理。

3.2.4 专项软件迁移

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 54

Page 63: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3.2.4.1 特性描述

专项软件迁移提供开源软件迁移、调优的工具化解决方案。用户可以按照解决方案的粒度选择相应的软件,进行工具化快速迁移软件。专项软件迁移包含软件下载、修改、编译和软件包构建功能,需要用户在基于鲲鹏的服务器环境使用。

3.2.4.2 特性操作

单击“专项软件迁移”打开“迁移前必读”对话框,勾选“我已阅读以上文字”,单击“确认”,打开如图3-13图3-14所示。

图 3-13 专项软件迁移

图 3-14 专项软件迁移

进入专项软件迁移,支持迁移的软件如表3-9表3-10所示。

说明

专项软件迁移过程中可能会安装依赖组件,修改系统配置,下载迁移软件并进行修改、编译、构建等操作,迁移前请仔细阅读步骤描述。

表 3-9 专项软件迁移

鲲鹏解决方案 软件名称 版本

大数据 hdp-hadoop 3.1.1.3.1.0.0-78

cdh-kudu 1.7.0-5.16.1

hdp-hbase 2.0.2.3.1.0.0-78

cdh-impala 5-2.12.0-5.16.1

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 55

Page 64: 2.3.T10 鲲鹏开发套件插件工具(VSCode

鲲鹏解决方案 软件名称 版本

hdp-hive 3.1.0.3.1.0.0-78

hdp-spark2 2.3.2.3.1.0.0-78

数据库 MySQL 8.0.17

Web .NET-Core 3.1

Nginx 1.14.2

Tengine 2.2.2

高性能计算 OpenFOAM v1906

注1:Web解决方案下的Nginx/Tengine不能和其他解决方案下的软件在同一服务器上迁移。

注2:Web解决方案下的.NET-Core只展示静态页面,不支持迁移功能。详细步骤请参见迁移描述中的链接。

表 3-10 专项软件迁移

鲲鹏解决方案 软件名称 版本

大数据 Apache-HBase 2.1.0

Apache-Hadoop 3.1.1

Apache-Hive 3.0.0

Apache-Spark 2.3.0

cdh-impala 5-2.12.0-5.16.1

cdh-kudu 1.7.0-5.16.1

数据库 MySQL 8.0.17

Web .NET-Core 3.1

Nginx 1.14.2

Tengine 2.2.2

高性能计算 OpenFOAM v1906

CP2K 7.1

QE 6.4.1

Code-Aster 14.6.0

NWChem 6.8.1

WRF 3.8.1

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 56

Page 65: 2.3.T10 鲲鹏开发套件插件工具(VSCode

鲲鹏解决方案 软件名称 版本

注1:Web解决方案下的Nginx/Tengine不能和其他解决方案下的软件在同一服务器上迁移。

注2:Web解决方案下的.NET-Core只展示静态页面,不支持迁移功能。详细步骤请参见迁移描述中的链接。

在表格上方选择指定的鲲鹏解决方案类型,在目标软件名称对应的“操作”列中单击“迁移”。打开专项软件迁移详情页面,如图3-15图3-16所示,参数描述如表3-11所示。

说明

专项软件迁移支持的所有解决方案软件的迁移模板都存放在服务器“/opt/portadv/resource/migration”路径下(“/opt/portadv”为工具安装目录,请根据实际情况替换),所有用户共享此路径下的模板。

图 3-15 专项软件迁移详情

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 57

Page 66: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-16 专项软件迁移详情

表 3-11 基本信息区域参数说明

参数 说明

软件名称 显示软件名称。

版本 显示软件版本。

华为maven源仓库

显示maven源仓库地址。

说明只有涉及到华为maven源仓库时才会显示。

描述 显示迁移描述,并提供鲲鹏社区详细迁移指导的链接地址。

操作 提供到迁移详情页的链接。

在“执行步骤”区域选择需要执行的步骤,单击“开始迁移”。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 58

Page 67: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● “环境检查”区域下的“前置条件”默认自动执行,无需手动检查确认。

● 专项软件迁移过程中需要访问外部网络获取所需的资源文件。如果是隔离网络环境请自行配置代理。

● 单击开始迁移后,选中的需要执行的步骤前会显示执行状态。

● 专项软件迁移会对您的软件进行自动化迁移修改、编译、构建软件包。

● 专项软件迁移过程中可以离开当前页面进行其他操作,但不能备份,恢复,升级软件迁移模板。

● 用户可在任务进行过程中单击关闭,取消任务。

● 执行专项软件迁移时的工作空间为“/opt/portadv/xx/migration”(xx代表用户名,“/opt/portadv”为工具安装目录,请根据实际情况替换),所有的执行过程文件和执行结果文件均存放在此工作空间下。

● 专项软件迁移的日志默认保存在 “/opt/portadv/logs/porting.log”文件中(“/opt/portadv”为工具安装目录,请根据实际情况替换),可在该日志文件中查看迁移失败原因并按建议进行处理。

3.2.5 增强功能

3.2.5.1 特性描述

鲲鹏代码迁移插件提供下面三种增强功能:

● 64位运行模式检查

对用户C/C++软件从32位模式迁移到64位模式进行检查。工具强制以64位模式编译用户软件,并通过编译选项发现从32位模式迁移到64位模式的必要修改,并提示用户进行进一步检查。

● 结构体字节对齐检查

用户软件中的结构体变量进行检查,分析其内存分配情况,并反馈用户。

● 内存一致性检查

对用户软件迁移到鲲鹏平台可能存在的内存一致性问题进行检查、修复。自动修复工具需要更新用户使用的GCC编译器,随后在用户软件的编译过程中自动完成内存一致性问题的修复。

3.2.5.2 特性操作

64位运行模式检查和结构体字节对齐检查功能适用于x86服务器,支持x86平台GCC4.8.5~GCC 9.3版本32位应用向64位应用的运行模式检查和字节对齐检查。内存一致性检查功能适用于鲲鹏平台,检查源码中存在的内存一致性问题。

3.2.5.2.1 64 位运行模式检查

64位运行模式检查就是将x86平台GCC4.8.5~GCC9.3版本原32位的应用迁移到64位平台上,进行迁移检查并给出修改建议。

前提条件

已成功登录鲲鹏代码迁移工具。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 59

Page 68: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

“/opt/portadv”为工具默认安装目录,下文以此默认路径为例,请根据实际情况替换。

操作步骤

步骤1 在页面左侧,选择“增强功能”,点击 创建任务。

选择“64位运行模式检查”,如图3-17所示。

图 3-17 64 位运行模式检查

步骤2 可以通过以下两种方式选择待检查的源码:

● 选择“已上传的源码”:单击填写框选择下拉框中的源码路径即可,也可以手动填写源码路径。

● 选择“上传源码”:单击“上传”按钮上传压缩包(上传过程中自动解压)或文件夹。

说明

– 支持上传tar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zipzip,tar,tar.gz,tar.bz,tar.bz2,tar.xz,tgz,tbz,tbz2,txz格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。

– 只允许同时上传一个文件夹,文件夹小于或等于剩余磁盘空间的一半。

步骤3 单击“迁移检查”,开始迁移检查。迁移检查完成后,自动跳转至迁移检查报告界面,如图3-18所示。

图 3-18 迁移检查报告

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 60

Page 69: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-19 查看建议代码

说明

● 支持多个用户同时创建64位运行模式检查任务。

● 用户可在任务进行过程中单击关闭,取消任务。

● 若检测结果为源码不需要修改,则会弹出成功界面,不会出现预检报告界面。

----结束

3.2.5.2.2 结构体字节对齐检查

结构体字节对齐检查就是在需要考虑字节对齐时,检查源码中结构体类型变量的字节对齐检查。

前提条件

已成功登录鲲鹏代码迁移工具。

说明

“/opt/portadv”为工具默认安装目录,下文以此默认路径为例,请根据实际情况替换。

操作步骤

步骤1 在页面左侧,选择“增强功能”,点击 创建任务。

选择“结构体字节对齐检查”,如图3-20所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 61

Page 70: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-20 结构体字节对齐检查

表 3-12 结构类型定义对齐检查参数说明

参数 说明

源码文件存放路径 ● 选择“已上传的源码”:单击填写框选择下拉框中的源码路径即可,也可以手动填写源码路径。

● 选择“上传源码”:单击“上传”按钮上传压缩包(上传过程中自动解压)或文件夹。

说明

● 支持上传zip,tar,tar.gz,tar.bz,tar.bz2,tar.xz,tgz,tbz,tbz2,txztar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zip格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。

● 只允许同时上传一个文件夹,文件夹小于或等于剩余磁盘空间的一半。

构建工具 选择构建工具。可选择:

● make● cmake● automake

编译命令 源码编译命令。

编译命令需根据构建工具配置文件确定,具体请参考3.3.12 构建工具配置文件识别编译命令。

步骤2 单击“对齐检查”,开始字节对齐检查。检查完成后,自动跳转至迁移检查报告界面,如图3-21所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 62

Page 71: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-21 对齐检查报告

单击“查看建议代码”可进入“对齐检查报告”界面,如图3-22所示。

图 3-22 建议代码

表 3-13 建议代码界面参数说明

参数 说明

原始源代码 原始源代码。

结构变量内存空间分配

显示代码中需要对齐的32位和64位字节内存空间。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 63

Page 72: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 支持多个用户同时创建字节对齐检查任务。

● 用户可在任务进行过程中单击关闭,取消任务。

● 对于64位运行模式检查和结构体字节对齐检查,在同一时刻同一用户只能进行其中一个。

● 用户可以单击原始源代码模块右上角的上下键,进行上下切换。

----结束

3.2.5.2.3 内存一致性检查

内存一致性检查就是检查源码迁移在鲲鹏平台运行时可能存在的内存一致性问题,并提供插入内存屏障的建议。

说明

● 由于运行内存一致性检查时,生成的中间文件较大,如果用户想要使用该功能,请确保安装工具的所在磁盘空间足够大,根据经验数据,每10w行代码需要100G左右的磁盘空间。

● 源码规模过大可能会导致占用资源过多,建议代码量不超过10万行。

前提条件

已成功登录鲲鹏代码迁移工具。

说明

“/opt/portadv”为工具默认安装目录,下文以此默认路径为例,请根据实际情况替换。

操作步骤

步骤1 在页面左侧,选择“增强功能”,点击 创建任务。

选择“内存一致性检查”,如图3-23所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 64

Page 73: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-23 内存一致性检查

步骤2 选择“检查模式”。

● 静态检查,请继续执行步骤3。

● 编译器自动修复,需要用户根据页面提供的操作步骤进行操作,详细请参见编译器自动修复工具使用指导。

说明

静态检查的结果误报少、修复率 高为60%,编译器自动修复结果不会漏报,误报率比静态检查高,修复率可保证100%。误报越多,性能影响相对越大。不同软件下编译的修复率不同,性能影响也不同。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 65

Page 74: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 选择“文件上传类型”。

● 源码文件上传,请继续执行步骤4~步骤6。

说明

静态检查工具需要使用clang编译工具执行用户项目的构建,并生成BC文件,作为静态检查工具的输入,请确保上传代码可以使用clang编译工具编译通过。

● BC文件上传,请继续执行步骤8~步骤9。

步骤4 填写“源码文件存放路径”。可以通过以下两种方式实现:

● 选择“已上传的源码”:单击填写框选择下拉框中的源码路径即可,也可以手动填写源码路径。

● 选择“上传源码”:单击“上传”按钮上传压缩包(上传过程中自动解压)或文件夹。

说明

– 支持上传zip,tar,gz,tar.gz,tar.bz2,bz,bz2tar,tar.bz,tar.bz2,tar.gz,tar.xz,tbz,tbz2,tgz,txz,zip格式的压缩包,只允许同时上传一个压缩包。源码文件压缩包小于或等于1GB,解压后小于或等于剩余磁盘空间的一半。

– 只允许同时上传一个文件夹,文件夹小于或等于剩余磁盘空间的一半。

步骤5 填写编译命令,然后单击“下一步”。

解析编译命令后生成BC文件。

说明

● 编译命令支持make、cmake、configure、shell命令以及shell脚本,其中使用make命令时不支持make install。

● 构建命令或者构建脚本不能对用户空间(/opt/portadv/用户名/)之外的目录和文件进行创建或修改操作。

● 若检查过程中出现生成BC文件失败的情况,可以自行生成BC文件,然后再执行步骤8~步骤9通过“BC文件上传”直接分析BC文件,进行内存一致性检查。

步骤6 选择生成的BC文件后单击“确认检查”,开始内存一致性检查。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 66

Page 75: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-24 选择 BC 文件

说明

● 如果源码规模过大,可点击“下载”,下载生成的BC文件(可选择同时下载多个BC文件)。然后再执行步骤8~步骤9通过“BC文件上传”直接分析BC文件,进行内存一致性检查。

● 如需要生成编译器工具配置文件,请勾选“生成编译器工具配置文件”。

检查完成后,单击“查看报告”可进入“检查报告”界面,如图3-25图3-26所示。

图 3-25 内存一致性检查报告

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 67

Page 76: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-26 内存一致性检查报告

说明

● 可点击 对需要修改的源码文件按照路径或修改点数量进行排序。

● 如果选择了“生成编译器工具配置文件”,可点击“下载编译器配置文件”,下载编译器工

具配置文件。也可将鼠标悬停在“历史报告”区域中对应报告的 上,然后选择“下载编译器配置文件”。

● 如果下载编译器工具配置文件时系统提示“该编译器文件不是 新的”,点击“前往查看”到 新报告中下载。如果系统再提示“ 新报告中没有编译器配置文件”,请按照提示操作。

步骤7 单击操作列表中的”查看建议代码“进入源码修改建议页面,如图3-27所示。

图 3-27 源码迁移建议

说明

● 支持多个用户同时创建内存一致性检查任务。

● 用户可在任务进行过程中单击关闭,取消任务。

● 用户可以单击原始源代码模块右上角的上下键,进行上下切换。

步骤8 填写“BC文件存放路径”。可以通过以下两种方式实现:

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 68

Page 77: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 选择“已上传的BC文件”:单击填写框选择下拉框中的BC文件即可,也可以手动填写BC文件。

● 选择“上传BC文件”:单击“上传”按钮上传BC文件。

步骤9 单击“确认检查”,开始内存一致性检查。

检查完成后,单击“查看报告”可进入“检查报告”界面。如图3-28所示。

图 3-28 内存一致性检查报告

BC文件检查报告中会显示建议修改点数量和建议修改代码的具体位置,可根据这些信息进行排查和修改。

----结束

编译器自动修复工具使用指导

工具支持的操作系统和GCC版本:

表 3-14 工具支持的操作系统和 GCC 版本

操作系统 GCC版本

BC-Linux 7.6/7.7 GCC4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS7.4/7.5/7.6/7.7

GCC4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS 8.0 GCC 8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS 8.1/8.2 GCC 8.3.0/9.1.0/9.2.0/9.3.0

Debian 10 GCC 8.3.0/9.1.0/9.2.0/9.3.0

Deepin 15.2 GCC6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

iSoft 5.1 GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Kylin V10 SP1 GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 69

Page 78: 2.3.T10 鲲鹏开发套件插件工具(VSCode

操作系统 GCC版本

LinxOS 6.0.90 GCC6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

NeoKylin V7U6 GCC4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

openEuler 20.03 GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

openEuler 20.03LTS SP1

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

openEuler 20.03LTS SP2

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

SUSE SLES15.1 GCC 7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Ubuntu 18.04.x GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Ubuntu 20.04.x GCC 9.3.0

UOS 20 SP1 GCC 8.3.0/9.1.0/9.2.0/9.3.0

uosEuler 20 GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

说明

● 以上列表以操作系统默认支持的GCC版本为准,如果服务器操作系统升级过GCC版本,可能存在兼容性问题。

● 以上支持的GCC版本都是指GNU官方的GCC分支,不推荐用户基于鲲鹏GCC来使用此编译器自动修复工具。

使用该功能需要配置对应的环境,可以通过以下步骤进行:

步骤1 下载相关软件包。

● GCC源码: https://gcc.gnu.org/(请从GCC官网下载对应版本的源码。)

● GCC修复工具patch:https://github.com/kunpengcompute/devkitdriver/tree/main/gccchecker(Debian系列和RHEL系列操作系统都使用此包。)

● 内存一致性修复组件:从Porting安装路径下,找到/tools/weakconsistency/gccchecker/gcctool.tar.gz。

● libstdc++6.so依赖库:http://ftp.cn.debian.org/debian/pool/main/g/gcc-7/libstdc++6-7-dbg_7.4.0-6_arm64.deb (Debian系列和RHEL系列操作系统都使用该依赖包。)

步骤2 安装内存一致性修复组件。

1. 解压安装包。tar xf gcctool.tar.gz

解压后确认“gcctool/bin”目录下有以下文件:

gcctool,gcctool-bin,add_libraries.shlibstdc++.so.6

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 70

Page 79: 2.3.T10 鲲鹏开发套件插件工具(VSCode

2. 安装libstdc++依赖库。

注意

libstdc++.so.6依赖库只能给gcctool使用,请勿替换系统原有库,替换后可能会存在兼容性问题。

gcctool依赖特定版本的libstdc++,脚本gcctool/bin/add_libraries.sh可以自动将libstdc++6-xxx.deb包中的libstdc++.so.6安装到gcctool/bin目录下。

libstdc++执行命令:bash gcctool/bin/add_libraries.sh -d /path/to/gcctool_root_dir -f /path/to/libstdc++6-7-dbg_7.4.0-6_arm64.deb

3. 配置环境变量。

将“gcctool”放入安装目录,配置环境变量:export PATH=/path/to/gcctool/bin:$PATH

步骤3 合入GCC patch。

说明

如果提示“‘patch’command not found”,则请先安装:

Debian系列:

apt install patch

RHEL系列:

yum install patch

cd /gcc/source/root/dirpatch -p1 < /path/to/gcc/patch/file

步骤4 编译GCC。

GCC源码编译操作请参考GCC官方文档,合入的patch对GCC编译依赖组件和编译过程没有影响,任何GCC编译问题可以询问GNU社区。

----结束

准备好环境之后再执行以下步骤使用工具:

步骤1 设置内存一致性修复组件优化等级。export HW_DEBUG=[ 0 | 1 | 2 ]

编译组件支持通过环境变量配置修复优化等级,默认级别为0。

● 0表示关闭内存一致性修复功能。

● 1表示应用组件优化规则,可以减少性能损失。

● 2表示使用 安全的修复策略,性能损失较大。

步骤2 (可选)定义自动修复源码范围。

1. 工具允许用户自定义源码修复范围,以文件或函数为单位。配置允许列表后,修复组件只对列表内的内容进行修复。允许列表的格式如下:

– 文件列表以“files:”开头,每个文件独占一行。

– 文件使用绝对路径。

– 支持C/C++/Fortran格式的文件,不支持纯汇编文件。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 71

Page 80: 2.3.T10 鲲鹏开发套件插件工具(VSCode

– 函数列表以“functions:”开头,每个函数独占一行。

– 支持C/C++普通函数,不支持模板或具有abi_tag属性的函数。

以下为允许列表的格式示例:files: /path/to/file/a /path/to/./file/b /path/to/../file/c /path/to/file/dfunctions: func_a func_b() func_c(int xxx) int func_d() classA::func_e ns::classB::func_f() std::string nsA::nsB::classC::func_g(int xxx)

2. 修复组件获取允许列表路径。

通过设置环境变量,指定允许列表路径,默认不设置。

“export AUTOFIXLIST=/path/to/allowlist”

步骤3 编译软件。

用户可以编译软件,编译过程没有变化。(原本编译过程如果使用了-pipe编译选项,需要移除,不会影响原编译结果。)

----结束

生成 BC 文件

BC(BitCode)文件:使用LLVM编译源代码生成中间文件(IR),BC文件是IR的二进制表示。

BC文件生成方式有以下两种:

● 方法一:首选。借助第三方工具gllvm生成BC文件。

– gllvm工具使用go编译,并依赖clang编译器,使用详情请参考:https://github.com/SRI-CSL/gllvm/blob/master/README.md,推荐使用1.2.9版本。

– 使用gllvm工具构建时,需指定编译器类型为gclang和gclang+,增加编译选项“-g -fno-inline-functions”。

使用样例:

请确保系统当前环境满足待测试程序的构建条件。

a. 将clang编译器和编译后gllvm工具设置到环境变量中:export PATH=/opt/portadv/tools/weakconsistency/staticcodeanalyzer/llvm-tools/bin:/path/to/gllvm/bin:$PATHexport LD_LIBRARY_PATH=/home/porting/lib:$LD_LIBRARY_PATH

b. 设置gllvm对clang的依赖:export LLVM_CC_NAME="clang"export LLVM_CXX_NAME="clang++"export LLVM_LINK_NAME="llvm-link"

c. 优化等级:将待测试工程的所有优化等级都修改为“-O0”。

d. 构建:将C编译器指定为gclang,C++编译器修改为gclang++,同时增加编译选项“-g -fno-inline-functions”,此操作不唯一,与待测试工程的构建工具和参数相关;其他构建步骤不变;可参考以下构建用例:

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 72

Page 81: 2.3.T10 鲲鹏开发套件插件工具(VSCode

▪ 对于使用脚本构建,但未指定输入参数的工程,以jemalloc为例,可使用如下命令指定编译器类型:

图 3-29 jemalloc

▪ 对于使用脚本构建,但指定输入参数的工程,以incubator-brpc为例,可根据incubator-brpc的参数要求,使用如下命令指定编译器类型:

图 3-30 incubator-brpc

▪ 对于使用configure构建的工程,以sqlite为例,可使用如下命令指定编译器类型:

图 3-31 sqlite

▪ 对于在配置文件中指定了编译器类型的工程,需修改配置文件,以bwa为例,使用make构建工具,需将Makefile第一行CC指定为glang后再执行构建命令

图 3-32 修改 makefile 文件

图 3-33 bwa

▪ 生成BC文件:构建完成后,生成动态库(.so)文件或者可执行文件,使用gllvm的get-bc工具生成BC文件。以jemalloc为例:

图 3-34 jemalloc

● 方法二:使用工程构建工具生成BC文件,如make,cmake等。如果软件使用该方法,需修改相关的配置文件,如makefile。

– 替换编译命令:使用clang替换gcc等,使用llvm-link替换ld等。

– 调整编译选项:修改优化等级“-O0”,增加“-flto -g -fno-inline-functions”。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 73

Page 82: 2.3.T10 鲲鹏开发套件插件工具(VSCode

上述操作完成后,通过构建获得BC文件。

使用样例:

须知

● 在构建项目之前,需将gcc编译器替换成llvm相关的工具。

● 构建时务必替换或增加指定的编译选项,防止部分指令信息缺失,从而影响分析结果准确性。

● 将 终生成的目标文件修改为BC文件。

a. 使用make工具完成项目构建。

图 3-35 构建

b. 修改编译命令并替换编译选项。以下是原始的makefile文件和修改后的makefile文件:

图 3-36 原始的 makefile 文件

图 3-37 修改后的 makefile 文件

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 74

Page 83: 2.3.T10 鲲鹏开发套件插件工具(VSCode

修改后的makefile文件,将编译工具修改为clang,链接生成目标文件的工具改为llvm-link。

c. 完成项目构建。

图 3-38 构建完成

说明

● 若分析结果不准确,可能是BC文件异常造成的。

● 生成的BC文件异常,可能是由于编译过程中涉及gfortran等编译器。

● 可通过以下方式验证BC文件是否异常:使用llvm的llc和本地的gcc将文件转为可执行程序,并验证该程序功能是否正常。

3.3 常用操作

3.3.1 通过普通用户连接鲲鹏代码迁移工具当用户没有在服务器上部署工具时,单击插件界面上的“点击此处部署”开始部署安装鲲鹏代码迁移工具。

在安装过程中配置目标服务器参数时,若想通过操作系统的普通用户来安装工具,该普通用户需要满足以下要求:

1. 创建home目录。mkdir /home/xxx

2. 设置新创建的目录所属者为xxx。chown -R xxx:yy /home/xxx

3. 设置用户所在的用户组为wheel。usermod -G wheel xxx

说明

命令中xxx为普通用户的用户名,yy为普通用户的组名。

3.3.2 配置 SSH 密钥认证以下步骤以Windows系统为例。

步骤1 打开本地cmd终端。

步骤2 执行如下命令生成生成公私钥对。

ssh-keygen -m PEM -t rsa -b 2048

过程中需要:

● (可选)输入保存的文件名,默认为在“C:\Users\username\.ssh”目录下保存为“id_rsa”(私钥)和“id_rsa.pub”(公钥)文件。

● (可选)设置密钥的密码口令。

回显信息如下:

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 75

Page 84: 2.3.T10 鲲鹏开发套件插件工具(VSCode

Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\username\.ssh\id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\username\.ssh\id_rsa. Your public key has been saved in C:\Users\username\.ssh\id_rsa.pub. The key fingerprint is: SHA256:rCRpryf6uZU+dQd/S8WN1azvay58zi3gtb53gayhvO8 china\username@HGHY4USERNAME The key's randomart image is: +---[RSA 2048]----+| ..|| +|| =.|| . . . o +|| + . S o. .o || . + o. ..+o+..|| =....o+= +.|| .=o o ..o=o=|| .o=+.. .+E .OO+|+----[SHA256]-----+

步骤3 普通用户登录服务器并上传公钥文件“id_rsa.pub”。

将公钥文件放至“/home/操作系统用户名/.ssh”目录下,将公钥文件“id_rsa.pub”名字改为“authorized_keys”。

如已存在此“authorized_keys”文件,将公钥文件内容复制至“authorized_keys”文件中即可。

步骤4 设置“authorized_keys”文件的权限为600。

chmod 600 /home/操作系统用户名/.ssh/authorized_keys

步骤5 查看服务器ssh配置文件。

cat /etc/ssh/sshd_config

检查以下两处开关:

PubkeyAuthentication yes

RSAAuthentication yes

如若不是“yes”将上述开关设为“yes”后保存配置文件并重启sshd服务。

步骤6 在IDE插件中选择密钥认证。

在界面上直接导入本地的私钥文件即可。

----结束

3.3.3 配置扫描参数单击“视图和更多操作 > 扫描参数配置”,打开如图3-39图3-40所示界面,参数描述如表3-15所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 76

Page 85: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-39 扫描参数配置

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 77

Page 86: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-40 扫描参数配置

表 3-15 扫描参数配置界面参数说明

参数 说明

关键字扫描 选择发现Arm/Arm64/AArch64关键字是否继续扫描。默认为“是”。

C/C++/Fortran/Go代码迁移工作量评估(行/人月)

输入C/C++/Fortran/Go代码迁移工作量评估标准。默认为500,取值范围1~99999。

汇编代码迁移工作量评估(行/人月)

输入汇编代码迁移工作量评估标准。默认为250,取值范围1~99999。

显示工作量评估结果 选择是否在分析报告详情页面显示“预估迁移工作量”。默认为“否”。

用户密码 输入当前登录用户的密码。

3.3.4 重置密码

前提条件

已成功登录鲲鹏代码迁移工具。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 78

Page 87: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

只有管理员用户(portadmin)可以执行重置密码操作。

操作步骤

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“用户管理”。

打开用户管理界面。

步骤2 单击操作栏中指定用户后的“重置密码”。

打开“重置密码”界面,如图3-41所示,需配置的参数如表3-16所示。

图 3-41 重置密码

表 3-16 重置密码参数说明

参数 说明

用户名 待重置密码的用户名。重置密码时不允许修改。

工作空间 用户上传代码的根目录。重置密码时不允许修改。

管理员密码 输入管理员密码。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 79

Page 88: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

密码 输入新建用户的密码。密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合

● 密码不能是用户名

● 密码不能在弱口令字典中

确认密码 再次输入设置的密码。

步骤3 参考表3-16重置完密码后,单击“确认”。

----结束

3.3.5 管理依赖字典单击“视图和更多操作 > 依赖字典”,打开如图3-42所示界面,参数描述如表3-17所示。

说明

● 只有管理员(portadmin)可以备份、恢复、升级依赖字典。

● 以下内容中的/opt为服务端默认安装路径,如果为自定义安装,请使用对应的自定义安装路径替换。

● 不支持2.3.T10以前的版本使用2.3.T10版本的依赖字典文件执行升级依赖字典的操作。

图 3-42 依赖字典管理

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 80

Page 89: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 3-17 依赖字典管理参数说明

参数 说明

备份 备份依赖字典。

1. 单击“开始备份”按钮。

2. 输入管理员密码。

3. 单击“确认”备份依赖字典。

说明系统上只会保留 新备份的依赖字典,历史备份依赖字典将会被替换。

升级 升级依赖字典。

1. 单击“开始升级”按钮。

2. 单击“上传”按钮上传依赖字典,默认保存在“/opt/portadv/config/dependency_dictionary”目录下。

说明请下载 新的依赖字典。

3. 输入管理员密码。

4. 单击“确认”升级依赖字典。

恢复 恢复依赖字典。

1. 单击“开始恢复”按钮。

2. 输入管理员密码。

3. 单击“确认”恢复已备份的依赖字典。

3.3.6 管理弱口令字典弱口令通常是指容易被别人猜测到或被破解工具破解的口令。在设置或修改密码时,如果密码是弱口令字典中的口令,则系统会强制用户重新设置,以提升用户密码的安全性。

前提条件

已成功登录鲲鹏代码迁移工具。

说明

● 用户可以查看和搜索弱口令。

● 只有管理员(portadmin)可以添加和删除弱口令。

● 工具提供52条默认的弱口令。

● 多可添加至1000条弱口令。

操作步骤

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“弱口令字典”。

步骤2 单击“添加”,弹出对话框,如所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 81

Page 90: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-43 添加弱口令

步骤3 在文本框中输入需要添加的弱口令。弱口令需要满足如下要求:

● 长度为8~32个字符

● 至少包含以下字符中的两种:

– 大写字母:A~Z– 小写字母:a~z– 数字:0~9– 特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/?

步骤4 单击“确认”添加弱口令。

说明

如需删除弱口令,单击对应弱口令“操作”列的“删除”。在弹出的“删除弱口令”对话框中单击“确认”。

----结束

3.3.7 修改当前登录用户密码

前提条件

已成功登录鲲鹏代码迁移工具。

说明

鲲鹏代码迁移工具用户的密码有效期为90天,建议在密码有效期到达之前设置新密码。若密码已过期,则需要在登录后先进行密码修改操作。

操作步骤

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“修改密码”。

打开设置界面。

单击“修改密码”菜单下方的“修改”按钮,打开用户修改密码界面,如图3-44所示,需配置的参数如表3-18所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 82

Page 91: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-44 修改密码

表 3-18 修改密码参数说明

参数 说明

用户名 当前登录用户的用户名。

旧密码 输入用户当前密码。

新密码 输入新密码。密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合

● 密码不能是用户名

● 新密码与旧密码必须不同

● 新密码不能是旧密码的逆序

● 新密码不能在弱口令字典中

确认密码 再次输入设置的密码。

参考表3-18修改密码后,单击“确认”。

----结束

3.3.8 配置历史报告阈值如果需要自定义历史报告阈值,执行本章节的操作。

前提条件

已成功登录鲲鹏代码迁移工具。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 83

Page 92: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

只有管理员(portadmin)才能配置门限阈值。

操作步骤

步骤1 单击左上角“鲲鹏代码迁移工具”右侧的 按钮,选择“阈值设置”。

打开“阈值设置”界面,如图3-45所示。

图 3-45 阈值设置

步骤2 填写“历史报告提示阈值”和“历史报告 大阈值”。

说明

● “历史报告提示阈值”和“历史报告 大阈值”默认分别为40和50,其中“历史报告提示阈值”取值范围为1~49,“历史报告 大阈值”取值范围为2~50,“历史报告 大阈值”需要大于“历史报告提示阈值”。

● 当历史报告数量达到“历史报告提示阈值”后,可以继续操作,但会提示当前报告数量过多,请适量删除。

● 当历史报告数量达到“历史报告 大阈值”后,新建任务功能禁用,会提示当前报告数量已达到 大限制,新建任务功能已被禁用,请删除无用的历史报告。

步骤3 单击“确认”。

----结束

3.3.9 管理 web 服务端证书Web服务端证书用于客户端浏览器和web服务器之间的通讯,实现数据信息在客户端和web服务器之间的加密传输,可以防止数据信息的泄露。为提高安全性,建议替换成自己的证书,并及时更新证书,保证证书的有效性。

前提条件

已成功登录鲲鹏代码迁移工具。

说明

只有管理员(portadmin)可以执行生成CSR文件、导入web服务端证书、下载根证书,重启服务和更换工作密钥的操作。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 84

Page 93: 2.3.T10 鲲鹏开发套件插件工具(VSCode

查看当前 web 端服务证书

步骤1 单击“鲲鹏代码迁移插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“web服务端证书”。

步骤2 查看证书信息,如图3-46所示,界面参数描述如表3-19所示。

图 3-46 web 服务端证书信息

表 3-19 web 服务端证书参数说明

参数 说明

证书名称 显示证书名称。

证书到期时间 显示证书到期时间。

状态 显示证书的当前状态。

有效:证书剩余有效时间超过证书过期告警阈值。

即将过期:证书剩余有效时间小于或等于证书过期告警阈值。

已过期:已过证书到期时间。

说明

● 工具每天自动检查并更新证书状态。

● web服务证书自动告警时间默认为90天。管理员可在“证书过期告警阈值”选框中修改,可配置范围为7~180天。

操作 ● 生成CSR文件

说明CSR(Certificate Signing Request)是证书请求文件。证书申请者在申请数字证书时,由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,即证书。

● 导入web服务端证书

● 重启服务

● 更新工作密钥

----结束

自定义服务器证书信息并导入

步骤1 在“web服务端证书”界面中单击“生成CSR文件”。

打开“生成CSR文件”对话框,如图3-47所示,界面参数描述如表3-20所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 85

Page 94: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-47 生成 CSR 文件

表 3-20 CSR 文件参数说明

参数 说明

国家 使用者所在的国家。

支持字母,长度为2个字符,为必填项。

省份 使用者所在的省份。

支持字母、数字、“-”、“_”、“.”和空格, 大长度128个字符。

城市 使用者所在的城市。

支持字母、数字、“-”、“_”、“.”和空格, 大长度128个字符。

公司 使用者所在的公司。

支持字母、数字、“-”、“_”、“.”和空格, 大长度64个字符。

部门 使用者所在部门。

支持字母、数字、“-”、“_”、“.”和空格, 大长度64个字符。

常用名 使用者的名称。

支持字母、数字、“-”、“_”、“.”和空格, 大长度64个字符,为必填项。

步骤2 单击“确认”生成CSR文件。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 86

Page 95: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 将导出的CSR文件发往SSL证书颁发机构,并申请SSL证书。

获取到正式的证书后,保存到本地。

说明

用户也可以使用其根证书进行自签名获取正式的证书。

步骤4 单击“导入web服务端证书”。

弹出“导入web服务端证书”对话框。

步骤5 单击“上传文件”,选择需要导入的证书文件。

说明

● 导入的证书文件不得大于1MB,支持的格式为*.crt、*.cer、*.pem。

● 步骤步骤1中生成的CSR文件与向CA机构申请的服务器证书是一一对应的,在导入服务器证书之前请不要再次生成新的CSR文件,否则需要向CA机构重新申请服务器证书。

● 导入的SSL证书如果不是从正式的证书颁发机构获取,而是用户自己使用工具生成,在导入该SSL证书后,还需要确认客户端浏览器中是否已存在对应的根证书。

步骤6 单击“导入”导入web服务端证书。

步骤7 单击“更多 > 重启服务”使证书生效。

说明

用户手动在服务器上重启Nginx服务,证书不会生效,必须在web上进行重启操作。

----结束

更新工作密钥

工作密钥用于加密启动Nginx服务的口令。为提高系统安全性,建议定期更新。

步骤1 在“web服务端证书”界面中单击“更多 > 更换工作密钥”,如图3-48所示。

图 3-48 更新工作密钥

步骤2 单击“更多 > 重启服务”使工作密钥生效。

----结束

3.3.10 管理吊销证书列表

证书吊销列表用于软件包重构过程中检查下载依赖文件服务端的证书有效性。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 87

Page 96: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 证书导入数量 多不超过三份。

● 证书吊销列表检查功能默认开启。如需关闭本功能,请在“鲲鹏代码迁移插件”区域右上方选择“视图和更多操作>系统配置”,修改“证书有效性检查”的配置。

前提条件

已成功登录鲲鹏代码迁移工具。

导入证书吊销列表文件

步骤1 在“鲲鹏代码迁移插件”区域右上方选择“视图和更多操作>证书吊销列表”。

打开“证书吊销列表”页面

图 3-49 证书吊销列表

步骤2 单击“导入”。

步骤3 选择证书吊销列表文件,单击“打开”。

页面显示已导入的证书吊销列表文件,如图3-50所示。

图 3-50 导入的证书吊销列表文件

说明

● 如果文件名称左边有三角形图标,可单击图标展开或折叠证书吊销列表。

● 如果证书状态为“证书已到期,请导入 新证书”,请尽快导入新的证书。

----结束

删除证书吊销列表文件

步骤1 在“鲲鹏代码迁移插件”区域右上方选择“视图和更多操作>证书吊销列表”。。

打开“证书吊销列表”页面。

步骤2 单击待删除列表对应的“删除”按钮。

弹出“删除文件”提示框。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 88

Page 97: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-51 删除文件

步骤3 单击“确认”。

----结束

3.3.11 排查服务端状态异常问题

检查Porting服务运行状态。

systemctl status gunicorn_port

如果服务未处于正常运行状态,则可通过如下命令重启:

systemctl restart gunicorn_port

3.3.12 构建工具配置文件识别编译命令

现象描述

在使用代码迁移工具过程中,存在对构建文件配置分析场景时,“编译命令”可能不是默认的make/cmake,用户需要根据自己的构建配置文件来确定“编译命令”,进而填写“编译命令”。

参考说明● “构建工具”选择make时,默认为make,支持以make开头的自定义编译命令。

make工具支持参数-C和-f,其中-C用于指定工作目录,-f用于指定makefile。如果用户的Makefile中使用了标签,则“编译命令”需要根据用户使用标签的情况来确定。

– 常见场景下,用户会在Makefile中设置clean和all标签,如图3-52所示。

图 3-52 场景一

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 89

Page 98: 2.3.T10 鲲鹏开发套件插件工具(VSCode

这种情况下,make clean表示执行clean标签下的编译命令,make表示执行all标签或者all标签关联的其它标签下的编译命令,此时,用户在“编译命令”中填写make即可。

– 如果用户设置了自定义的mpp标签,如图3-53所示。

图 3-53 场景二

这种情况下,make mpp表示执行mpp标签下的编译命令,此时,用户需要在“编译命令”中填写make mpp,如图3-54所示。

图 3-54 make mpp

● “构建工具”选择cmake时,默认为cmake,支持以cmake开头的自定义编译命令。cmake工具支持的参数请参考cmake 3.13.4官方使用手册。

● “构建工具”选择automake时,默认为make,且不可修改。automake工具不支持任何参数。使用automake时,需要确保用户的项目源码中存在可以正常使用的软件构建配置文件Makefile,Makefile文件需要和源码文件一起上传,或者用户在上传待分析软件后手动执行automake相关命令,然后将生成的Makefile属主改为porting,以便工具能正常读取Makefile。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 90

Page 99: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● “构建工具”选择“go”时(此时,“源码类型”只勾选了“Go”),默认为gobuild。可以更改编译命令,但命令必须以go开头。

3.3.13 多任务并发异常处理

现象描述

当用户在创建源码迁移、增强功能任务时,可能会出现以下两个提示:

● 当前工具不能达到 大并发处理,多任务运行可能需要等待,可以参考用户指南使工具达到 大并发处理。

● 当前工具无法分析任务,请参考用户指南使工具正常运行任务。

可能原因● 系统用户被篡改。

● 数据库被篡改。

处理步骤● 方法一:若当前已安装的鲲鹏代码迁移工具存在更高版本,升级该工具。

● 方法二:卸载当前已安装的鲲鹏代码迁移工具,重新安装该工具。

3.3.14 反馈建议如对本插件有任何建议,请执行以下步骤反馈。

操作步骤

步骤1 在软件迁移评估、源码迁移、软件包重构、专项软件迁移或增强功能的首页Banner上

单击“上鲲鹏社区,反馈建议”,或者单击界面右下角的 。

在浏览器中打开“建议反馈”页面,如图3-55所示。

图 3-55 建议反馈

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 91

Page 100: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

如弹出“连接失败”提示框,请按照提示排除故障。

步骤2 在“建议反馈”页面上按要求填写问题详情及邮箱地址,选择“已阅读并同意 《隐私政策声明》”,然后单击“提交”。

----结束

3.3.15 申请试用远程实验室

步骤1 单击“免费试用”按钮,如图图3-56所示。也可以单击 ,然后选择“申请试用远程实验室”。

图 3-56 单击免费试用

显示“申请试用远程实验室流程”页面,如图3-57所示。

图 3-57 申请试用远程实验室流程

步骤2 单击“立即申请”。

打开“远程云环境”页面,如图3-58所示。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 92

Page 101: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 3-58 远程云环境

步骤3 在“邮箱”框中填入邮箱地址,单击“立即申请”,选择“申请使用额度”,勾选“我已阅读并同意《隐私政策声明》和《设备借用协议》”,然后单击“确认”。

说明

在申请成功后,可在“远程云环境”页面上根据需要提前释放资源或延长资源的使用时间。

步骤4 待邮箱收到远程云环境信息后,在“申请试用远程实验室流程”页面上单击“立即配置”。

步骤5 配置远端服务器。

----结束

3.4 FAQ

3.4.1 工具检测连接失败提示算法不匹配

现象描述

安装代码迁移工具,点击“检测连接”提示算法不匹配。

可能原因● 客户端算法与服务器端不匹配。

● sshd版本过低,不支持ecdsa配置。

处理步骤

步骤1 root用户登录服务器。

步骤2 执行vim /etc/ssh/sshd_config指令检测如下算法是否配置(每项满足其一即可)。

● KexAlgorithms: diffie-hellman-group-exchange-sha256

● MACs: hmac-sha2-512,hmac-sha2-256,hmac-sha1

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 93

Page 102: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● Ciphers: aes256-gcm,[email protected],aes128-ctr,aes192-ctr,aes256-ctr

● HostKey: /etc/ssh/ssh_host_ecdsa_key

----结束

说明

如上述操作仍然无法解决问题,

● 参考鲲鹏代码迁移工具,手动安装代码迁移工具web模式。

● 升级sshd服务,然后尝试一键部署。

3.4.2 工具安装失败提示 OpenSSL 库未找到

现象描述

工具安装失败并提示OpenSSL库未找到。部分回显信息如下:

OpenSSL 1.1.1-dev xx XXX xxxxopenssl already installed!openssl-devel already installed!checking for OS+ Linux 4.14.0-115.el7a.0.1.aarch64 aarch64checking for C compiler ... found+ using GNU C compiler+ gcc version: 7.3.0 (GCC) ...checking for OpenSSL library ... not found..../auto/configure: error: SSL modules require the OpenSSL library....with nginx by using --with-openssl=<path> option. make: *** No rule to make target 'build', needed by 'default'. Stop.make: *** No rule to make target 'install'. Stop.nginx模块安装错误!cp: cannot create directory ‘/opt/portadv/tools/nginx-install/html/’: No such file or directory...hmod: cannot access ‘/opt/portadv/tools/nginx-install/html/’: No such file or directoryInstallation failed!

可能原因

系统上升级过OpenSSL,但未对应升级OpenSSL依赖组件。

说明

OpenSSL组件包括openssl,openssl-libs,openssl-devel。

处理步骤

恢复OpenSSL组件到系统自带的OpenSSL 1.0.2版本或者完整升级OpenSSL组件到系统上安装的OpenSSL 1.1.1版本,然后重新安装工具。

恢复OpenSSL组件步骤如下(以CentOS 7.7 Arm为例):

步骤1 从CentOS官网下载CentOS镜像文件“CentOS-7-aarch64-Everything-1908.iso”。

步骤2 使用SSH远程登录工具,将CentOS镜像上传至/root目录。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 94

Page 103: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 使用SSH远程登录工具,进入CentOS操作系统命令行界面。

步骤4 执行如下命令将CentOS的ISO镜像文件挂载到本地目录下。

mount /root/CentOS-7-aarch64-Everything-1908.iso /media -o loop

须知

系统重启后需要重新挂载。

步骤5 执行如下命令进入挂载目录。

cd /media

步骤6 执行如下命令找出OpenSSL组件所在的位置。

find . -name "openssl*"

步骤7 执行如下命令安装OpenSSL组件。

rpm -ivh /media/Packages/openssl-devel-1.0.2k-19.el7.aarch64.rpm --nodeps--force

rpm -ivh /media/Packages/openssl-libs-1.0.2k-19.el7.aarch64.rpm --nodeps --force

rpm -ivh /media/Packages/openssl-1.0.2k-19.el7.aarch64.rpm --nodeps --force

----结束

注意下载对应版本的OpenSSL相关RPM包,在升级过程中需要挂载对应操作系统版本的ISO镜像文件安装相关依赖。

完整升级OpenSSL组件的步骤如下:

升级 OpenSSL

适用于以下版本操作系统:

● CentOS 6.5/6.9/6.10/7.2/7.3

● RHEL 6.5/6.9/6.10/7.2/7.3

● 深之度15.2 x86版本

步骤1 下载如下OpenSSL相关RPM包:

● openssl-libs-1.0.2k-19.el7.x86_64.rpmhttps://centos.pkgs.org/7/centos-x86_64/openssl-libs-1.0.2k-19.el7.x86_64.rpm.html

● openssl-devel-1.0.2k-19.el7.x86_64.rpmhttps://centos.pkgs.org/7/centos-x86_64/openssl-devel-1.0.2k-19.el7.x86_64.rpm.html

● openssl-1.0.2k-19.el7.x86_64.rpmhttps://centos.pkgs.org/7/centos-x86_64/openssl-1.0.2k-19.el7.x86_64.rpm.html

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 95

Page 104: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 将相关RPM包上传至服务器任意目录下,使用cd命令切换至该目录。

步骤3 分别执行如下命令安装OpenSSL。

rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm

rpm -ivh openssl-devel-1.0.2k-19.el7.x86_64.rpm

rpm -ivh openssl-1.0.2k-19.el7.x86_64.rpm

说明

如果需要先安装依赖,执行yum install命令安装相关依赖,然后执行如下命令安装OpenSSL。

rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force --nodepsrpm -ivh openssl-devel-1.0.2k-19.el7.x86_64.rpm --force --nodepsrpm -ivh openssl-1.0.2k-19.el7.x86_64.rpm --force --nodeps

步骤4 安装完后,执行如下命令查看OpenSSL版本。

openssl version

显示如下内容说明OpenSSL成功升级。

OpenSSL 1.0.2k-fips

----结束

3.4.3 工具安装时出现 nginx 编译错误而导致安装失败

现象描述

工具安装时出现nginx编译错误而导致安装失败。

可能原因

系统中存在加速库提供的libwd.so文件导致工具安装时nginx编译失败。

处理步骤

执行find / -name libwd*指令查询系统中是否存在版本号为1.2.10的libwd.so文件,如果存在建议将此文件升级到 新版本。

3.4.4 工具在容器中安装失败

现象描述

工具在Docker中安装失败。

可能原因

Docker的/usr/include目录下缺少sys文件夹。

处理步骤

在Docker的/usr/include目录查找sys文件夹,若无此文件夹,则从Docker对应的操作系统中拷贝sys文件夹至Docker的/usr/include目录下,然后卸载并重新安装工具。

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 96

Page 105: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3.4.5 Ctrl+Z 快捷键在代码迁移插件不能进行操作撤销

现象描述

在代码迁移插件中,Ctrl+Z快捷键被覆盖。

可能原因

代码迁移插件的版本低于2.3.2。

处理步骤

安装 新版本的代码迁移插件。

3.4.6 专项软件迁移 yum 命令无法执行

现象描述

执行专项软件迁移任务中的yum安装命令时,遇到报错提示,如下图。

可能原因

yum进程启动时会判断当前系统中是否有其它yum进程在运行,若存在其它yum进程,则会一直等待直到其它yum进程终止。为防止因启动太多的yum进程导致系统资源被耗尽,工具在执行yum命令前会检测系统上是否存在其它yum进程。若存在其它的yum进程,则会给出错误提示,并终止运行当前执行的yum命令。

处理步骤

若运行yum命令等待时间过长,可能是因为yum源配置存在问题或无法连接网络,可以参考以下步骤配置本地镜像源,以CentOS7.6为例。

1. 执行以下命令挂载镜像光盘。

mount /root/CentOS-7-x86_64-Everything-1810.iso /media -o loop2. 执行如下命令备份原始yum源(mv命令中的“path”表示备份目录,请用实际情

况代替)。

cd /etc/yum.repos.d/ //进入yum源配置目录

mv ./* path //备份之前的yum源配置

3. 执行如下命令修改“media.repo”文件。

vi /etc/yum.repos.d/media.repo4. 按“i”进入编辑模式,在“media.repo”文件中写入以下内容。

[InstallMedia]name=CentOS7.6 metadata_expire=-1

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 97

Page 106: 2.3.T10 鲲鹏开发套件插件工具(VSCode

gpgcheck=0cost=500baseurl=file:///media enabled=1

5. 按“ESC”,输入“:wq”,按“Enter”保存并退出。

6. 执行如下命令,更新yum源本地缓存信息。

yum clean allyum makecache

鲲鹏开发套件插件工具(VSCode) 3 代码迁移插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 98

Page 107: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4 性能分析插件

4.1 介绍

4.2 特性指南

4.3 常用操作

4.4 代码样例

4.5 FAQ

4.1 介绍鲲鹏开发套件是Visual Studio Code的一款扩展工具,通常将此类工具称作集成开发环境(IDE)插件。

鲲鹏性能分析插件是其中一个子工具,作为客户端调用服务端的功能。

鲲鹏性能分析工具由四个子工具组成,分别为:系统性能分析、Java性能分析、系统诊断和调优助手。

系统性能分析是针对基于鲲鹏的服务器的性能分析工具,能收集服务器的处理器硬件、操作系统、进程/线程、函数等各层次的性能数据,分析系统性能指标,定位到系统瓶颈点及热点函数,并给出优化建议。该工具可以辅助用户快速定位和处理软件性能问题。

Java性能分析是针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具,能图形化显示Java程序的堆、线程、锁、垃圾回收等信息,收集热点函数、定位程序瓶颈点,帮助用户采取针对性优化。

系统诊断是针对基于鲲鹏的服务器的性能分析工具,提供内存泄漏诊断(包括内存未释放和异常释放)、内存越界访问、内存消耗信息分析展示、OOM诊断能力,帮助用户识别出源代码中内存使用的问题点,提升程序的可靠性。

调优助手是针对基于鲲鹏的服务器的调优工具,能系统化组织性能指标,引导用户分析性能瓶颈,实现快速调优。

当前工具支持的功能特性如表4-1所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 99

Page 108: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-1 工具支持的功能特性

工具分类 任务分类 描述

系统性能分析

联动分析 支持对同一种类型分析任务的结果,选择同一节点或者不同节点间进行比较,从而快速获得不同分析结构之间的差别,定位性能指标的变化,快速识别优化手段的效果。

HPC分析 HPC分析通过采集系统的PMU事件并配合采集面向OpenMP和MPI应用的关键指标,从而帮助用户精准获得Parallel region及Barrier-to-Barrier的串行及并行时间,校准的2层微架构指标,指令分布及L3的利用率和内存带宽等信息。

全景分析 通过采集系统软硬件配置信息,以及系统CPU、内存、存储IO、网络IO资源的运行情况,获得对应的使用率、饱和度、错误次数等指标,以此识别系统性能瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。

针对大数据场景、数据库场景和分布式存储场景的硬件配置、系统配置和组件配置进行检查并显示不是 优的配置项,同时分析给出典型硬件配置及软件版本信息。

微架构分析 基于ARM PMU(Performance Monitor Unit)事件,获得指令在CPU流水线上的运行情况,可以帮助用户快速定位当前应用在CPU上的性能瓶颈,用户可以有针对性地修改自己的程序,以充分利用当前的硬件资源。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 100

Page 109: 2.3.T10 鲲鹏开发套件插件工具(VSCode

工具分类 任务分类 描述

访存分析 基于CPU访问缓存和内存的事件,分析访存过程中可能的性能瓶颈,给出造成这些性能问题的可能原因及优化建议。

1. 访存统计分析基于处理器访问缓存和内存的PMU事件,分析存储的访问次数、命中率、带宽等情况,具体包括:

● 分析L1C、L2C、L3C、TLB的访问命中率和带宽。

● 分析HHA访问速率。

● 分析DDR的访问带宽和次数。

2. Miss事件分析基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于业务进行LLC Miss,TLBMiss,Remote Access,Long Latency Load等Miss类事件分析,并精确的关联到造成该事件的代码。基于这些信息,用户便可以有针对性地修改自己的程序,降低发生对应事件发生的几率,提高程序处理性能。

3. 伪共享分析基于ARM SPE(Statistical Profiling Extension)能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以用于业务进行伪共享分析,得到发生伪共享的次数和比例、指令地址和代码行号、NUMA节点等信息。基于这些信息,用户便可以有针对性地修改自己的程序,降低发生伪共享的几率,提高程序处理性能。

I/O分析 分析存储IO性能。以存储块设备为分析对象,分析得出块设备的I/O操作次数、I/O数据大小、I/O队列深度、I/O操作时延等性能数据,并关联到造成这些I/O性能数据的具体I/O操作事件、进程/线程、调用栈、应用层I/O APIs等信息。根据I/O性能数据分析给出进一步优化建议。

进程/线程性能分析

采集进程/线程对CPU、内存、存储IO等资源的消耗情况,获得对应的使用率、饱和度、错误次数等指标,以此识别进程/线程性能瓶颈。针对部分指标项,根据当前已有的基准值和优化经验提供优化建议。针对单个进程,还支持分析它的系统调用情况。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 101

Page 110: 2.3.T10 鲲鹏开发套件插件工具(VSCode

工具分类 任务分类 描述

资源调度分析 基于CPU调度事件分析系统资源调度情况,主要包括:

1. 分析CPU核在各个时间点的运行状态,如:Idle、Running,以及各种状态的时长比例。

2. 分析进程/线程在各个时间点的运行状态,如:Wait、Schedule和Running,以及各种状态的时长比例。

3. 分析进程/线程切换情况,包括:切换次数、平均调度延迟时间、 小调度延迟时间和 大延迟时间点。

4. 分析各个进程/线程在不同NUMA节点之间的切换次数。如果切换次数大于基准值,能给出绑核优化建议。

热点函数分析 分析C/C++程序代码,找出性能瓶颈点,获得对应的热点函数及其源码和汇编指令;支持通过火焰图展示函数的调用关系,给出优化路径。

锁与等待分析 分析glibc和开源软件(如MySQL、Open MP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等),关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 102

Page 111: 2.3.T10 鲲鹏开发套件插件工具(VSCode

工具分类 任务分类 描述

Java性能分析

在线分析 在线分析包含对于目标JVM和Java程序的双重分析。包括Java虚拟机的内部状态如Heap,GC活动,线程状态及上层Java程序的性能分析,如调用链分析,热点函数,锁分析,程序线程状态及对象生成分布等。通过Agent的方式在线获取JVM运行数据,进行精确分析。

主要分析结果包含:

1. 概览

● 在线显示Java虚拟机系统状态。

● 在线显示JVM的Heap大小、GC活动、Thread数量、Class加载数量和CPU使用率。

1. 内存信息

● 通过抓取堆快照,分析应用在某时刻堆的直方图分布和支配调用关系,追溯堆内存中各Java存活对象到GC root的引用关系链,帮助定位潜在的内存问题;对比分析不同时刻的堆快照,给出堆使用与分配变化,辅助用户发现堆内存在分配和使用过程中的异常情况。

● 获取Java堆中各个对象创建的数量及大小,显示相关内存使用情况并实时刷新。

2. GC通过采集GC事件的各项指标,分析GC性能问题。

3. IO信息在线分析应用中的文件IO、Socket IO时延、消耗带宽等数据,找出热点IO操作。

4. 线程信息获取当前JVM中实时的活动线程状态和当前线程转储,图形化显示线程锁定状态,分析线程死锁情况。

5. 数据库信息

● 监控和分析数据库连接池。监控数据库连接池连接的情况、帮助用户定位潜在的连接泄露,对不合适的连接池配置给出优化建议。

● 分析JDBC热点SQL操作。记录应用中的SQL调用时间、耗时和堆栈跟踪,帮助用户定位耗时

长的热点SQL操作。

● 分析NoSQL热点操作。记录应用中访问/操作NoSQL数据库调用时间、耗时和堆栈跟踪,帮助用户定位耗时 长的热点NoSQL操作。

6. HTTP信息记录应用中的HTTP请求时间和耗时,找出热点HTTP请求。

7. SpringBoot信息

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 103

Page 112: 2.3.T10 鲲鹏开发套件插件工具(VSCode

工具分类 任务分类 描述

经用户授权后,采集第三方框架,如Spring BootAcutator,提供指标数据与性能数据,更加贴近用户业务。

8. 快照信息支持在堆、IO、Workload在线分析过程中生成快照,对快照进行比对,辅助用户发现资源、业务相关指标的变化趋势,定位潜在的资源泄露问题或性能指标恶化问题。

采样分析 通过采样的方式,收集JVM的内部活动/性能事件,通过录制及回放的方式来进行离线分析。这种方式对系统的额外开销很小,对业务影响不大,适用于大型的Java程序。

主要分析结果包括:

1. 概览

● 显示Java虚拟机系统状态。

● 通过采样及回放的方式显示JVM的Heap使用情况、GC活动、IO消耗和CPU使用率。

2. 线程转储及锁分析结果

● 分析程序线程状态及锁。获取采样时间内的线程的状态变化和当前线程转储,根据线程转储图形化地显示线程锁定状态,分析线程死锁情况。

● 分析程序所用堆积对象。获取采样时间内Java堆中各个对象的数量、大小与堆栈跟踪。

● 分析估计线程阻塞对象和阻塞时间。

3. 方法采样分析结果

● 分析Java及native代码中热点函数CPU Cycles的占比及定位。

● 支持通过火焰图查看热点函数及其调用栈。

4. 内存分析结果

● 通过对存留周期长的对象进行采样,分析Java应用中潜在的堆内存泄漏,并辅助用户定位潜在原因。

● 根据采样分析记录出具关于启动参数、GC方面的报告和优化建议。

1. IO分析结果分析应用中文件IO、Socket IO时延、消耗带宽,找出热点IO操作。

系统诊断 内存泄漏诊断 分析应用程序存在的内存泄漏点(包括内存未释放和异常释放),得出具体的泄漏信息,并支持关联出调用栈信息和源码。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 104

Page 113: 2.3.T10 鲲鹏开发套件插件工具(VSCode

工具分类 任务分类 描述

内存消耗分析 实时跟踪应用程序运行期间系统层、应用层(调用内存申请函数)、分配器层、内存映像层的内存消耗情况。

内存越界诊断 分析应用程序的内存异常访问点,给出异常访问类型和内存访问信息,并支持关联出调用栈和源码。

OOM诊断 分析发生OOM时的进程内存状态、系统内存状态和调用栈信息。

连通性拨测 利用系统的ping和traceroute命令诊断源主机与目标主机之间的网络是否连通,经过的网络路径,及数据包往返时间(网络时延,Round-trip delaytime)。

TCP/UDP拨测 利用开源软件iperf3作为Test APP模拟建立TCP、UDP连接,进行收发包测试。

网络抓包 网络抓包采用内核的数据包过滤器实现。数据包过滤器接收网卡驱动程序拷贝的数据,经过过滤后发送到用户态。

丢包诊断 通过ethtool、netstat等系统工具统计整个协议栈中的丢包情况,确定丢包点,给出解决方案;通过perf跟踪skb:kfree_skb事件,监控丢弃的数据包及其内核调用栈,确定丢包根因。

系统负载监控 监控诊断期间的系统负载,包括:CPU、内存、网络IO、软硬件中断,以此了解在网络拨测或发生网络丢包时,是否存在系统资源不足。

调优助手 调优分析 调优助手通过系统化组织和分析性能指标、热点函数、系统配置等信息,形成系统资源消耗链条,引导用户根据优化路径分析性能瓶颈,并针对每条优化路径给出优化建议和操作指导,以此实现快速调优。

4.2 特性指南

4.2.1 系统性能分析

4.2.1.1 联动分析

4.2.1.1.1 特性描述

支持对同一种类型分析任务的结果,选择同一节点或者不同节点间进行比较,从而快速获得不同分析结构之间的差别,定位性能指标的变化,快速识别优化手段的效果。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 105

Page 114: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.2.1.1.2 特性操作

步骤1 单击联动分析。

进入分析报告管理界面。

图 4-1 联动分析界面

步骤2 单击“分析报告管理”后面的 。

进入“新建联动分析任务”页面。

步骤3 设置分析报告参数,如图 新建分析任务所示,需要配置的选项如表 新建分析任务的参数说明所示。

选择分析场景,单击“横向分析”或“纵向分析”,勾选需要分析的对象。

说明

● 不在一种场景下的任务不会被显示出来。

● 不符合当前对比方式的任务不会被选中。

● 若出现了任务的组件不同(比如在数据库场景下,openGauss与MySQL相比),则会弹窗提示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 106

Page 115: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-2 新建分析任务

表 4-2 新建联动分析任务的参数说明

参数 说明

选择场景 选择需要分析的场景。

可选“通用”、“大数据”、“数据库”和“分布式存储”四个场景。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 107

Page 116: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

任务名称 输入任务名称。名称需要满足如下要求:

● 只能由字母、数字、特殊字符(@#$%^&*()[]<>._-!~+空格)组成

● 长度为1~32个字符

选择对比对象 选择“全景分析”和“热点函数分析”。

选择“热点函数分析”可查看差分火焰图页签。

横向分析是同一工程同一任务下的多个节点间分析结果对比,纵向分析是不同任务两个节点间分析结果对比。

步骤4 单击“确认”,完成任务的创建。

单击任务名称后面的 图标,将该任务相关的所有数据都删除,请谨慎操作。

步骤5 等待分析完成,单击任务名。

进入“配置数据”页签(默认),查看配置数据详细信息,如图 配置数据详情所示。

说明

● 配置信息的差异项前有 标识,可点击“查看详情”进行详细信息查看;可正常按照纵向对比,也可横向对比展示。

● 配置不同的选项单击“查看详情”可以看到弹窗罗列不同的详情。

图 4-3 配置数据详情

步骤6 单击“性能数据”页签。

进入“性能数据”页签,查看性能数据的详细信息,如图 性能数据详情所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 108

Page 117: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 存储IO、网络IO默认无数据,需用户自行点击 按钮筛选对象查看, 多可选中10个对象。

● 可以通过下拉框选择进行切换数据展示。

图 4-4 性能数据详情

图 4-5 性能数据-IO 区域

步骤7 点击“热火焰图”或“冷火焰图”页签。

进入“热火焰图”页签,查看应用运行的详细信息,如图4-6所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 109

Page 118: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 上半部分聚合当前火焰图应用程序的宏观指标,包括时钟周期,执行指令值,IPC,操作系统,主机名等;下半部分主要罗列用户选择的差分火焰图;火焰图顶端有搜索模块,搜索到的函数会变成紫色。

● 差分火焰图只能表示两张火焰图的差异,因此当对比任务数大于2的时候用户要自己选择base节点和比较节点。同一时刻只能显示用户选择的两个节点对比出来的一张火焰图。

图 4-6 热火焰图

----结束

4.2.1.2 HPC 分析

4.2.1.2.1 特性描述

HPC分析通过采集系统的PMU事件并配合采集面向OpenMP和MPI应用的关键指标,帮助用户精准获得Parallel region及Barrier-to-Barrier的串行及并行时间、校准的2层微架构指标、指令分布及L3的利用率和内存带宽等信息。

4.2.1.2.2 特性操作

步骤1 在“工程管理”区域,依次单击指定工程和分析任务名称前的 。

展开节点列表。

步骤2 单击节点名称查看分析结果。

● 单击节点名称默认打开“总览 ”页签,如图 总览所示,界面参数描述如表 总览参数说明所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 110

Page 119: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-7 总览

表 4-3 总览参数说明

参数 说明

运行时间 显示应用程序运行时间。

串行时间 显示应用程序串行运行的时间。

并行时间 显示应用程序并行运行的时间。

不平衡时间 显示应用程序不平衡的运行时间。

CPI 显示CPU cycles/Retired instruction的比值,表示每一条指令消耗的时钟周期。

CPU使用率 显示CPU使用率(相对于OpenMP运行的比率)。

OpenMP Team使用率

显示OpenMP Team的使用率。

Hotspots 默认为“函数”选项,还可选“模块”、“parallel-region”、“barrier-to-barrier-segment”。

● 单击“HPC指标”页签查看HPC指标分析结果,如图4-8、图4-9所示,界面参数

描述如表4-4所示。

说明

可单击 按钮进行视图切换。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 111

Page 120: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-8 HPC 指标

图 4-9 HPC 指标(PMU 事件)

表 4-4 HPC 指标参数说明

参数 说明

内存带宽

平均DRAM带宽 显示平均DRAM带宽。

读带宽 显示平均读带宽。

写带宽 显示平均写带宽。

Socket内的带宽 显示Socket内的带宽。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 112

Page 121: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

跨Socket的带宽 显示跨Socket的带宽。

L3 By-Pass比率 显示L3 By-Pass比率。

L3 miss比率 显示L3 miss的比率。

L3使用效率 显示L3集群使用效率。

指令分布(鼠标悬停于参数旁边的问号上可查看详细信息)

HPC Top-Down

事件名称 显示Top-Down事件名称。

事件比例 显示Top-Down事件比例。

OpenMP运行时指标

串行时间(秒) 显示OpenMP串行运行的时间。

并行时间(秒) 显示OpenMP并行运行的时间。

Parallel region 显示并行区域。

Barrier-to-barriersegment

显示特殊的独立运行区段。

执行时间(秒) 显示OpenMP执行的时间。

不平衡时间(秒) 显示OpenMP不平衡的运行时间。

不平衡比率(%) 显示OpenMP不平衡的运行比率。

Potential Gain(s) 显示实际时长和理论时长的差异。

CPU Utilization(%) 显示CPU的利用率。

Spin(%) 显示CPU用于OS和并行的等待率。

Overhead(%) 显示CPU并行的精细化比率。

Lock Contention(s) 显示锁争用时间。

Creation(s) 显示并行工作的时间。

Scheduling(s) 显示调度时间。

Tasking(s) 显示任务分配时间。

Reducation(s) 显示归约操作时间。

Atomics(s) 显示原子操作时间。

MPI运行时指标

Rank 显示逻辑工作单元。

Elapsed Time(s) 显示运行时间。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 113

Page 122: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Overall Wait Rate(%)

显示等待时间占比。

Communication(%)

显示communication等待时间占比。

P2P Communication(%)

显示point to point communication等待时间占比。

CollectiveCommunication(%)

显示Collective communication等待时间占比。

Synchronization(%)

显示synchronization等待时间占比。

Single I/O(%) 显示Single I/O等待时间占比

I/O(%) 显示I/O等待时间占比

Collective I/O(%) 显示Collective I/O等待时间占比

Data Size(bytes) 显示传输数据大小。

Function 显示调用函数。

Call Count 显示调用次数。

Send data type 显示发送数据的类型。

Recv data type 显示接受数据的类型。

mpi-comm 显示mpi通信域的信息。

原始PMU事件计数

事件 显示PMU事件名称。

计数 显示PMU事件数量。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看详细的日志信息。

----结束

4.2.1.3 全景分析

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 114

Page 123: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.2.1.3.1 特性描述

全景分析通过采集系统的CPU、内存、存储IO、网络IO资源的运行情况,获得它们的使用率、饱和度、错误次数等指标,以此识别系统瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。

针对大数据、分布式存储和数据库场景的硬件配置、系统配置和组件配置进行检查,显示不是 优的配置项,同时分析给出典型硬件配置及软件版本信息。

4.2.1.3.2 特性操作

步骤1 在“工程管理”区域,依次单击指定工程和分析任务名称。

展开节点列表。

步骤2 单击节点名称查看分析结果。可单击右上角的 按钮导出全景分析数据。

● 单击节点名称默认打开“总览 ”页签,如图4-10所示,界面参数描述如下列表格所示。

说明

– “总览”页面展示CPU、内存子系统、存储子系统、网络子系统及其它配置项的信息(使用物理机环境时会显示系统部件图)。

– 检测到可优化的指标项时显示“优化建议”区域,展开可查看详细的优化建议和修改方

法,针对部分配置项给出优化建议,用 标识。部分参数带有 标识,鼠标悬停在标识符上会显示详细参数描述和优化建议。

图 4-10 总览

表 4-5 CPU Package 区域参数说明

参数 说明

CPU型号 显示CPU型号。

Core数量 显示CPU核数量。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 115

Page 124: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

大频率 显示CPU 大频率。

当前频率 显示CPU当前频率。

CPU Core

ID 显示CPU厂商编号。“0x48”代表“HiSilicon”。

大频率 显示CPU 大频率。

当前频率 显示CPU当前频率。

L1I 显示CPU的一级高速指令缓存大小。

L2 显示CPU的二级缓存大小。

L1D 显示CPU的一级高速数据缓存大小。

L3 cache

缓存大小 显示CPU的三级缓存大小。

L3 cache共享节点 显示共享L3 cache的NUMA节点。

NUMA节点

节点 显示NUMA节点名称。

CPU核 显示NUMA节点的CPU核编号。

总内存大小 显示NUMA节点的总内存大小。

空闲内存大小 显示NUMA节点的空闲内存大小。

NUMA节点距离

节点 显示NUMA节点。

说明NUMA节点之间的距离指从节点x上访问节点y上的内存需要付出的代价的一种表现形式。距离越短,表示CPU访问内存的速度越快,反之亦然。

NUMA平衡

NUMA平衡 显示NUMA平衡开关状态。

表 4-6 内存子系统区域参数说明

参数 说明

内存总大小 显示系统总内存容量。

内存条数量 显示内存条数量。

空插槽数量 显示空内存插槽数量。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 116

Page 125: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

内存条/DIMM列表

位置/插槽位置 显示内存插槽位置。

容量 显示当前插槽位置安装的内存容量大小。

大速率 显示内存 大速率。

配置速率 显示配置的内存速率。

类型 显示内存条类型。

表 4-7 存储子系统区域参数说明

参数 说明

存储总量 显示存储总容量大小。

总盘数 显示硬盘总数。

硬盘

ID/设备名称 显示设备名称。

型号/硬盘型号 显示硬盘型号。

容量/硬盘容量 显示硬盘容量大小。

类型/硬盘类型 显示硬盘类型。

RAID控制卡

RAID控制器名称 显示RAID卡型号。

RAID控制器ID 显示RAID控制器芯片型号。

缓存大小 显示缓存大小。

表 4-8 网络子系统区域参数说明

参数 说明

网卡 显示网卡数量。

网口数 显示网口数量。

网卡

延迟 显示延迟时间。

NUMA节点 显示NUMA节点。

内核驱动程序 显示内核驱动程序。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 117

Page 126: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

内核模块 显示内核模块。

子系统 显示子系统。

网口

名称 显示网口名称。

Device(B/D/F) 显示设备的B/D/F。

硬件ID 显示硬件ID。

txkB/s 每秒传输的字节总数,单位为KB。

rxkB/s 每秒接收的字节总数,单位为KB。

txpck/s 每秒传输的数据包总数。

rxpck/s 每秒接收的数据包总数。

大传输速率 显示 大传输速率。

当前传输速率 显示当前传输速率。

大数据负载(字节)

显示 大数据负载。

详细信息 显示设备的详细信息。

表 4-9 运行时环境信息区域参数说明

参数 说明

基础系统信息

BIOS版本 显示BIOS版本信息。

OS版本 显示OS版本信息。

kernel版本 显示系统内核版本。

JDK版本 显示JDK版本。

glibc版本 显示glibc版本。

system_dmesg 显示当前系统dmesg信息。单击“查看详情”查看详细信息。

docker info 显示Docker容器的信息。单击“查看详情”查看详细信息。

说明该参数需要在宿主机上安装Docker容器时显示内容。

sysctl 显示所有sysctrl配置项。单击“查看详情”查看详细信息。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 118

Page 127: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

kernelConfig 显示内核配置。单击“查看详情”查看详细信息。

docker images 显示Docker容器镜像。单击“查看详情”查看详细信息。

说明该参数需要在宿主机上安装Docker容器时显示内容。

BMC固件版本 显示BMC固件版本。

内存管理系统

SMMU 显示SMMU功能的状态。

页表大小 显示页表大小。

透明大页 显示透明大页功能的状态。

标准大页 显示标准大页大小。

大页数量 显示标准大页数量。“0”表示没有配置。

交换分区 显示当前交换分区大小。

脏数据缓存到期时间(单位1/100秒)

显示脏数据缓存到期时间。

脏页面占用总内存大的比例

显示脏页面占用总内存 大比率。

脏页面缓存占用总内存 大的比例

显示脏页面缓存占用总内存 大比率。

唤醒pdflush进程刷新脏数据间隔

显示唤醒pdflush进程刷新脏数据间隔,单位为1/100秒。

小保留的空闲内存大小(KB)

显示 小保留的空闲内存大小,单位为KB。

网卡固件版本 显示网卡端口和网卡固件版本。

虚拟机/容器

虚拟机Libvirt版本 显示虚拟机Libvirt版本。

KVM虚拟机配置参数 显示KVM虚拟机配置参数。

容器版本 显示容器版本。

kernel内核相关参数

HZ值 显示HZ值。

nohz(定时器机制) 显示nohz(定时器机制)的状态。

cmdline 显示整个kernel启动脚本。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 119

Page 128: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-10 存储资源配置区域参数说明

参数 说明

存储卷 显示存储卷数量。

文件系统 显示文件系统分区数量。

RAID组 显示RAID组数量。

RAID级别

逻辑盘名称 显示逻辑盘名称。

逻辑盘ID 显示逻辑盘ID。

RAID控制器ID 显示RAID控制器ID。

RAID级别 显示RAID级别。

逻辑盘条带大小 显示逻辑盘条带大小。

逻辑盘当前读策略 显示逻辑盘当前读策略。

逻辑盘当前写策略 显示逻辑盘当前写策略。

逻辑盘缓存策略 显示逻辑盘缓存策略。

CacheCadence标识 显示CacheCadence标识。

RAID配置 显示当前的RAID配置。

存储信息

设备名称 显示设备名称。

硬盘文件预读大小(KB)

显示硬盘文件预读大小。

存储IO调度机制 显示存储IO调度机制。

磁盘请求亲和设置 显示磁盘请求亲和设置。“1”表示确保I/O完成的动作会由发起该I/O请求的CPU处理。

磁盘请求队列长度设置

显示采样间隔时间内,队列中对指定磁盘的读写请求的平均数量。

磁盘队列深度 显示磁盘队列深度,即当主机发起IO请求时,设备能够支持同时处理的IO数量。

IO合并 显示IO合并的设置值。

– 0:表示启用所有类型的合并尝试。

– 1:表示复杂合并检查被禁用,但简单的与上一个I/O请求合并继续生效。

– 2:表示禁用所有类型的合并尝试。

文件系统信息

分区名称 显示分区名称。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 120

Page 129: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

文件系统类型 显示当前分区的文件系统类型。

挂载点 显示当前分区的挂载点。

挂载信息 显示当前分区的挂载信息。

表 4-11 网口配置区域参数说明

参数 说明

网口数量 显示网口数量。

中断聚合

网口名称 显示网口名称。

adaptive-rx 显示接收队列的动态聚合执行功能开关状态。

adaptive-tx 显示发送队列的动态聚合执行功能开关状态。

rx-usecs 产生一个中断之前至少有一个数据包被接收之后的微秒数。

tx-usecs 产生一个中断之前至少有一个数据包被发送之后的微秒数。

rx-frames 产生中断之前发送的数据包数量。

tx-frames 产生中断之前接收的数据包数量。

Offload

网口名称 显示网口名称。

rx-checksumming 显示接收包校验和开关状态。

tx-checksumming 显示发送包校验和开关状态。

scatter-gather 显示分散/聚集功能开关状态。

TSO 显示TCP-segmentation-offload开关状态。

UFO 显示UDP-fragmentation-offload开关状态。

LRO 显示large-receive-offload开关状态。

GSO 显示generic-segmentation-offload开关状态。

GRO 显示generic-receive-offload开关状态。

队列

网口名称 显示网口名称。

队列数 显示网卡队列数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 121

Page 130: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

中断NUMA绑核

网口名称 显示网口名称。

中断号 显示中断号。

中断NUMA绑核信息 显示中断NUMA绑核信息。

xps/rps 显示发送/接收队列绑核信息。

环形缓冲区

网卡名称 显示网卡名称。

TX(Byte) 发送的环形缓冲区大小,单位为字节。

RX(Byte) 接收的环形缓冲区大小,单位为字节。

● 单击“PCIe拓扑信息”查看PCIe的拓扑信息分析结果,如图4-11,界面参数如表4-12所示。

说明

– 鼠标悬停至拓扑图中设备图标上可显示设备详细信息和建议。

– 点击“+”或“-”按钮,可以放大或缩小拓扑图。

– 详细参数信息可鼠标悬停至 图标上查看。

图 4-11 PCIe 拓扑信息

表 4-12 PCIe 拓扑信息参数说明

参数 说明

TOP10进程绑核状态

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 122

Page 131: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

进程名称 显示进程名称。

绑核信息 显示进程的绑核信息。

中断事件 显示产生中断的事件。

CPU core 显示CPU核编号。

绑定在核上的top10进程线程信息

显示绑核的TOP10进程线程信息。

硬中断信息

CPU核 显示CPU核编号。

设备信息 显示设备信息。

PCIE设备BDF号 显示PCIE设备的BDF编号

中断事件名称 显示中断事件的名称。

中断绑核信息 显示中断绑核的信息。

中断频率(次/s) 显示中断的显示中断的频率。

网络设备名称 显示网络设备的名称。

网络队列名称 显示网络设备的队列名称。

xps_cpus 显示xps绑核的CPU。

rps_cpus 显示rps绑核的CPU。

rps_flow_cnt 显示每个队列负责flow的 大数量。

硬中断绑核数量 显示硬中断绑核数量。

XPS绑核数量 显示XPS的绑核数量。

RPS绑核数量 显示RPS的绑核数量

中断分布统计

软硬中断频率(次/s) 显示软硬中断的频率。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 123

Page 132: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-12 PCIe 拓扑信息-网卡设备

表 4-13 PCIe 拓扑信息参数说明-网卡设备信息

参数 说明

PCIe设备信息

device_full_name 显示设备全称。

DevCap 显示设备能力。

DevCtl 显示设备调度。

LnkCap 显示链路能力。

LnkCtl 显示链路调度。

LnkSta 显示链路状态。

设备固件驱动信息

driver 显示驱动名称。

version 显示驱动版本信息。

firmware-version 显示驱动的固件信息。

driver mount params 显示驱动参数信息。

网口状态信息

Network Name 显示网络设备名称。

Link detected 显示网卡的链路监测状态。

Speed 显示网卡的当前速率。

Duplex 显示网卡的工作模式。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 124

Page 133: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

Auto-negotiation 显示网卡是否开启自动协商。

网口统计信息

rxbyte/s 显示每秒接受字节数。

txbyte/s 显示每秒发送字节数。

rxdrop/s 显示每秒丢弃的已接收数据包数。

txdrop/s 显示每秒丢弃的已发送数据包数。

Receive bytes 显示接口接收数据的总字节数。

Transmit bytes 显示接口发送数据的总字节数。

Receive drop 显示驱动接收的丢弃包总数。

Transmit drop 显示驱动发送的丢弃包总数。

net_core_statistic 显示net core统计信息。

driver_statistic 显示驱动层统计信息。

driver_queue_statistic 显示驱动驱动层按队列统计信息。

firmware_statistic 显示微码层统计信息。

MAC_statistic 显示物理层统计信息。

中断请求配置

irqbalance 显示中断请求平衡状态。

RPS 显示是否支持RPS技术。

XPS 显示是否支持XPS技术。

RFS 显示是否支持RFS技术。

aRFS 显示是否支持aRFS技术。

Interrupt bindingcore settings

显示设置的中断绑核数。

队列大小和环形缓冲区大小配置信息

RSS 显示是否支持RSS技术。

Queue Configuration 显示队列配置信息。

ring bufferConfiguration

显示环形缓冲区的配置信息。

网卡卸载功能配置信息

rx-checksumming 显示是否支持接收侧硬件校验和(checksum)的计算。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 125

Page 134: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

tx-checksumming 显示是否支持发送侧硬件校验和(checksum)的计算。

tx-checksum-ipv4 显示是否支持发送侧对基于IPv4的TCP/UDP的硬件校验和(checksum)的计算。

tx-checksum-ip-generic

显示是否支持发送侧对任何协议或协议层组合的IP校验和(checksum)的计算。

tx-checksum-ipv6 显示是否支持发送侧对基于IPv6的TCP/UDP的硬件校验和(checksum)的计算。

tx-checksum-fcoe-crc 显示是否支持FCoE CRC32的硬件校验和(checksum)的计算。

tx-checksum-sctp 显示发送侧是否支持SCTP的硬件校验和(checksum)的计算。

scatter-gather 显示是否开启分散/聚集(Scatter Gather)功能。

tx-scatter-gather 显示是否开启分散/聚集(Scatter Gather)功能,ndo_start_xmit支持处理页式碎片化skbs(skb_shinfo()->frags)。

tx-scatter-gather-fraglist

显示是否开启分散/聚集 (Scatter Gather) 功能,ndo_start_xmit支持处理链式碎片化skbs(skb->next/prev list)。

tcp-segmentation-offload

显示是否开启TSO功能。

tx-tcp-segmentation 显示TCPv4分片功能的状态。

tx-tcp-ecn-segmentation

显示是否开启硬件正确拆分带有CWR位的数据包,不论是TCPv4(需要开启tx-tcp-segmentation)还是TCPv6(需要开启tx-tcp6-segmentation)。

tx-tcp-mangleid-segmentation

显示是否支持忽略IP ID(IP ID可以基于驱动的偏好设置,既可以随分片增长也可以使其保持不变)。

tx-tcp6-segmentation 显示TCPv6分片功能的状态。

generic-segmentation-offload

显示是否开启分片卸载。

generic-receive-offload

显示是否开启GRO功能。

large-receive-offload 显示是否开启LRO功能。

rx-vlan-offload 显示是否支持接收侧VLAN CTAG硬件加速。

tx-vlan-offload 显示是否支持发送侧VLAN CTAG硬件加速。

receive-hashing 显示是否开启接受侧哈希卸载。

rx-vlan-filter 显示是否开启接收侧VLAN CTAGs过滤。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 126

Page 135: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

tx-fcoe-segmentation 显示是否开启FCoE分片。

tx-gre-segmentation 显示是否开启GRE包头的发送分片卸载。

tx-gre-csum-segmentation

显示是否支持GRE包头带有校验和(checksum)计算的发送分片卸载。

tx-ipxip4-segmentation

显示是否支持IP4 or IP6 over IP4包头的发送分片卸载。

tx-ipxip6-segmentation

显示是否支持IP4 or IP6 over IP6包头的发送分片卸载。

tx-udp_tnl-segmentation

显示是否支持UDP隧道包头的发送分片卸载。

tx-udp_tnl-csum-segmentation

显示是否支持UDP隧道包头带有校验和(checksum)计算的发送分片卸载。

tx-gso-partial 显示是否支持部分通用分段卸载功能。

tx-sctp-segmentation 显示是否开启SCTP包发送分片。

tx-esp-segmentation 显示是否开启ESP包发送分片。

tx-udp-segmentation 显示是否开启UDP包发送分片。

tx-vlan-stag-hw-insert

显示是否开启VLAN S-Tag 发送硬件加速。

rx-vlan-stag-hw-parse

显示是否开启VLAN S-Tag 接收硬件加速。

rx-vlan-stag-filter 显示是否开启VLAN S-Tag 接收过滤。

l2-fwd-offload 显示是否允许二层数据包在硬件中转发。

hw-tc-offload 显示是否开启流分类(TC)的硬件卸载功能。

esp-hw-offload 显示是否开启ESP包发送侧硬件卸载功能。

esp-tx-csum-hw-offload

显示是否开启ESP包发送校验和(checksum)卸载。

rx-udp_tunnel-port-offload

显示是否开启接收侧UDP隧道卸载。

tls-hw-tx-offload 显示是否开启接收侧NIC逐包处理加密

tls-hw-rx-offload 显示是否开启发送侧NIC逐包处理加密。

rx-gro-hw 显示是否开启硬件GRO。

tls-hw-record 显示是否支持使用NIC驱动程序和固件的TCP处理取代内核网络堆栈的处理,该功能在使用Linux网络堆栈的场景下不可用,例如防火墙功能,QoS,数据包调度。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 127

Page 136: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

其他网络配置信息

mtu 显示能通过的 大数据包大小。

Pause parameters 显示pause侦配置参数。

Sysctl parameters 显示sysctl变量配置。

图 4-13 PCIe 拓扑信息-NVMe 设备

表 4-14 PCIe 拓扑信息参数说明-NVMe 设备信息

参数 参数说明

PCIe设备信息

device_full_name 显示设备全称。

DevCap 显示设备能力。

DevCtl 显示设备调度。

LnkCap 显示链路能力。

LnkCtl 显示链路调度。

LnkSta 显示链路状态。

Smart配置信息

critical warning 显示紧急告警。

available spare 显示冗余空间比例。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 128

Page 137: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 参数说明

available sparethreshold

显示冗余空间告警比例。

percentage used 显示已使用寿命。

data units read 显示读数据总量。

data units written 显示写数据总量。

host read commands 显示主机总读次数。

host write commands 显示主机总写次数。

controller busy time 显示控制器忙时间统计。

power cycles 显示上电次数。

power on hours 显示上电时长。

unsafe shutdowns 显示非安全关机次数。

media and dataintegrity errors

显示数据错误次数。

number of errorinformation log entries

显示错误日志条数。

warning compositetemperature time

显示混合温度一般告警时间。

critical compositetemperature time

显示混合温度严重告警时间。

data status 显示数据健康状态。

基础配置信息

Namespace 显示命名空间。

maximum capacity 显示原始 大容量。

current capacity 显示当前 大容量。

volatile write cache 显示是否支持写缓存。

model number 显示设备型号。

firmware version 显示固件版本。

NVMe version 显示NVMe版本。

device status 显示设备健康状况。

高级配置信息

controller id 显示控制器ID。

PCI slot 显示PCI槽位号。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 129

Page 138: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 参数说明

highest temperature 显示历史 高温度。

capacitance status 显示电容健康状态。

atomic write 显示原子写状态。

bad block rate 显示坏块率。

total blocks count 显示总block数。

bad blocks count 显示总坏块数。

factory bad blockscount

显示出厂坏块数。

flash program failedcount

显示flash编程失败计数。

flash erase failedcount

显示flash擦失败计数。

maximum datatransfer size

显示 大数据传输大小。

系统配置信息

options nvmeuse_threaded_interrupts

显示NVMe使用线程中断选项。

dirty_tatio 显示触发同步写的脏数据占可用内存的百分比。

dirty_background_ratio 显示触发回刷的脏数据量占可用内存的百分比。

dirty_writeback_centisecs

显示pdflush写入脏数据进程周期。

dirty_expire_centisecs 显示脏数据驻留内存时长。

nvme1 显示设备详情。

设备温度信息

compositetemperature

显示温度信息。

exceed temperaturethreshold count

显示超过门限温度的发生次数。

exceed temperaturethreshold time

显示超过门限温度的发生时间。

composite highesttemperature

显示整盘历史 高温。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 130

Page 139: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 参数说明

composite overtemperature thresholdcount

显示整盘过温计数。

composite overtemperature thresholdtime

显示整盘过温时间。

composite currenttemperature

显示整盘当前温度。

composite overtemperature thresholdtemperature

显示整盘高温阈值。

composite undertemperature thresholdtemperature

显示整盘低温阈值。

controller highesttemperature

显示控制器历史 高温。

controller overtemperature thresholdcount

显示控制器过温计数。

controller overtemperature thresholdtime

显示控制器过温时间。

controller1 currenttemperature

显示控制器当前温度。

controller1 overtemperature thresholdtemperature

显示控制器高温阈值。

controller1 undertemperature thresholdtemperature

显示控制器低温阈值。

其他配置信息

power states 显示设备功耗级别。

Write mode 显示写模式取值。

self-test 显示诊断测试结果。

disk writes per day 显示平均每天磁盘写入量。

设备IO统计信息

范围(µs) 显示IO读写的时延范围。

读IO频率(次/s) 显示读IO的频率。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 131

Page 140: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 参数说明

写IO频率(次/s) 显示写IO的频率。

● 单击“性能”页签查看性能指标分析结果,如图4-14所示,界面参数描述如下列表格所示。

说明

– “性能”页面有折线图/列表图两种显示方式。可单击右上方的 按钮进行视图切换。

– 折线图:展示系统各个性能指标在整个采集过程中的时序数据,拖动时间条可查看选定时间内的时序数据。

可单击“分析对象/指标”右边的 按钮,筛选各个性能指标查看对应的折线图。

– 列表图:展示各个性能指标的平均值。如果该指标的平均值超过其基准值,则用 标识,并冒泡提示优化建议和修改方法。

可单击参数右边的 按钮设置数据阈值,拖动左右阈值条或输入数字可以设置阈值的上下限,快速筛选数据。

图 4-14 性能

表 4-15 CPU 区域参数说明

参数 说明

CPU利用率

CPU CPU核(all表示整体)。

%user 在用户态运行时所占用CPU总时间的百分比。

%nice 在用户态改变过优先级的进程运行时所占用CPU总时间的百分比。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 132

Page 141: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

%sys 在内核态运行时所占用CPU总时间的百分比。该指标没有包含服务硬件和软件中断所花费的时间。

%iowait CPU等待存储I/O操作导致空闲状态的时间占CPU总时间的百分比。

%irq CPU服务硬件中断所花费时间占CPU总时间的百分比。

%soft CPU服务软件中断所花费时间占CPU总时间的百分比。

%idle CPU空闲且系统没有未完成的存储I/O请求的时间占总时间的百分比。

%cpu CPU使用率(非idle状态下的CPU使用率)

max_use 显示采集时段内的 高使用率及时间点。

平均负载

runq-sz 运行队列的长度,即等待运行的任务的数量。

plist-sz 在任务列表中的任务的数量。

ldavg-1 后1分钟的系统平均负载。平均负载的计算是在指定时间间隔内,正在运行或可运行(R状态)任务的平均数量与不可中断睡眠状态(D状态)任务的平均数量之和。

ldavg-5 过去5分钟的系统平均负载。

ldavg-15 过去15分钟的系统平均负载。

blocked 当前阻塞的任务数,正在等待I/O完成。

表 4-16 内存区域参数说明

参数 说明

空闲内存

memfree (KB) 可用的空闲内存大小,以KB为单位。不包括缓冲区和缓存的空间。

avail (KB) 可用的内存大小,以KB为单位。包括缓冲区和缓存的空间。

memused (KB) 已使用的内存大小,以KB为单位。包括缓冲区和缓存的空间。

%memused 已使用内存的百分比,即memused(KB)/(memused(KB)+memfree(KB))。

buffers (KB) 内核已用作缓冲区的内存大小,以KB为单位。

cached (KB) 内核已用作缓存的内存大小,以KB为单位。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 133

Page 142: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

active (KB) 活跃内存大小,以KB为单位( 近已被使用的内存,除非绝对必要,通常不会被回收)。

inact (KB) 非活跃内存大小,以KB为单位(内存 近很少使用,它更符合回收条件)。

dirty (KB) 等待写回到磁盘的内存大小,以KB为单位。

分页统计

pgpgin/s 每秒从磁盘或SWAP置换到内存的字节数(KB)。

pgpgout/s 每秒从内存置换到磁盘或SWAP的字节数(KB)。

fault/s 每秒系统产生的缺页数,即主缺页与次缺页之和(major + minor),不是生成I/O的页面错误的计数,因为一些页面错误可以在没有I/O的情况下解决。

majflt/s 每秒产生的主缺页数,需要从磁盘加载一个内存分页。

pgscank/s 每秒被kswapd守护进程扫描的分页数量。

pgscand/s 每秒直接被扫描的分页数量。

%vmeff 分页回收效率的度量指标。如果接近100%,那么几乎每个分页都可以在非活动列表的底部获取。如果它变得太低(例如,小于30%),那么虚拟内存有一些问题。如果在时间间隔内没有分页被扫描,则此字段为0。

交换统计

pswpin/s 系统每秒换入的交换分区页面总数。

pswpout/s 系统每秒换出的交换分区页面总数。

NUMA内存统计

名称 显示NUMA节点名称。

interleave_hit 按interleave策略成功分配到该node上的内存页个数。

local_node 运行在该节点的进程成功在这个节点上分配到的内存页个数。

numa_foreign 进程优选从当前节点分配内存页,但实际上却从其他节点分配到的内存页个数。与“numa_miss”相对应。

numa_miss 进程优选从其它节点分配内存页,但是实际上却从当前节点分配到的内存页个数。与“numa_foreign”相对应。

numa_hit 进程优选从当前节点分配并成功分配到的内存页个数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 134

Page 143: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

other_node 运行在其它节点的进程优选从当前节点分配并成功分配到的内存页个数。

表 4-17 存储 IO 区域参数说明

参数 说明

块设备利用率

DEV 块设备名称

tps 每秒I/O的传输总数。一个传输就是到物理设备的一个I/O请求。发送到设备的多个逻辑请求可以合并成单个I/O请求,传输大小是不确定的。

rd (KB)/s 每秒从设备读取的带宽。

wr (KB)/s 每秒写入到设备的带宽。

avgrq-sz 平均每次存储I/O操作的数据大小(以扇区为单位)。

avgqu-sz 磁盘请求队列的平均长度。

await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒,等于寻道时间+队列时间+服务时间。

svctm 系统处理每次请求的平均时间(以毫秒为单位),不包括在请求队列中消耗的时间。

%util 在I/O请求发送到设备期间所消耗的CPU时间百分比(设备的带宽使用率)。当该值接近100%时说明磁盘读写将近饱和。

max_tps 每秒I/O传输总数的 大值。

max_util 显示消耗CPU的 大百分比。

表 4-18 网络 IO 区域参数说明

参数 说明

网络设备统计

IFACE 网络接口名称。

rxpck/s 每秒接收的数据包总数。

txpck/s 每秒传输的数据包总数。

rxkB/s 每秒接收的字节总数,单位为KB。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 135

Page 144: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

txkB/s 每秒传输的字节总数,单位为KB。

eth_ge 网口标准速率,100GE、50GE、40GE、10GE等。

网络设备故障统计

IFACE 网络接口名称。

rxerr/s 每秒接收到的损坏的数据包数量。

txerr/s 当发送数据包时,每秒发生错误的总数。

coll/s 当发送数据包时,每秒发生冲突的数量。

rxdrop/s 当Linux缓冲区满的时候,网卡设备接收端每秒钟丢弃的数据包的数量。

txdrop/s 当Linux缓冲区满的时候,网络设备发送端每秒钟丢弃的网络包的数量。

txcarr/s 当发送数据包时,每秒发生载波错误的次数。

rxfram/s 当接收数据包时,每秒发生帧同步错误的次数。

rxfifo/s 在接收数据包时,每秒发生FIFO溢出错误的次数。

txfifo/s 当发送数据包时,每秒发生FIFO溢出错误的次数。

表 4-19 能耗区域参数说明

参数 说明

平均功率 (W) 系统功率的平均值。

大功率 (W) 系统功率的 大值。

小功率 (W) 系统功率的 小值。

● 单击“典型配置”页签查看不同解决方案测试获得的典型配置。

说明

根据不同场景创建的工程,可以获得不同测试场景的典型配置信息。

点击“硬件与软件配置”右边的 按钮可以查看详细配置信息;将鼠标悬停于 可查看

指标优化建议;将鼠标悬停于上 可以查看推荐配置的具体路径。

可在搜索栏搜索需要查看的组件。

以大数据场景下的典型配置为例,如图4-15所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 136

Page 145: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-15 大数据场景下的典型配置

● 单击“Tracing数据”页签查看Tracing数据的详细信息。

说明

“Tracing数据”页签仅在数据库场景下,勾选了采集Tracing数据选项,并在环境中对需要分析的程序打入了tracepoint信息。打入tracepoint信息请参考“常用操作 > 采集MySQLtrace数据”章节。

以数据库场景下选择MySQL的任务为例,如图 Tracing数据的详细信息所示,页面右上角可以点击“下载Tracing数据文件”按钮进行下载。

图 4-16 Tracing 数据的详细信息

● 单击“Top数据”页签查看Top数据的详细信息。

说明

“Top数据”展示各进程的状态信息,可点击页面右上方的下载按钮导出全景分析数据。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 137

Page 146: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-17 Top 数据的详细信息

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.1.4 微架构分析

4.2.1.4.1 特性描述

微架构分析基于ARM PMU(Performance Monitor Unit)事件,获得指令在CPU流水线上的运行情况,帮助用户快速定位当前应用在CPU上的性能瓶颈。用户可以有针对性地修改自己的程序,以充分利用当前的硬件资源。当前微架构任务只支持物理机场景,创建工程时选择物理机节点。

4.2.1.4.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-18所示,界面参数描述如表4-20所示。

说明

– “总览”页面提供基于Top-Down模型的指标数据,鼠标悬停在指标上方可以看到指标解释、异常描述、可能原因和解决方案等信息。

– 单击右上方的 按钮可以切换视图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 138

Page 147: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-18 总览

表 4-20 总览页签参数说明

参数 说明

时钟周期 显示采集过程的时钟周期数。

指令数 显示采集过程的指令个数。

IPC 显示单时钟周期内执行的指令数,IPC=指令数/时钟周期。

事件名称 显示事件名称。

事件比例 显示当前事件所占的比率。

● 单击“时序信息”查看微架构指标时序图,如图4-19所示。

说明

– “时序信息”页面提供基于时间轴的指标描述,用于用户基于时间关联不同的指标,识别不同时间段的不同特征。主要包括:进程、线程、模块、CPU四个不同维度的微架构指标时序图。

– 鼠标悬停于色块上可看到详细数据,单击色块可查看对应指标的下一级数据。

图 4-19 时序信息

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 139

Page 148: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 单击“详细信息”查看微架构指标详细信息,如图4-20所示,参数描述如表4-21所示。

说明

– 当“采样模式”为“detail”时显示“详细信息”页面。

– “详细信息”页面提供进程/线程/模块/函数对应的微观指标,根据占用CPU的时间排序。

– “unknown”指没有关联到函数名的地址。

– “函数/调用栈”下拉按钮可以选择不同维度的函数描述视图:

“函数/调用栈”:直接显示函数信息。

“模块/函数/调用栈”:以“模块”维度显示函数信息。

“线程/函数/调用栈”:以“线程”维度显示函数信息。

“核/线程/函数/调用栈”:以“核”维度显示函数信息。

“进程/函数/线程/调用栈”:以“进程”维度显示函数信息。

“进程/线程/模块/函数/调用栈”:以“进程”维度显示函数信息。

“进程/模块/线程/函数/调用栈”:以“进程”维度显示函数信息。

“进程/模块/函数/线程/调用栈”:以“进程”维度显示函数信息。

“函数/线程/核/调用栈”:以“函数”维度显示函数信息。点击函数名左边的下拉按钮,鼠标悬停于TID上时会显示详细命令行信息。

图 4-20 详细信息

表 4-21 详细信息页签参数说明

参数 说明

时钟周期 显示采集过程的时钟周期数。

指令数 显示采集过程的指令个数。

IPC 显示单时钟周期内执行的指令数,IPC=指令数/时钟周期。

模块路径 显示模块的绝对路径。

时钟周期百分比 显示当前调用栈占用的时钟周期百分比。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 140

Page 149: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

指令数百分比 显示当前调用栈占用的指令数百分比。

PID 显示进程ID。

TID 显示线程ID。

单击指定函数名称查看函数源代码和汇编代码分析详情,如图4-21所示,界面参数描述如表4-22所示。

说明

函数详情页面展示函数内部的热点指令(热点指令即函数内CPU Cycles事件占比 高的Top指令)、热点指令对应的高级语言文件及行号。

图 4-21 函数源码和汇编指令关联详情

表 4-22 函数详情页签参数说明

参数 说明

硬件事件 显示硬件事件类型(目前只有CPU Cycles)。

总数 显示硬件事件总数。

文件名 显示当前函数所在文件名称。

源代码

源代码行号 显示源代码行号。

源代码 显示源代码。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 141

Page 150: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

数量(占比) 数量:该行源代码对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

汇编代码

汇编指令地址 显示汇编指令地址。

代码行号 显示汇编指令对应的源码的行号。

汇编指令 显示执行的汇编指令。

数量(占比) 数量:该行汇编指令对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务的日志信息。

----结束

4.2.1.5 访存分析

4.2.1.5.1 特性描述

访存统计分析基于CPU访问缓存和内存的PMU事件,分析存储的访问次数、命中率、带宽等情况。

Miss事件分析基于ARM SPE(Statistical Profiling Extension)的能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力可以对业务进行LLC Miss,TLB Miss,Remote Access,Long Latency Load等Miss类事件分析,并精确的关联到造成该事件的代码。用户可以有针对性地修改自己的程序,降低Miss事件发生的几率,提高程序处理性能。

伪共享分析基于ARM SPE(Statistical Profiling Extension)的能力实现。SPE针对指令进行采样,同时记录一些触发事件的信息,包括精确的PC指针信息。利用SPE能力进行伪共享分析,可以得到发生伪共享的次数和比例、指令地址和代码行号、NUMA节点等信息。基于这些信息,用户可以有针对性地修改自己的程序,降低发生伪共享的几率,提高程序处理性能。

说明

访存分析支持openEuler(内核版本为4.19及以上)、CentOS 7.6(内核版本为4.14.0-115.el7a.0.1/4.14.0-115.2.2.el7a/4.14.0-115.5.1.el7a/4.14.0-115.6.1.el7a/4.14.0-115.7.1.el7a/4.14.0-115.8.2.el7a/4.14.0-115.10.1.el7a)操作系统,并且配置SPE(Statistical ProfilingExtension)环境,详细步骤请参考“常用操作”中的“配置SPE环境”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 142

Page 151: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.2.1.5.2 特性操作

访存统计分析

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-22所示,界面参数描述如表4-23所示。

说明

– “总览”页面展示各指标的汇总数据,具体包括:系统信息、Core Cache Miss、iCache Bandwidth、dCache Bandwidth、L3的命中率和带宽、TBL Miss和DDRBandwidth。

– 点击“查看平均值”查看各项指标详细数据,点击 按钮可切换百分比视图和MPKI视图。

– 采集L3C和DDR数据的要求为:操作系统要求openEuler(内核版本要求为4.19及以上)、CentOS 7.6(内核版本要求为4.14.0-115.el7a.0.1/4.15及以上)。基于鲲鹏916的服务器不支持该数据采集。

– 单击右上方的 按钮可以切换时序图和表格视图。

图 4-22 总览

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 143

Page 152: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-23 总览-L3

表 4-23 系统信息区域参数说明

参数 说明

系统信息

Linux内核版本 显示Linux内核版本。

CPU类型 显示CPU类型。

NUMA NODE 显示NUMA节点。

NUMA NODE0 CPUS 显示NUMA节点0包含的CPU。

NUMA NODE1 CPUS 显示NUMA节点1包含的CPU。

NUMA NODE2 CPUS 显示NUMA节点2包含的CPU。

NUMA NODE3 CPUS 显示NUMA节点3包含的CPU。

● 单击“缓存访问”页签查看缓存访问分析结果的折线图,如图4-24所示,界面参

数描述如表4-24所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 144

Page 153: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

– “缓存访问”页签以折线图方式展示L1C、L2C、L3C、TLB的访问带宽和命中率的时序数据。

– 可在“CPU”和“类型”下拉框中选择不同的CPU和类型查看“带宽”、“命中率”或“命中带宽”的折线图。

– 可在“NUMA NODE”和“类型”下拉框中选择不同的NUMA NODE和类型查看“带宽”、“命中率”或“命中带宽”的折线图。

– 单击 按钮,可筛选CPU核数和带宽或命中率进行查看。

– 单击右上方的 按钮可以切换时序图和表格视图。

– 采集L3C和DDR数据的要求为:操作系统要求openEuler(内核版本要求为4.19及以上)、CentOS 7.6(内核版本要求为4.14.0-115.el7a.0.1/4.15及以上)。基于鲲鹏916的服务器不支持该数据采集。

图 4-24 缓存访问

表 4-24 缓存访问区域参数说明

参数 说明

L1C/L2C/TLB访问带宽和命中率

CPU 选择CPU编号。

类型 选择显示数据类型。

带宽(MiB/s) 显示访问带宽。

命中率 显示访问命中率。

L3C访问带宽和命中率

NUMA NODE 选择NUMA NODE编号。

类型 显示访问类型。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 145

Page 154: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

命中带宽(MiB/s)

显示访问命中带宽。

带宽(MiB/s) 显示访问带宽。

命中率 显示访问命中率。

● 单击“DDR访问”页签查看DDR访问分析结果的折线图,如图4-25所示,界面参数描述如表4-25所示。

说明

– “DDR访问”页签以折线图方式展示DDR的访问带宽和次数的时序数据。

– 可在“DDR访问带宽” 区域选择不同的“NUMA NODE”、“DDR通道ID”或“类型”查看对应的折线图。

– 可在“DDR访问次数” 区域选择不同的“NUMA NODE”或“类型”查看对应的折线图。

– 采集L3C和DDR数据的要求为:操作系统要求openEuler(内核版本要求为4.19及以上)、CentOS 7.6(内核版本要求为4.14.0-115.el7a.0.1/4.15及以上)。基于鲲鹏916的服务器不支持该数据采集。

图 4-25 DDR 访问

表 4-25 DDR 访问区域参数说明

参数 说明

DDR访问带宽

NUMA NODE 选择NUMA NODE编号。

DDR通道ID 显示DDR通道编号。

类型 显示DDR访问类型。可选“读DDR”,“写DDR”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 146

Page 155: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

带宽 (MiB/s) 显示DDR访问带宽。

DDR访问次数

NUMA NODE 选择NUMA NODE编号。

类型 显示DDR访问类型。可选“读DDR”,“写DDR”。

DDR访问

访存总次数/s

显示每秒DDR访问总次数。

本地访问DDR次数/s (%)

显示每秒本地访问DDR次数,以及本地访问DDR次数与访存总次数的百分比。

跨DIE访问DDR次数/s (%)

显示每秒跨DIE访问DDR次数,以及跨DIE访问DDR次数与访存总次数的百分比。

跨片访问DDR次数/s (%)

显示每秒跨芯片访问DDR次数,以及跨芯片访问DDR次数与访存总次数的百分比。

访问DDR次数/s(%)

显示每秒本地访问DDR次数、跨DIE访问DDR次数与跨片访问DDR次数的总和,以及访问DDR次数与访问总次数的百分比。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

Miss 事件分析

步骤1 单击节点名称查看分析结果。

默认查看Miss事件的指标时序图,如图4-26所示。

说明

“时序信息”页面提供基于时间轴的指标描述,用于用户基于时间关联不同的指标,识别不同时间段的不同特征。主要包括:进程、线程、模块、CPU四个不同维度的Miss类事件时序图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 147

Page 156: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-26 时序信息

单击右上方的 按钮可以切换视图,查看Miss事件详细信息,如图4-27所示,参数说明如表4-26所示。

说明

● “详细信息”页面提供按进程/线程/模块/函数统计的Miss事件次数,支持根据事件次数排序。

● “unknown”指没有关联到函数名的地址。

● “函数/调用栈”下拉按钮可以选择不同维度的函数描述视图:

“函数/调用栈”:直接显示函数信息。

“模块/函数/调用栈”:以“模块”维度显示函数信息。

“线程/函数/调用栈”:以“线程”维度显示函数信息。

“核/线程/函数/调用栈”:以“核”维度显示函数信息。

“进程/函数/线程/调用栈”:以“进程”维度显示函数信息。

“进程/线程/模块/函数/调用栈”:以“进程”维度显示函数信息。

“进程/模块/线程/函数/调用栈”:以“进程”维度显示函数信息。

“进程/模块/函数/线程/调用栈”:以“进程”维度显示函数信息。

“函数/线程/核/调用栈”:以“函数”维度显示函数信息。点击函数名左边的下拉按钮,鼠标悬停于TID上时会显示详细命令行信息。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 148

Page 157: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-27 详细信息

表 4-26 详细信息页签参数说明

参数 说明

模块路径 显示模块的绝对路径。

Miss次数 显示Miss事件次数。

PID 显示进程ID。

TID 显示线程ID。

单击指定函数名称查看函数源代码和汇编代码分析详情,如图4-28所示,界面参数描述如表4-27所示。

说明

函数详情页面展示函数内部的热点指令(热点指令即函数内硬件事件占比 高的Top指令)、热点指令对应的高级语言文件及行号。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 149

Page 158: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-28 函数详情页

表 4-27 函数详情页签参数说明

参数 说明

硬件事件 显示硬件事件类型(目前只有CPU Cycles)。

总数 显示硬件事件总数。

文件名 显示当前函数所在文件名称。

源代码

源代码行号 显示源代码行号。

源代码 显示源代码。

数量(占比) 数量:该行源代码对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

汇编代码

汇编指令地址 显示汇编指令地址。

代码行号 显示汇编指令对应的源码的行号。

汇编指令 显示执行的汇编指令。

数量(占比) 数量:该行汇编指令对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 150

Page 159: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 单击“任务日志”页签查看任务的日志信息。

----结束

伪共享分析

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-29所示,界面参数描述如表4-28所示。

说明

“总览 ”页签展示优化建议,并以列表的方式展示“共享数据缓存行”数据,展开可查看其对应的“共享缓存行分布”数据。

图 4-29 总览

表 4-28 总览页签参数说明

参数 说明

缓存行地址 显示缓存行地址。

伪共享访问次数 显示出现伪共享访问的次数。

伪共享访问占比 显示出现伪共享访问次数的比率。

缓存行地址偏移量

显示访问的内存在当前缓存行地址中的偏移量。

PID 显示进程ID。

指令地址 显示访问的指令地址。

符号名 显示发生伪共享的函数名。

目标文件名 显示发生伪共享的目标文件名。

源文件:行号 显示发生伪共享的源文件名和代码行数。

NUMA节点 显示访问的NUMA节点。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 151

Page 160: 2.3.T10 鲲鹏开发套件插件工具(VSCode

单击指定函数名称查看函数源代码和汇编代码分析详情,如图4-30所示,界面参数描述如表4-29所示。

说明

– 源代码区域功能说明:展示函数内部的伪共享访问次数和占比、对应的高级语言文件及行号。

– 汇编代码和代码流区域功能说明:支持对汇编代码进行控制流分析,通过划分basicblock并标示出跳转关系及颜色,可以清晰看到各个汇编代码块的“热度”。

– 在“汇编代码”区域单击上下箭头可切换代码块。

– 如果操作系统中缺少graphviz组件,工具将不支持代码流图的功能。

图 4-30 函数源码和汇编指令关联详情

表 4-29 函数详情页签参数说明

参数 说明

伪共享访问次数 显示伪共享访问次数。

文件名 显示当前函数所在文件名称。

源代码

源代码行号 显示源代码行号。

源代码 显示源代码。

数量(占比) 数量:该行源代码对应的伪共享访问次数。

占比:伪共享访问次数占伪共享访问总次数的百分比。

汇编代码

汇编指令地址 显示汇编指令地址。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 152

Page 161: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

代码行号 显示汇编指令对应的源码的行号。

汇编指令 显示执行的汇编指令。

数量(占比) 数量:该行汇编指令对应的伪共享访问次数。

占比:伪共享访问次数占伪共享访问总次数的百分比。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.1.6 I/O 分析

4.2.1.6.1 特性描述

I/O分析以存储块设备为分析对象,分析得出块设备的I/O操作次数、I/O数据大小、I/O队列深度、I/O操作时延等性能数据,并关联到造成这些I/O性能数据的具体I/O操作事件、进程/线程、调用栈、应用层I/O APIs等信息。根据I/O性能数据分析可以给出优化建议。

4.2.1.6.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-31所示,界面参数描述如表4-30所示。

说明

– “总览 ”页签展示在整个采集周期内的Block I/O trace统计、磁盘I/O操作和I/O API调用的详细信息。

– 可单击 按钮筛选磁盘查看对应信息。

– Block I/O trace统计信息区域,单击 可查看数据盘详情信息,在详情右上角可切换显示模式,提供图形和表格两种形式。

– 鼠标悬停在图形上可以显示数据流详情。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 153

Page 162: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-31 总览

表 4-30 总览页签参数说明

参数 说明

Block I/O trace统计信息

DEV 显示块设备名称。

Q请求次数 显示queued的请求次数。

D请求次数 显示issued的请求次数。

X请求次数 显示X的请求次数。

M请求次数 显示merged的请求次数。

merge比例 显示merge合入的比例。

BLKmin 显示存储块的 小数值。

BLKavg 显示存储块的平均数值。

BLKmax 显示存储块的 大数值。

BLKtotal 显示存储块的总数值。

Q2Q寻道次数 显示Q2Q寻道次数。

Q2Q请求平均距离

显示Q2Q请求平均距离。

D2D寻道次数 显示D2D寻道次数

D2D请求平均距离

显示D2D请求平均距离。

活跃时间段计数 显示IO活动活跃的时间段计数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 154

Page 163: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

平均活跃周期 显示IO活动平均活跃周期。

平均不活跃周期 显示平均不活跃周期。

活跃时间占比 显示活跃时间的占比。

时延占比(%) 显示各阶段时延占比。

平均时延(s) 显示各阶段的平均时延。

大时延(s) 显示各阶段 大时延。

小时延(s) 显示各阶段 小时延。

请求次数 显示各阶段的请求次数。

磁盘I/O

DEV 显示块设备名称。

读操作次数 显示磁盘I/O读操作次数。

写操作次数 显示磁盘I/O写操作次数。

读IOPS 显示磁盘I/O每秒读次数。

写IOPS 显示磁盘I/O每秒写次数。

读数据大小(MiB)

显示磁盘I/O读数据大小。

写数据大小(MiB)

显示磁盘I/O写数据大小。

读吞吐率(MiB/s)

显示磁盘I/O读吞吐率。

写吞吐率(MiB/s)

显示磁盘I/O写吞吐率。

I2D读时延(ms)

显示请求从inserted到issued的读时延。

I2D写时延(ms)

显示请求从inserted到issued的写时延。

D2C读时延(ms)

显示请求从issued到complete的读时延。

D2C写时延(ms)

显示请求从issued到complete的写时延。

队列深度 显示磁盘I/O队列深度。

操作 点击“查看详细信息”可以查看磁盘I/O详细信息。

I/O APIs

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 155

Page 164: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

进程ID 显示进程ID。

进程名称 显示进程名称。

函数名 显示函数名。

调用次数 显示I/O API的调用次数。

平均执行时间(ms)

显示I/O API的平均执行时间。

总执行时间(ms)

显示I/O API的总执行时间。

执行时间占比(%)

显示进程中某个API的总执行时间在进程所有API执行时间中所占比例。

操作 点击“查看详细信息”可以查看I/O API调用的详细信息。

● 单击“I/O APIs”查看I/O API的调用统计信息,如图4-32所示,参数说明如表4-31所示。

说明

– 点击拖选任意时间段,可以查看该时间段内详细信息。

– 可单击右侧的 按钮,筛选进程/函数查看对应的折线图。

图 4-32 I/O APIs 信息

表 4-31 I/O APIs 信息参数说明

参数 说明

调用次数 显示I/O API调用次数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 156

Page 165: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

平均执行时间 显示I/O API平均执行时间。

总执行时间 显示I/O API总执行时间。

时间 显示采集时间。

子进程ID/进程ID 显示子进程ID/进程ID。

进程名 显示进程名。

参数列表 显示参数列表。

返回值 显示返回值。

执行时间(ms) 显示I/O API调用执行时间。

● 单击“磁盘I/O”页签查看I/O操作相关的统计信息,如图4-33所示,参数说明如表4-32所示。

说明

– 点击拖选任意时间段,可以查看该时间段内详细信息。

– 可单击右侧的 按钮,筛选分析对象/指标查看对应的折线图。

图 4-33 磁盘 I/O 信息

表 4-32 磁盘 I/O 信息信息参数说明

参数 说明

操作次数 显示磁盘I/O操作次数。

IOPS 显示磁盘I/O每秒读写次数。

数据大小 显示磁盘I/O数据大小。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 157

Page 166: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

吞吐率 显示磁盘I/O吞吐率。

时延 显示磁盘I/O时延。

队列深度 显示磁盘I/O队列深度。

I2D时延 显示inserted到issued的时延。

I2D时延分布 显示inserted到issued的时延分布。

I2D读时延分布 显示inserted到issued的读时延分布。

I2D写时延 显示inserted到issued的写时延分布。

读数据块分布 显示读取操作的数据块分布情况。

写数据块分布 显示写取操作的数据块分布情况。

D2C时延分布 显示issued到complete的时延分布。

D2C读时延分布 显示issued到complete的读时延分布。

D2C写时延分布 显示issued到complete的写时延分布。

I/O操作详情

时间 显示磁盘I/O操作所用时间。

读数据大小 显示磁盘I/O读数据大小。

写数据大小 显示磁盘I/O写数据大小。

读吞吐率 显示磁盘I/O读吞吐率。

写吞吐率 显示磁盘I/O写吞吐率。

起始块编号 显示磁盘I/O操作起始块编号。

结束块编号 显示磁盘I/O操作结束块编号。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.1.7 进程/线程性能分析

4.2.1.7.1 特性描述

进程/线程性能分析借鉴业界的USE方法,采集进程/线程对CPU、内存、存储IO等资源的消耗情况,获得对应的使用率、饱和度、错误次数等指标,以此识别性能瓶颈。针

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 158

Page 167: 2.3.T10 鲲鹏开发套件插件工具(VSCode

对部分指标项,根据当前已有的基准值和优化经验提供优化建议。支持分析单个进程的系统调用情况。

说明

如果环境sysstat版本不高于11.0.0,进程/线程分析任务结果可能出现异常数据。

4.2.1.7.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-34所示,界面参数描述如下列表格所示。

说明

– 检测到可优化的指标项时显示“优化建议”区域,展开可查看详细的优化建议和修改方

法,针对部分配置项给出优化建议,用 标识,鼠标悬停可查看详细信息。

– 新建进程/线程性能分析任务时,分析对象选择“应用”,打开“跟踪系统调用”,查看分析结果时会显示系统调用区域说明,参数说明如表4-33。

图 4-34 总览

表 4-33 CPU 区域参数说明

参数 说明

PID/TID 显示进程ID/线程ID。

%user 任务在用户空间占用CPU的百分比。

%system 任务在内核空间占用CPU的百分比。

%wait 任务在IO等待占用CPU的百分比。

%CPU 任务占用CPU的百分比。

Command 当前任务对应的命令名称。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 159

Page 168: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-34 内存区域参数说明

参数 说明

PID/TID 显示进程ID/线程ID。

minflt/s 每秒次缺页错误次数,即虚拟内存地址映射成物理内存地址产生的缺页次数,不需要从硬盘中加载页。

majflt/s 每秒主缺页错误次数,当虚拟内存地址映射成物理内存地址时,相应的页在交换内存中,这样的缺页为主缺页(MajorPage Faults),一般在内存使用紧张时产生,需要从硬盘中加载页。

VSZ 任务使用的虚拟内存大小(以KB为单位)。

RSS 常驻内存集(Resident Set Size),表示该任务使用的物理内存大小(以KB为单位)。

%MEM 任务占用内存的百分比。

Command 当前任务对应的命令名称。

表 4-35 存储 IO 区域参数说明

参数 说明

PID/TID 显示进程ID/线程ID。

kB_rd/s 任务每秒从硬盘读取的数据量(以KB为单位)。

kB_wr/s 任务每秒向硬盘写入的数据量(以KB为单位)。

iodelay I/O的延迟(单位是时钟周期),包括等待同步块I/O和换入块I/O结束的时间。

Command 当前任务对应的命令名称。

表 4-36 上下文切换区域参数说明

参数 说明

PID/TID 显示进程ID/线程ID。

cswch/s 每秒主动任务上下文切换次数,通常指任务无法获取所需资源,导致的上下文切换。例如I/O、内存等系统资源不足时,就会发生主动任务上下文切换。

nvcswch/s 每秒被动任务上下文切换次数,通常任务由于时间片已到、被高优先级进程抢占等原因,被系统强制调度,进而发生的上下文切换。例如大量进程都在争抢CPU时,就容易发生被动任务上下文切换。

Command 当前进程对应的命令名称。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 160

Page 169: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-37 系统调用区域参数说明

参数 说明

PID/TID 显示进程ID/线程ID。

%time 系统CPU时间花在哪里的百分比。

seconds/s 总的系统CPU时间(以秒为单位)。

usecs/call(s) 每次调用的平均系统CPU时间(以毫秒为单位)。

calls 整个采集过程中的系统调用次数。

errors 整个采集过程中的系统调用失败次数。

syscall 系统调用的名字。

● 单击“CPU”页签查看进程/线程的CPU分析结果折线图,如图4-35所示,界面参

数描述如表4-38所示。

说明

– “CPU”页签以折线图方式展示各个CPU性能指标在整个采集过程中的时序数据。

– 默认显示全部进程/线程的分析结果折线图,鼠标悬停于进程/线程上会显示详细参数信息,可以通过点击对应进程/线程来确定是否显示在当前试图中,进程/线程过多会自动折叠分页。

– 如果线条重合,可单击进程/线程对应的颜色图标进行筛选,鼠标悬停于PID/TID标记上会显示详细参数信息。

– 点击 可进入进程筛选页面。默认按照user属性排序,默认选中前五个进程/线程,筛选框中可以通过点击对应进程查看当前进程下的线程。

图 4-35 CPU 分析结果折线图

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 161

Page 170: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-36 CPU 筛选侧滑框

图 4-37 CPU 筛选框进程/线程详情

表 4-38 CPU 页签参数说明

参数 说明

%user 进程在用户空间占用CPU的百分比。

%system 进程在内核空间占用CPU的百分比。

%wait 进程在IO等待占用CPU的百分比。

%CPU 进程占用CPU的百分比。

CPU ID 处理进程的CPU核编号。

● 单击“内存”页签查看进程/线程的内存分析结果折线图,如图4-38所示,界面参

数描述如表4-34所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 162

Page 171: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

– “内存”页签以折线图方式展示各个内存性能指标在整个采集过程中的时序数据。

– 默认显示全部进程/线程的分析结果折线图,鼠标悬停于进程/线程上会显示详细参数信息,可以通过点击对应进程/线程来确定是否显示在当前试图中,进程/线程过多会自动折叠。

– 可点击 进入筛选侧滑框中选择不同的进程/线程查看对应的分析结果折线图,默认按照minflt/s属性降序排列,默认选中前五个进程/线程,筛选框中可以通过点击对应进程查看当前进程下的线程。

– 如果线条重合,可单击进程/线程对应的颜色图标进行筛选,鼠标悬停于PID/TID标记上会显示详细参数信息。

图 4-38 内存分析结果折线图

● 单击“存储IO”页签查看进程/线程的存储IO分析结果折线图,如图4-39所示,界面参数描述如表4-35所示。

说明

– “存储IO”页签以折线图方式展示各个存储IO性能指标在整个采集过程中的时序数据。

– 默认显示全部进程/线程的分析结果折线图,鼠标悬停于进程/线程上会显示详细参数信息,可以通过点击对应进程/线程来确定是否显示在当前试图中,进程/线程过多会自动折叠。

– 可点击 进入筛选侧滑框中选择不同的进程/线程查看对应的分析结果折线图,默认按照kB_rd/s属性降序排列,默认选中前五个进程/线程,筛选框中可以通过点击对应进程查看当前进程下的线程。

– 如果线条重合,可单击进程/线程对应的颜色图标进行筛选,鼠标悬停于PID/TID标记上会显示详细参数信息。

图 4-39 存储 IO 分析结果折线图

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 163

Page 172: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 单击“上下文切换”页签查看进程/线程的上下文切换分析结果折线图,如图4-40所示,界面参数描述如表4-36所示。

说明

– “上下文切换”页签以折线图方式展示各个上下文切换性能指标在整个采集过程中的时序数据。

– 默认显示全部进程/线程的分析结果折线图,鼠标悬停于进程/线程上会显示详细参数信息,可以通过点击对应进程/线程来确定是否显示在当前试图中,进程/线程过多会自动折叠。

– 可点击 进入筛选侧滑框中选择不同的进程/线程查看对应的分析结果折线图,默认按照cswch/s属性降序排列,默认选中前五个进程/线程,筛选框中可以通过点击对应进程

前的 查看当前进程下的线程。

– 如果线条重合,可单击进程/线程对应的颜色图标进行筛选,鼠标悬停于PID/TID标记上会显示详细参数信息。

图 4-40 上下文切换分析结果折线图

----结束

4.2.1.8 热点函数分析

4.2.1.8.1 特性描述

支持分析C/C++程序代码识别性能瓶颈,给出对应的热点函数以及源码和汇编指令的关联详情。通过冷/热火焰图展示函数的调用关系,发现优化路径。

4.2.1.8.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-41所示,界面参数描述如表4-39所示。

说明

– “总览 ”页签展示优化建议、统计信息、平台信息、Top 10热点函数。

– 检测到可优化的指标项时显示“优化建议”区域,展开可查看详细的优化建议和修改方法。

– “Top 10热点函数”区域的热点函数,如果已存在鲲鹏计算平台的优化版本,将会用

标识,并冒泡提示“优化建议”、下载按钮和复制URL地址按钮。

– “unknown”指没有关联到函数名的地址。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 164

Page 173: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-41 总览

表 4-39 总览页签参数说明

参数 说明

统计

运行时长 (秒) 显示程序运行时间。

说明创建分析任务时,“模式”选择“Launch Application”会显示该参数,该时间为程序运行时间。

数据采样时长(秒)

显示数据采样时长。

说明创建分析任务时,“模式”选择“Attach to Process”或“分析对象”选择“系统”会显示该参数,该时间等于创建分析任务时设置的“采样时长”。

时钟周期 显示采集过程的时钟周期数。

指令数 显示采集过程的指令个数。

IPC 显示单时钟周期内执行的指令数,IPC=指令数/时钟周期。

平台信息

操作系统 显示操作系统版本。

主机名 显示主机名称。

Top 10热点函数

函数 显示函数名称。

模块 显示函数所属模块。

时钟周期 显示函数执行所需的时钟周期数。

时钟周期百分比 显示函数执行的时钟周期百分比。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 165

Page 174: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

执行时间 (秒) 显示函数运行时间。

● 单击“函数”页签查看函数分析结果,如图4-42所示,界面参数描述如表4-40所示。

说明

– “函数”页签采用不同维度展示函数的执行信息和调用栈信息。

– “unknown”指没有关联到函数名的地址。

– “函数/调用栈”下拉按钮可以选择不同维度的函数描述视图:

“函数/调用栈”:直接显示函数信息。

“模块/函数/调用栈”:以“模块”维度显示函数信息。

“线程/函数/调用栈”:以“线程”维度显示函数信息。

“核/函数/调用栈”:以“CPU核”维度显示函数信息(“分析对象”选择“系统”时显示该选项)。

“函数/线程/核/调用栈”:以“函数”维度显示函数信息。点击函数名左边的下拉按钮,鼠标悬停于TID上时会显示详细命令行信息。

图 4-42 函数结果分析

表 4-40 函数页签参数说明

参数 说明

执行时间(秒) 显示函数运行时间。

时钟周期 显示函数执行所需的时钟周期数。

时钟周期百分比 显示函数执行的时钟周期百分比。

指令数 显示函数执行的指令个数。

指令数百分比 显示函数执行的指令数百分比。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 166

Page 175: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

IPC 显示单时钟周期内执行的指令数,IPC=指令数/时钟周期。

模块 函数所属模块。

PID 显示进程ID。

TID 显示线程ID。

单击指定函数名称查看函数源代码和汇编代码分析详情,如图4-43所示,界面参数描述如表4-41所示。

说明

– 源代码区域功能说明:展示热点函数内部的热点指令(热点指令即指函数内CPU Cycles事件占比 高的Top指令)、热点指令对应的高级语言文件及行号。

– 汇编代码和代码流区域功能说明:支持对汇编代码进行控制流分析,通过划分basicblock并标示出跳转关系及颜色,可以清晰看到各个汇编代码块的“热度”。

– 在“汇编代码”区域单击上下箭头可切换代码块。

– 如果操作系统中缺少graphviz组件,工具将不支持代码流图的功能。

图 4-43 函数源码和汇编指令关联详情

表 4-41 函数详情页签参数说明

参数 说明

硬件事件 显示硬件事件类型(目前只有CPU Cycles)。

总数 显示硬件事件总数。

文件名 显示当前函数所在文件名称。

源代码

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 167

Page 176: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

源代码行号 显示源代码行号。

源代码 显示源代码。

数量(占比) 数量:该行源代码对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

汇编代码

汇编指令地址 显示汇编指令地址。

代码行号 显示汇编指令对应的源码的行号。

汇编指令 显示执行的汇编指令。

数量(占比) 数量:该行汇编指令对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

● 单击“热火焰图”页签查看函数热火焰图,如图4-44所示。

说明

– 火焰图的含义:

y轴表示调用栈,每层一个函数。调用栈越深,火焰越高,顶部是正在执行的函数,下方是它的父函数。

x轴表示采样数。函数在x轴占据的宽度越宽,表示它的采样次数越多,即执行的时间越长。注意,x轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

– 火焰图能够直观展示函数调用关系和执行时间情况,帮助发现热点函数及其优化路径。热火焰图表示CPU的繁忙程度,用于定位CPU占用高的情况,一般选择暖色调。

– 鼠标悬停于函数块时,会出现悬浮框,若出现“查看函数详情”可点击查看。

图 4-44 热火焰图

● 单击“冷火焰图”页签查看函数冷火焰图,如图4-45所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 168

Page 177: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

– 火焰图的含义:

y轴表示调用栈,每层一个函数。调用栈越深,火焰越高,顶部是正在执行的函数,下方是它的父函数。

x轴表示采样数。函数在x轴占据的宽度越宽,表示它的采样次数越多,即执行的时间越长。注意,x轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

– 火焰图能够直观展示函数调用关系和执行时间情况,帮助发现热点函数及其优化路径。冷火焰图用于定位CPU不能充分使用的情况,一般选择冷色调。

– 鼠标悬停于函数块时,会出现悬浮框,若出现“查看函数详情”可点击查看。

图 4-45 冷火焰图

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.1.9 资源调度分析

4.2.1.9.1 特性描述

资源调度分析基于CPU调度事件分析系统资源调度情况。

4.2.1.9.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-46所示,界面参数描述如表4-42所示。

说明

– “NUMA节点切换”展示各个进程/线程在不同NUMA节点之间的切换次数。当切换次

数大于基准值时,会用 标识,鼠标悬停会显示详细优化信息。

– 可以点击属性旁的 进行自定义筛选进程/线程信息展示,所有信息默认按照‘切换次数’属性降序排列。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 169

Page 178: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-46 总览

表 4-42 总览参数说明

参数 说明

进程/线程切换

线程名 显示线程名。

TID 显示线程ID。

PID 显示进程ID。

运行时长(ms) 显示运行时长。

切换次数 显示切换次数。

平均调度延迟时间(ms)

显示平均调度延迟时间。

大调度延迟时间(ms)

显示 大调度延迟时间。

大延迟时间点(s)

显示 大延迟时间点。

NUMA节点切换

切换次数 显示NUMA节点切换次数。

操作 显示操作信息。

● 单击“CPU调度”页签查看CPU调度信息,如图4-47所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 170

Page 179: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

– “CPU调度”页签显示CPU核在各个时间点的运行状态,如:Running、Idle。

– “选择CPU核”一栏默认全选所有CPU核,CPU核数过多时默认折叠,鼠标悬停至直方图上会显示对应CPU中任务的详细信息。

– 可点击页面右上方的标识符切换进程/线程的显示方式。

:按线程名显示CPU核状态时序图。

:按百分比显示CPU核状态时长汇总。

:按色块显示进程/线程,点击色块会突出显示同一进程/线程。

图 4-47 CPU 调度

● 单击“进程/线程调度”页签查看进程/线程调度信息,界面参数描述如表4-43所示。

说明

– “进程/线程调度”页签显示进程/线程在各个时间点的运行状态,如:Wait、Schedule和Running;默认展示切换次数Top10的进程,鼠标悬停至对应直方图会显示对应进程/线程运行的详细信息。

– 点击 可进入进程筛选侧滑框,默认按“切换次数”降序排列,点击 可以自定义需要筛选的属性。

– 可点击页面右上方的标识符切换进程/线程的显示方式。

:按线程名显示CPU核状态时序图。

:按百分比显示CPU核状态时长汇总。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 171

Page 180: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-48 进程/线程调度

图 4-49 进程/线程调度-筛选框

表 4-43 进程/线程调度页签参数说明

参数 说明

线程名 显示线程名称。

TID/PID 显示线程ID/进程ID。

等待时长 显示进程/线程线程等待时长。

调度延迟 显示进程/线程调度延迟。

运行时长 显示进程/线程运行时长。

调用栈 显示进程/线程发生时的函数调用栈信息。

说明创建分析任务时,打开“采集调用栈”,分析结果中会显示该参数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 172

Page 181: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.1.10 锁与等待分析

4.2.1.10.1 特性描述

锁与等待分析基于Linux perf工具的采样数据,对glibc和开源软件(如MySQL、OpenMP)的锁与等待函数(包括sleep、usleep、mutex、cond、spinlock、rwlock、semaphore等)进行分析,关联到其归属的进程和调用点,并根据当前已有的优化经验给出优化建议。

4.2.1.10.2 特性操作

步骤1 单击节点名称查看分析结果。

● 单击节点名称默认进入“总览 ”页签,如图4-50所示,界面参数描述如表4-44所示。

说明

– “总览 ”页签展示锁与等待函数的调用次数,支持关联详细的调用信息,支持显示优化建议(可优化的锁与等待函数用红色标识,在鼠标靠近函数名称时,冒泡显示优化建议)。

– “unknown”指没有关联到函数名的地址。

图 4-50 总览

表 4-44 总览页签参数说明

参数 说明

任务名称 显示锁与等待任务的名称。

模块名称 显示锁与等待任务/调用点对应的模块名称。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 173

Page 182: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

函数名称 显示锁与等待任务/调用点对应的函数名称。

操作 单击“查看”查看函数源码、汇编代码和代码流图。

调用次数 显示锁与等待任务对应的调用次数。

时间戳 显示调用栈调用的时间点。

源码文件名称 显示调用点对应的源码文件名称。

行号 显示调用点对应的源码行号。

单击“查看”打开函数源代码和汇编代码分析详情,界面参数描述如表4-45所示。

说明

– 源代码区域功能说明:展示热点函数内部的热点指令(热点指令即指函数内CPU Cycles事件占比 高的Top指令)、热点指令对应的高级语言文件及行号。

– 汇编代码和代码流区域功能说明:支持对汇编代码进行控制流分析,通过划分basicblock并标示出跳转关系及颜色,可以清晰看到各个汇编代码块的“热度”。

– 在“汇编代码”区域单击上下箭头可切换代码块。

– 如果操作系统中缺少graphviz组件,工具将不支持代码流图的功能。

图 4-51 函数源码和汇编指令关联详情

表 4-45 函数详情页签参数说明

参数 说明

硬件事件 显示硬件事件类型(目前只有CPU Cycles)。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 174

Page 183: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

总数 显示硬件事件总数。

文件名 显示当前函数所在文件名称。

源代码

源代码行号 显示源代码行号。

源代码 显示源代码。

数量(占比) 数量:该行源代码对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

汇编代码

汇编指令地址 显示汇编指令地址。

代码行号 显示汇编指令对应的源码的行号。

汇编指令 显示执行的汇编指令。

数量(占比) 数量:该行汇编指令对应的硬件事件计数值。

占比:硬件事件计数值占该事件总数的百分比。

● 单击“详细调用信息”页签查看分析结果,如图4-52所示,参数说明如表4-46所

示。

说明

– “详细调用信息”页签以任务的维度,展示任务调用锁与等待函数的时序数据。

– “unknown”指没有关联到函数名的地址。

– 单击 按钮可选择其他任务。

图 4-52 详细调用信息

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 175

Page 184: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-46 详细调用信息参数说明

参数 说明

任务时间(s) 显示调用点时间。

模块名称 显示锁与等待任务/调用点对应的模块名称。

函数名称 显示锁与等待任务/调用点对应的函数名称。

源码文件名称 显示调用点源码文件名称。

行号 显示调用点行号。

● 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

● 单击“任务日志”页签查看任务“采集过程”和“数据分析”的日志信息。

----结束

4.2.2 Java 性能分析

4.2.2.1 在线分析

4.2.2.1.1 特性描述

在线分析包含对于目标JVM和Java程序的双重分析。包括Java虚拟机的内部状态如Heap,GC活动,线程状态及上层Java程序的性能分析,如调用链分析,热点函数,锁分析,程序线程状态及对象生成分布等。通过Agent的方式在线获取JVM运行数据,进行精确分析。

主要分析结果包含:

1. 概览

– 在线显示Java虚拟机系统状态。

– 在线显示JVM的Heap大小、GC活动、Thread数量、Class加载数量和CPU使用率。

2. 内存信息

– 通过抓取堆快照,分析应用在某时刻堆的直方图分布和支配调用关系,追溯堆内存中各Java存活对象到GC root的引用关系链,帮助定位潜在的内存问题;对比分析不同时刻的堆快照,给出堆使用与分配变化,辅助用户发现堆内存在分配和使用过程中的异常情况。

– 获取Java堆中各个对象创建的数量及大小,显示相关内存使用情况并实时刷新。

– 通过采集GC事件的各项指标,分析GC性能问题。

3. 热点信息

通过经工具分析的热点方法,热点方法以倒火焰图形式呈现,不同层(如Java调用层、JNI层、Native层、内核层等)的热点方法的以不同颜色区分。通过工具展

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 176

Page 185: 2.3.T10 鲲鹏开发套件插件工具(VSCode

开查看Java方法对应的字节码(非必须)、经JVM JIT编译器生成的机器指令,并查看这些指令的热点分布;对于不能查看的字节码的情形需要给出原因。

4. GC信息

通过抓取目标Java应用的内存快照,分析某一时刻目标Java应用中堆的直方图分布、支配调用关系;用户可以追溯堆内存中各Java存活对象到GC root的引用关系链,帮助定位潜在的内存问题。

5. IO信息

在线分析应用中的文件IO、Socket IO时延、消耗带宽等数据,找出热点IO操作。

6. 线程信息

获取当前JVM中实时的活动线程状态和当前线程转储,图形化显示线程锁定状态,分析线程死锁情况。

7. 数据库信息

– 监控和分析数据库连接池。监控数据库连接池连接的情况、帮助用户定位潜在的连接泄露,对不合适的连接池配置给出优化建议。

– 分析JDBC热点SQL操作。记录应用中的SQL调用时间、耗时和堆栈跟踪,帮助用户定位耗时 长的热点SQL操作。

– 分析NoSQL热点操作。记录应用中访问/操作NoSQL数据库调用时间、耗时和堆栈跟踪,帮助用户定位耗时 长的热点NoSQL操作。

8. HTTP信息

记录应用中的HTTP请求时间和耗时,找出热点HTTP请求。

9. SpringBoot信息

经用户授权后,采集第三方框架,如Spring Boot Acutator,提供指标数据与性能数据,更加贴近用户业务。

10. 快照信息

支持在堆、IO、Workload在线分析过程中生成快照,对快照进行比对,辅助用户发现资源、业务相关指标的变化趋势,定位潜在的资源泄露问题或性能指标恶化问题。

4.2.2.1.2 特性操作

概览信息

步骤1 单击首页界面“在线分析记录”列表中指定分析任务的名称。

默认打开“概览”页面,如图4-53和图4-54所示,参数说明如表4-47所示。

说明

● “参数”区域显示该Java进程的系统参数,鼠标悬停于参数上方可看到详细信息。

● 点击 按钮可查看当前任务的优化建议。

● 点击 按钮可导出当前全部页签的分析报告(内存、热点页签和GC日志、线程转储页签除外),如图4-55所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 177

Page 186: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-53 概览

图 4-54 概览(环境信息和参数)

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 178

Page 187: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-55 概览-导出报告

表 4-47 概览参数说明

参数 说明

堆内存/非堆内存

已用堆内存/非堆内存 目标Java应用,已使用的堆内存/非堆内存大小。

提交堆内存/非堆内存 目标JVM已预留的堆内存/非堆内存大小。

物理内存

Java进程使用内存 目标Java应用,已使用的物理内存大小。

系统空闲内存 目标JVM已预留的系统内存大小。

GC活动

暂停时间 GC引起的应用暂停执行时间。

类加载数量 已加载Java类数量。

线程

运行中线程 处于运行态线程数量。

等待中线程 处于等待态线程数量。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 179

Page 188: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

阻塞中线程 处于阻塞态线程数量。

CPU负载

系统CPU使用率 JVM进程占用的CPU使用率。

Java进程CPU使用率 Java进程占用的CPU使用率。

环境信息

PID 显示进程号。

Host 显示主机信息。

Main Class 显示程序的入口的类名称。

Arguments 显示命令行参数。

JVM 显示JVM版本信息。

Java 显示JDK版本信息。

关键字 显示环境变量名称。

值 显示环境变量值。

----结束

线程信息

步骤1 单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“CPU”页签。

默认打开“线程列表”页面,如图4-56所示。

说明

● “线程列表”列出当前分析的Java进程启动的线程名称和线程状态。线程可以是以下状态之一:Runnable、Waiting或Blocked。

● 可通过线程搜索框和“显示用法”快速筛选数据。

● “执行线程转储”按钮可转储当前线程状态,便于后续页签分析展示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 180

Page 189: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-56 线程状态

步骤3 单击“线程转储”页签。

默认进入“锁分析图”,点击指定线程转储查看线程锁分析图,如图 锁分析图所示。

说明

● 在锁分析图中,左侧为线程,其颜色表示线程状态,绿色为RUNNABLE状态,红色为BLOCKED状态,黄色为WAITING状态,橙色为TIMED_WAITING状态;右侧为锁实例。

● 锁分析图通过连线表示线程对锁的占有情况。实线表示线程已占有锁,虚线表示线程阻塞在对应锁实例上,等待其他线程释放锁后占有。

● 观察模式:开启后,点击线程,将会高亮显示线程本身与持有锁。也可切换为以锁为观察视角,点击锁,会高亮显示锁本身和与请求的线程。

● 对比模式:开启后,需要选择要对比的线程转储,对比结果默认以线程为视角显示两个线程与持有的锁。建议对比模式配合观察模式,方便观察两个时间点线程与持有锁的状态变化。也可以切换为以锁为观察视角,观察两个时间点的某个锁和请求线程的状态变化。只有执行两次及以上线程转储之后才可以开启对比模式。

● 如果目标Java应用中存在死锁,会检测出死锁,可以结合线程转储,定位死锁产生原因。

● 右下角可根据图标进行“锁分析图”的缩放和全屏查看。

● 点击 按钮可以保存当前线程转储信息,同一线程转储信息只能保存一次,可在主界面“数据列表”下载。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 181

Page 190: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-57 锁分析图

步骤4 下拉框中选择“原始数据”。

点击不同线程名称可以查看线程的事件信息,如图 原始数据所示。

说明

● Java的线程转储指的是JVM中在某一个给定的时刻运行的所有线程的快照。

● 点击 按钮可以删除不同时间的线程转储事件信息。

● 点击 按钮可以保存当前线程转储信息,同一线程信息只能保存一次,可在主界面“数据列表”下载。

图 4-58 原始数据

----结束

内存信息

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 182

Page 191: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 依次单击“内存 > 执行内存转储”。

生成内存转储直方图,如图4-59所示,参数说明如表4-48所示。

说明

● 可单击页面右上角的 按钮保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

● 一次内存转储仅需保存一份快照,多次内存转储可保存多份快照用于快照对比。

● 在页面右上方的搜索框输入类名可快速筛选数据。

● 可单击页面右上角 按钮保存当前内存分析报告,所保存报告中包含“内存转储”和“报告信息”页签,并可到主页的“数据列表”中下载。

图 4-59 内存转储-直方图

表 4-48 内存转储-直方图参数说明

参数 说明

类名 类名有以下三种类型:

● 类名称(当为类实例时显示)

● 实例ID● gcRoot信息(当实例为gcRoot时显示)

实例数 显示垃圾收集之后实例数量。

浅堆大小 显示垃圾收集之后该类实例的浅堆大小。

保留堆大小 显示垃圾收集之后该类实例的保留堆大小。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 183

Page 192: 2.3.T10 鲲鹏开发套件插件工具(VSCode

点击图4-59中“类名”前的 按钮。

选择“从GC Roots到对象的 短共同路径”,生成 短共同路径如图4-60所示,参数说明如表4-49。

说明

页面右上方可以选择扩展内容:

● soft Ref:软引用,引用路径计算包含软引用对象。

● weak Ref:弱引用,引用路径计算包含弱引用对象。

● phantom Ref:虚引用,引用路径计算包含虚引用对象。

图 4-60 从 GC Roots 到对象的 短共同路径

表 4-49 从 GC Roots 到对象的 短共同路径参数说明

参数 说明

类名 类名有以下三种类型:

● 类名称(当为类实例时显示)

● 实例ID● gcRoot信息(当实例为gcRoot时显示)

引用实例数统计 显示垃圾收集之后的引用实例数量。

当前对象浅堆大小 显示垃圾收集之后当前对象的浅堆大小。

引用实例浅堆大小统计

显示垃圾收集之后引用实例的浅堆大小。

当前对象保留堆大小

显示垃圾收集之后当前对象的保留堆大小。

选择“列出当前类的所有对象”,生成所有对象如图4-61所示,参数说明如表4-50。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 184

Page 193: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-61 列出所有对象

表 4-50 列出所有对象参数说明

参数 说明

类名 类名有以下三种类型:

● 类名称(当为类实例时显示)

● 实例ID● gcRoot信息(当实例为gcRoot时显示)

浅堆大小 显示垃圾收集之后该类实例的浅堆大小。

保留堆大小 显示垃圾收集之后该类实例的保留堆大小。

步骤3 在“显示类型”下拉菜单中选择“支配树”。

以树形结构显示内存转储信息,如图4-62所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 185

Page 194: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-62 内存转储-支配树

点击图4-62中“类名”前的 按钮。

选择“从对象到GC Roots的路径”,生成路径图如图4-63所示。

图 4-63 从对象到 GC Roots 的路径

----结束

热点信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“热点”页签。

打开“热点”页签,点击“新建热点分析”按钮查看热点信息,如图4-65所示,参数如表4-51所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 186

Page 195: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 服务器不支持热点分析时,“新建热点分析”按钮置灰禁用,页面标示无法使用原因和如何使用的方法。

● 可以在启动是设置过滤不需要关注的函数方法;如果设置“需排除分析的方法”,可以点击“查看详情”查看。

● 支持全屏显示,需要查看方法详情可以点击对应图形进行详情查看。

● 可通过点击“重建热点分析”按钮进行重新创建热点分析任务。

图 4-64 启动热点分析

图 4-65 热点信息

表 4-51 新建热点分析参数说明

参数 说明

采样时长(秒) 显示采集数据的时长。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 187

Page 196: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

采样间隔(毫秒) 显示采集数据的间隔时间。

采样事件类型 显示采集数据的类型。

追踪的 大栈深 显示采集数据的 大栈深。

需排除分析的方法 显示用户设置的不需采集的数据。

必须分析的方法 显示必须采集的数据。

触发开始分析的方法 显示触发开始分析的方法。

触发结束分析的方法 显示触发结束分析的方法。

分析内核态调用 显示内核态的调用状态。

时钟周期(占比) 显示时钟周期的占比。

地址 显示进程的内存地址。

汇编 显示汇编指令。

----结束

GC信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“GC”页签。

查看GC事件信息,默认为GC分析界面,如图4-66所示,参数描述如表4-52所示。

说明

● 筛选框内选择“GC原因”或“垃圾回收器”,可快速筛选数据。

● 点击 按钮可查看当前任务的优化建议。

● 点击 按钮可导出当前GC分析报告。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 188

Page 197: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-66 GC 分析

表 4-52 GC 分析页面参数说明

参数 说明

时间戳 显示GC事件发生的时间。

GC原因 显示触发GC的原因。

垃圾回收器 显示执行GC的垃圾收集器名称。

GC已申请内存大小

显示GC已申请内存大小。

GC前内存大小

显示GC前内存大小。

GC后内存大小

显示GC后内存大小。

GC回收内存大小

显示GC回收的内存大小。

GC线程数 显示GC进行过程中使用到的线程数。

暂停时间(ms)

显示GC引起的应用暂停执行的时间。

采集GC事件信息

GC活动 显示GC的暂停时间与单位时间(1秒)的比值的面积图。

内存 显示JVM申请的内存、使用中的内存和空闲的内存大小的堆叠面积图。

GC回收 显示GC回收的内存的面积图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 189

Page 198: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

暂停时间(ms)

显示GC引起的应用暂停执行的时间的面积图。

GC线程数 显示GC进行过程中使用到的线程数的面积图。

步骤3 单击“GC日志”按钮。

点击“执行GC日志采集”,查看GC关键性指标分析,如图 GC关键指标分析所示,参数描述如表 GC关键指标页面参数说明所示。

说明

● GC日志采集过程中显示采集进度和“取消采集”按钮,点击“取消采集”按钮可取消此次采集事件。

● 鼠标悬停至采集图会显示对应时间的的详细信息。

● 如未获取到GC日志数据,需开启对应的日志级别,请参考"常用操作 > 开启对应日志级别获取GC日志数据"章节。

● 点击 按钮可以保存当前GC日志信息,同一GC日志信息只能保存一次,可在主界面“数据列表”下的GC日志下查看下载。

图 4-67 GC 关键指标分析

表 4-53 GC 关键指标页面参数说明

参数 说明

GC吞吐量 显示除GC外的总耗时。

GC开销 显示GC时占用的资源占比。

线性度 体现cpu多核利用率,计算公式为(用户耗时+系统耗时)/实际耗时。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 190

Page 199: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

GC平均暂停时间 显示GC平均暂停时长。

高暂停时间 显示进程在GC是 多暂停时长。

GC暂停统计 显示GC暂停的总体数据。

线性度分类采集 显示采集时间段内线性度的实时变化。

点击“显示类型”切换分析类型,选择“GC成因分析”,查看GC成因分析数据,如图GC成因分析。

图 4-68 GC 成因分析

点击“显示类型”切换分析类型,选择“GC活动细化分析”,查看GC活动分析的详细数据,如图4-69,参数描述如表 GC活动细化分析页面参数说明所示。

图 4-69 GC 活动细化分析

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 191

Page 200: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-54 GC 活动细化分析页面参数说明

参数 说明

G1采集阶段

总GC时间 显示所有GC的总时长。

平均GC时间 显示各分类平均的GC时长。

平均时间标准偏差 显示平均GC时间的标准差。

小/ 大时间 显示GC的 小/ 大时长。

平均间隔时间 显示任两次GC的平均间隔时长。

GC暂停&内存占用变化

GC暂停时长 显示各个标记的GC暂停时长。

堆使用情况 显示GC前后堆内存的使用情况。

Old区使用情况 显示GC前后Old区的使用情况。

Eden区使用情况 显示GC前后Eden区的使用情况。

Survivor区使用情况 显示GC前后Survivor区的使用情况。

元数据区使用情况 显示GC前后元数据区的使用情况。

----结束

IO信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“IO”。

打开“文件IO”页签。

步骤3 单击“启动分析IO”。

获取文件IO统计报告,如图4-70所示,参数描述如表4-55所示。

说明

● 可使用搜索框快速筛选数据。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

● 页面 下方“栈跟踪”区域显示程序调用堆栈信息,栈跟踪中的进程可使用快捷键进行查看:TAB键可以切换焦点至树组件的文本区域;上下键可以在并列的节点移动,左右键可以展开收起节点及跨层级移动焦点;当焦点在节点名称上时,按下ENTER或SPACE键可选中或取消选中该节点。

● 点击页面右上角的 按钮选择“系统设置”,修改“栈深度配置”可改变“栈跟踪”区域的堆栈深度。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 192

Page 201: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-70 文件 IO

表 4-55 文件 IO 参数说明

参数 说明

文件路径/文件描述符 显示文件路径/文件描述符。

I/O总时间 显示文件IO读写的总时间。

计数 显示文件IO读写的总次数。

读取计数 显示文件IO读取的次数。

写入计数 显示文件IO写入的次数。

读取的字节数 显示文件IO读取的字节数。

写入的字节数 显示文件IO写入的字节数。

线程名 显示当前文件IO调用的线程名称。

操作类型 显示文件IO操作的类型。

操作时间 显示文件IO操作的时间。

读写字节数 显示文件IO读取或写入字节数。

速率 显示文件IO读取或写入的速率。

耗时 显示文件IO操作的耗时。

文件 IO 读写速率

读取速率 显示当前文件IO读取速率。

写入速率 显示当前文件IO写入速率。

步骤4 依次单击“IO > Socket IO”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 193

Page 202: 2.3.T10 鲲鹏开发套件插件工具(VSCode

打开“Socket IO”页签。

步骤5 单击“启动分析IO”。

获取Socket IO统计报告,如图4-71所示,参数描述如表4-56所示。

说明

● 可使用搜索框快速筛选数据。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

● 页面 下方“栈跟踪”区域显示程序调用堆栈信息,栈跟踪中的进程可使用快捷键进行查看:TAB键可以切换焦点至树组件的文本区域;上下键可以在并列的节点移动,左右键可以展开收起节点及跨层级移动焦点;当焦点在节点名称上时,按下ENTER或SPACE键可选中或取消选中该节点。

● 点击页面右上角的 按钮选择“系统设置”,修改“栈深度配置”可改变“栈跟踪”区域的堆栈深度。

图 4-71 Socket IO

表 4-56 Socket IO 参数说明

参数 说明

远程地址/端口/文件描述符

显示远程地址/端口/文件描述符。

I/O总时间 显示Socket IO读写的总时间。

计数 显示Socket IO读写的总次数。

读取计数 显示Socket IO读取的次数。

写入计数 显示Socket IO写入的次数。

读取的字节数 显示Socket IO读取的字节数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 194

Page 203: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

写入的字节数 显示Socket IO写入的字节数。

线程名 显示当前Socket IO调用的线程名称。

操作类型 显示Socket IO操作的类型。

操作时间 显示Socket IO操作的时间。

读写字节数 显示Socket IO读取或写入字节数。

速率 显示Socket IO读取或写入的速率。

耗时 显示Socket IO操作的耗时。

Socket IO读写速率

读取速率 显示Socket IO读取速率。

写入速率 显示Socket IO写入速率。

----结束

数据库信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“数据库”页签。

打开授权提示页面,如图4-72所示。

图 4-72 授权提示

步骤3 勾选“显示SQL/NoSQL语句或操作”,单击“确认”。

打开“JDBC”页面。

步骤4 单击“启动分析JDBC”按钮获取热点语句统计报告。

如图4-73所示,参数说明如表4-57所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 195

Page 204: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 阈值默认为50ms,工具抓取耗时超过阈值的操作来分析,阈值范围为0~10000ms。

● 勾选“同时分析数据库连接池”可以获取数据库连接池的信息。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

● 总耗时和平均执行时间支持排序功能。

图 4-73 JDBC

表 4-57 JDBC 页面参数说明

参数 说明

热点语句 显示SQL语句。

总耗时(毫秒)

显示执行热点语句的总耗时。

平均执行时间(毫秒)

显示热点语句的平均执行时间。

执行次数 显示SQL语句执行次数。

实时数据监控

执行语句数 执行的SQL语句数量。

语句平均执行时间

SQL语句平均执行时间。

步骤5 依次单击“数据库 > JDBC数据库连接池”。

打开“JDBC数据库连接池”页面。

步骤6 单击“启动监控连接池”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 196

Page 205: 2.3.T10 鲲鹏开发套件插件工具(VSCode

获取连接统计报告,如图4-74所示,参数说明如表4-58所示。

说明

● 点击“连接ID”后面的 图标可以配置二级显示数量。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

● 点击 按钮可查看当前任务的优化建议。

● 页面右上方的 图标冒泡显示JDBC连接池配置参数,针对可优化的配置选项,用 标识,并冒泡提示“优化建议”。

● 页面下方的“栈跟踪(开始时间)”和“栈跟踪(结束时间)”区域显示连接开始时间和结束时

间的程序调用堆栈信息。点击页面右上角的 按钮选择“系统设置”,修改“栈深度配置”可改变“栈跟踪”区域的堆栈深度。

图 4-74 JDBC 数据库连接池

表 4-58 JDBC 数据库连接池页面参数说明

参数 说明

连接ID 显示连接ID。

连接字符串 显示数据库地址。

开始时间 显示连接开始时间。

结束时间 显示连接结束时间。

事件计数 显示连接期间执行的事件数量。

事件持续时间

显示事件持续时间。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 197

Page 206: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-59 Druid 连接池参数说明

参数 说明

initialSize 应用程序启动时在连接池中初始化的连接数量。

keepAlive 是否执行keepAlive操作。

maxActive 连接池中 大的连接数量。

maxPoolPreparedStatementPerConnectionSize

每个连接 大缓存的SQL语句数量。

maxWait 获取连接的 大等待时间,单位为毫秒。

minEvictableIdleTimeMillis

连接在连接池中的 小空闲时间,单位为毫秒。

minIdle 连接池中 小空闲的连接数量。

poolPreparedStatements

是否缓存SQL语句。

testOnBorrow

连接建立时,是否进行连接有效性检查。

testOnReturn

连接释放时,是否进行连接有效性检查。

testWhileIdle

是否进行现有连接有效性检查。

timeBetweenEvictionRunsMillis

检查连接池中空闲连接的频率,单位为毫秒。

url 连接地址。

validationQuery

用于检查连接是否有效的SQL查询语句。

validationQueryTimeout

连接有效性检查的超时时间,单位为秒。

表 4-60 C3P0 连接池参数说明

参数 说明

acquireIncrement

连接池的连接耗尽时,一次性创建的新连接数。

acquireRetryAttempts

连接池从数据库获取连接失败时重试的次数。小于等于0表示无限重试直到成功获取连接。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 198

Page 207: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

acquireRetryDelay

连接池获取连接的间隔时间,单位为毫秒。

autoCommitOnClose

连接池回收连接时是否自动提交事务。

breakAfterAcquireFailure

获取连接失败时是否自动关闭数据源。

checkoutTimeout

连接池中的连接耗尽时,应用程序获取连接的等待时间,单位为毫秒。0表示无限等待。

forceIgnoreUnresolvedTransactions

连接池回收连接时是否提交事务。

idleConnectionTestPeriod

检查连接池中空闲连接的频率,单位为毫秒。

initialPoolSize

连接池初始化时创建的连接数。

jdbcUrl 连接地址。

maxConnectionAge

连接 大生存时间,单位为秒。0表示无限制。

maxIdleTime

连接的 大空闲时间,单位为秒。0表示无限制。

maxIdleTimeExcessConnections

超过 小连接数(minPoolSize)的连接的 大空闲时间。0表示无限制。

maxPoolSize 连接池中 大的连接数量。

maxStatements

所有连接缓存的 大语句总数。

maxStatementsPerConnection

单个连接缓存的 大语句数。

minPoolSize 连接池保持的 小连接数。

preferredTestQuery

用于检查连接是否有效的SQL查询语句。

testConnectionOnCheckin

连接建立时,是否进行连接有效性检查。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 199

Page 208: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

testConnectionOnCheckout

连接释放时,是否进行连接有效性检查。

表 4-61 Dbcp 连接池参数说明

参数 说明

defaultAutoCommit

新建连接是否采用自动提交机制。

defaultQueryTimeout

默认查询超时时间。

defaultReadOnly

数据源是否只能执行只读操作。

defaultTransactionIsolation

新建连接默认的事务隔离状态。

initialSize 程序启动时在连接池中初始化的连接数量。

logAbandoned

连接被泄露时是否打印。

maxConnLifetimeMillis

连接 大生存时间,单位为毫秒。小于等于0表示无限制。

maxIdle 连接池中 大空闲连接数。小于0表示无限制。

maxOpenPreparedStatements

所有连接缓存的 大语句总数。小于0表示无限制。

maxTotal 应用程序从数据库连接池中申请到的 大连接数。小于0表示无限制。

maxWaitMills

获取连接的 大等待时间,单位为毫秒。小于0表示无限制。

minEvictableIdleTimeMillis

连接的 大空闲时间,单位为毫秒。0表示无限制。

minIdle 连接池中 小空闲的连接数量。

numTestsPerEvictionRun

空闲连接回收器线程(如果有)每次运行时检查的连接数量。

poolPreparedStatements

连接是否可以缓存SQL语句。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 200

Page 209: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

removeAbandonedTimeout

已废弃的连接删除之前的超时时间,单位为秒。

rollbackOnReturn

连接返回时是否终止事务。

softMinEvictableIdleTimeMillis

超过 小空闲连接数(minIdle)的连接的 小空闲时间。0表示无限制。

timeBetweenEvictionRunsMillis

空闲连接回收器线程运行的频率。

表 4-62 Hikari 连接池参数说明

参数 说明

autoCommit 新建连接是否采用自动提交机制。

connectionTestQuery

用于检查连接是否有效的SQL查询语句。

connectionTimeout

获取连接的 大等待时间,单位为毫秒。

driverClassName

驱动类名称。

idleTimeout 连接的 大空闲时间,单位为毫秒。

initializationFailTimeout

连接池尝试获取初始连接的时间,单位为毫秒。0表示连接池尝试获取并验证连接。小于零表示不进行初始连接尝试。

leakDetectionThreshold

连接可以离开连接池而不被记录为连接泄露的时间。0表示不启用连接泄漏检测。

maximumPoolSize

连接池中 大的连接数量。

maxLifetime 连接 大生存时间,单位为毫秒。

minimumIdle

连接池中 小空闲的连接数量。

poolName 自定义的连接池名称。

readOnly 从连接池中获取的连接是否默认处于只读模式。

threadFactory

设置用于创建连接池使用的所有线程的java.util.concurrent.ThreadFactory实例。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 201

Page 210: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

transactionIsolation

连接池返回的连接的默认事务隔离级别。

validationTimeout

测试连接是否存活的 大时间,单位为毫秒。

步骤7 在“显示类型”下拉菜单中选择“实时监控视图”。

查看数据库连接池实时监控视图,如图4-75所示。

说明

可在“报警阈值”文本框中输入报警阈值,持续时间超过报警阈值的数据用红色显示。

图 4-75 实时监控视图

步骤8 依次单击“数据库 > MongoDB”。

打开“MongoDB”页面。

步骤9 单击“启动分析MongoDB”。

获取热点操作统计报告,如图4-76所示,参数说明如表4-63所示。

说明

● 阈值默认为50ms,工具抓取耗时超过阈值的操作来分析,阈值范围为0~10000ms。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 202

Page 211: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-76 MongoDB

表 4-63 MongoDB 页面参数说明

参数 说明

热点操作 显示对MongoDB的访问操作。

总耗时(毫秒)

显示执行当前访问操作的总耗时。

平均执行时间(毫秒)

显示当前访问操作的平均执行时间。

执行次数 显示当前访问操作的执行次数。

实时数据监控

执行语句数 执行访问操作的数量。

语句平均执行时间

访问操作的平均执行时间。

步骤10 依次单击“数据库 > Cassandra”。

打开“Cassandra”页面。

步骤11 单击“启动分析Cassandra”。

获取热点语句统计报告,如图4-77所示,参数说明如表4-64所示。

说明

● 阈值默认为50ms,工具抓取耗时超过阈值的操作来分析,阈值范围为0~10000ms。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 203

Page 212: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-77 Cassandra

表 4-64 Cassandra 页面参数说明

参数 说明

热点语句 显示对Cassandra的访问操作。

总耗时(毫秒)

显示执行当前访问操作的总耗时。

平均执行时间(毫秒)

显示当前访问操作的平均执行时间。

执行次数 显示当前访问操作的执行次数。

实时数据监控

执行语句数 执行访问操作的数量。

语句平均执行时间

访问操作的平均执行时间。

步骤12 依次单击“数据库 > HBase”。

打开“HBase”页面。

步骤13 单击“启动分析HBase”。

获取热点操作统计报告,如图4-78所示,参数说明如表4-65所示。

说明

● 阈值默认为50ms,工具抓取耗时超过阈值的操作来分析,阈值范围为0~10000ms。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 204

Page 213: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-78 HBase

表 4-65 HBase 页面参数说明

参数 说明

热点操作 显示对Hbase的访问操作。

总耗时(毫秒)

显示执行当前访问操作的总耗时。

平均执行时间(毫秒)

显示当前访问操作的平均执行时间。

执行次数 显示当前访问操作的执行次数。

实时数据监控

执行语句数 执行访问操作的数量。

语句平均执行时间

访问操作的平均执行时间。

----结束

Web信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 单击“Web”,选择“HTTP请求”。

步骤3 单击“启动分析HTTP请求”。

获取HTTP请求统计报告,如图4-79所示,参数说明如表4-66所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 205

Page 214: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 阈值默认为50ms,工具抓取耗时超过阈值的操作来分析,阈值范围为0~10000ms。

● 点击页面右上角的 按钮可以保存当前页面的快照,已保存的快照可以在“快照”页签中查看。

图 4-79 HTTP 请求统计

表 4-66 HTTP 请求统计参数说明

参数 说明

热点

Hot URL 热点HTTP请求(URI + HTTP请求方法)。

Count 该类HTTP请求访问执行次数。

Average 执行该类HTTP请求所用平均毫秒时间。

实时监控

执行请求数 请求执行次数。

请求平均执行时间

请求平均执行时间。

步骤4 单击“Web”,选择“Spring Boot”。

如果设置了登录用户,请先输入登录Spring Boot的用户名和密码,单击“登录”。

步骤5 单击“启动分析Spring Boot”。

默认显示“应用健康状态”,如图4-80所示,参数描述如表4-67所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 206

Page 215: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● “实例”区域根据实际情况显示数据库名称及版本。

● UP:表示当前进程实例运行正常。

● DOWN:表示当前进程实例运行异常。

图 4-80 应用健康状态

表 4-67 应用健康状态参数说明

参数 说明

磁盘空间

总容量 显示服务器的磁盘总空间大小。

可用容量 显示服务器的磁盘可用空间大小。

阈值容量 显示磁盘空间阈值大小。

版本 显示数据库的版本号。

步骤6 单击“Beans组件信息”。

查看Beans组件信息,如图 Beans组件信息所示,参数描述如表 Beans组件信息参数说明所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 207

Page 216: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-81 Beans 组件信息

表 4-68 Beans 组件信息参数说明

参数 说明

来源 显示组件的来源。

依存关系 显示组件的依存关系。

步骤7 单击“Metrics变化图”。

查看Metrics计数时序图,如图 Metrics变化图所示,参数描述如表 Metrics变化图参数说明所示。

说明

适用于Spring Boot 2.x版本。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 208

Page 217: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-82 Metrics 变化图

表 4-69 Metrics 变化图参数说明

参数 说明

tomcat.sessions(会话计数)

created Tomcat容器中创建的会话数量。

expired Tomcat容器中过期的会话数量。

rejected Tomcat容器中拒绝的会话数量。

tomcat.sessions(会话当前值)

active.current

Tomcat容器中当前活跃的会话数量。

active.max Tomcat容器中 大活跃的会话数量。

jvm.buffer(缓冲区计数)

count JVM中缓冲区计数。

jvm.buffer(MiB)

total.capacity

JVM中缓冲区总容量。

memory.used

JVM中缓冲区已使用的内存容量。

logback.events.level(事件计数)

info 记录到日志中的info级别的事件数量。

warn 记录到日志中的warn级别的事件数量。

trace 记录到日志中的trace级别的事件数量。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 209

Page 218: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

debug 记录到日志中的debug级别的事件数量。

说明debug级别事件数较大,默认不在图中显示,请单击对应的颜色图标在图中显示该数值的折线。

error 记录到日志中的error级别事件数。

步骤8 单击“热点HTTP Traces”。

查看HTTP Traces统计报告,如图 热点HTTP Traces所示,参数描述如表 热点HTTPTraces参数说明所示。

说明

● 阈值默认为10毫秒。设置阈值后,系统只会抓取耗时超过阈值的热点HTTP Traces来分析,阈值范围为0~10000毫秒。重设阈值后需要重新启动HTTP Traces分析。

● 可以在搜索框中输入路径过滤地址过滤路径。

图 4-83 热点 HTTP Traces

表 4-70 热点 HTTP Traces 参数说明

参数 说明

过滤路径 显示当前时间点HTTP Traces过滤路径。

请求总数 显示当前时间点HTTP Traces请求总数。

成功的 显示当前时间点HTTP Traces成功的数量。

状态 4XX 显示当前时间点HTTP Traces状态为4XX的数量。

状态 5XX 显示当前时间点HTTP Traces状态为5XX的数量。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 210

Page 219: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

大持续时间

显示HTTP Traces 大持续时间,单位为毫秒。

时间 显示当前会话发生的时间。

会话ID 显示会话ID。

方法 显示HPPT Traces请求方法。

路径 显示HTTP Traces访问路径。

状态 显示HTTP Traces的状态。

内容-类型 显示HTTP Traces的内容和类型。

耗时(毫秒)

显示当前HTTP Traces持续时间。

----结束

快照信息

步骤1 登录Java性能分析Web界面,单击首页界面“在线分析记录”列表中指定分析任务的名称。

打开“概览”页面。

步骤2 在支持快照功能的页面,单击右侧的 按钮保存当前页面的快照,快照的名称为保存快照的时间。

说明

如下页面支持保存快照,每个页面 多支持保存5份快照。

● 内存转储

● IO下的文件IO和Socket IO

● 数据库下的JDBC、JDBC数据库连接池、MongoDB、Cassandra和HBase

● HTTP请求

步骤3 单击“快照”页签。

查看保存的快照信息,如图4-84所示,参数描述请参见各页面对应的章节。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 211

Page 220: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-84 快照信息

选中快照,单击图4-84左边区域的 按钮可以删除快照。

单击图4-84左边区域的 按钮,选择快照类型和快照名称可以进行快照比对。

----结束

4.2.2.2 采样分析

4.2.2.2.1 特性描述

通过采样的方式,收集JVM的内部活动/性能事件,通过录制及回放的方式来进行离线分析。这种方式对系统的额外开销很小,对业务影响不大,适用于大型的Java程序。

主要分析结果包括:

1. 概览

– 显示Java虚拟机系统状态。

– 通过采样及回放的方式显示JVM的Heap使用情况、GC活动、IO消耗和CPU使用率。

2. 线程转储及锁分析结果

– 分析程序线程状态及锁。获取采样时间内的线程的状态变化和当前线程转储,根据线程转储图形化地显示线程锁定状态,分析线程死锁情况。

– 分析程序所用堆积对象。获取采样时间内Java堆中各个对象的数量、大小与堆栈跟踪。

– 分析估计线程阻塞对象和阻塞时间。

3. 方法采样分析结果

– 分析Java及native代码中热点函数CPU Cycles的占比及定位。

– 支持通过火焰图查看热点函数及其调用栈。

4. 内存分析结果

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 212

Page 221: 2.3.T10 鲲鹏开发套件插件工具(VSCode

– 通过对存留周期长的对象进行采样,分析Java应用中潜在的堆内存泄漏,并辅助用户定位潜在原因。

– 根据采样分析记录出具关于启动参数、GC方面的报告和优化建议。

5. IO分析结果

分析应用中文件IO、Socket IO时延、消耗带宽,找出热点IO操作。

4.2.2.2.2 特性操作

概览信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

打开“概览”页签,如图4-85和图4-86所示,参数说明如表4-71所示。

说明

● “CPU利用率”区域显示了当前进程的CPU利用率折线图。

● 点击 按钮可查看当前任务的优化建议。

图 4-85 概览

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 213

Page 222: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-86 概览(系统环境信息和环境变量)

表 4-71 概览参数说明

参数 说明

CPU利用率

JVM用户态 显示JVM用户态CPU利用率。

JVM内核态 显示JVM内核态CPU利用率。

系统总使用率 显示计算机总的CPU利用率。

Java系统属性

键 显示Java系统属性键。

值 显示Java系统属性值。

系统环境信息

CPU 显示CPU类型。

核数 显示CPU核数。

内存 显示内存大小。

操作系统 显示操作系统版本。

环境变量

变量 显示环境变量名。

值 显示环境变量值。

----结束

线程转储信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

打开“CPU”页签。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 214

Page 223: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 单击“线程转储”页签。

默认在“锁分析图”界面,单击指定线程转储查看线程锁分析图,如图 锁分析图所示。

说明

● 在锁分析图中,左侧为线程,其颜色表示线程状态,绿色为RUNNABLE状态,红色为BLOCKED状态,黄色为WAITING状态,橙色为TIMED_WAITING状态;右侧为锁实例。

● 锁分析图通过连线表示线程对锁的占有情况。实线表示线程已占有锁,虚线表示线程阻塞在对应锁实例上,等待其他线程释放锁后占有。

● 观察模式:开启后,点击线程,将会高亮显示线程本身与持有锁。也可切换为以锁为观察视角,点击锁,会高亮显示锁本身和与请求的线程。

● 对比模式:开启后,需要选择要对比的线程转储,对比结果默认以线程为视角显示两个线程与持有的锁。建议对比模式配合观察模式,方便观察两个时间点线程与持有锁的状态变化。也可以切换为以锁为观察视角,观察两个时间点的某个锁和请求线程的状态变化。只有执行两次及以上线程转储之后才可以开启对比模式。

● 如果目标Java应用中存在死锁,会检测出死锁,可以结合线程转储,定位死锁产生原因。

● 右下角可根据图标进行“锁分析图”的缩放和全屏查看。

图 4-87 锁分析图

步骤3 单击“锁分析图”下拉框,选择原始数据。

打开线程转储列表界面,展开指定线程转储,单击线程的名称查看线程的调用栈信息,如图 原始数据所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 215

Page 224: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-88 原始数据

----结束

方法采样信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

打开“CPU”页签。

步骤2 单击“方法采样”页签。

查看方法火焰图和调用树,以“Java方法采样”为例,如图4-89和图4-90所示。

说明

● “图类型”下拉框可以选择:

– 火焰图:查看对应的火焰图,鼠标悬停在函数块上会显示函数详细信息。

y轴表示调用栈。每一层一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。x轴表示抽样数。如果一个函数在x轴占据的宽度越宽,就表示它被抽到的次数越多,即执行的时间越长。注意,x轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

– 调用树:以树形结构显示调用栈的逻辑过程,分析程序中函数的调用关系和比例。

● “采样数据”下拉框可以选择“Java方法采样”或“Native方法采样”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 216

Page 225: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-89 火焰图

图 4-90 调用树

----结束

锁与等待信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

步骤2 单击“CPU”页签,再单击“锁与等待”页签。

查看锁分析结果,如图4-91所示,参数说明如表4-72所示。

说明

● “栈跟踪”区域为线程阻塞发生的位置。通过跟踪阻塞时间比较长的线程,找到可能导致线程运行缓慢的代码位置。

● 可输入类名称/线程名称快速筛选数据。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 217

Page 226: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-91 锁与等待图分析结果

表 4-72 锁参数说明

参数 说明

监视器

类名称 显示监视器对应的类名称。

总阻塞时间 (ms) 显示线程在监视器上阻塞的时间。

阻塞线程数 显示阻塞在监视器上的线程数。

采样次数 显示对应的采样次数。

线程

线程名称 显示线程名称。

总阻塞时间(ms) 显示线程在监视器上阻塞的时间。

采样次数 显示对应的采样次数。

----结束

内存信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

步骤2 单击“内存”页签。

打开“所有对象”页面,查看Java对象在Heap中的分配情况,如图4-92所示,参数说明如表4-73所示。

说明

在“类”区域单击指定类名称可查看当前类的内存分配柱状图和调用栈,点击 可查看所有调用栈。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 218

Page 227: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-92 内存分析(所有对象)

表 4-73 所有对象参数说明

参数 说明

类名称 显示类名称。

大实时计数

显示类实例的 大实时计数。

大实时大小

显示类实例占用内存的 大实时大小。

总内存分配(MiB)

显示总内存分配大小。

步骤3 单击“老年代对象”。

查看老年代对象在Heap中的分配情况,如图 内存分析(老年代对象)所示,参数说明如表 老年代对象参数说明所示。

说明

● 页面右边的“堆栈跟踪”下拉框可选择显示堆栈跟踪或引用链。

● 可以在搜索框内输入对象名称快速筛选数据。

● 点击 按钮可查看当前任务的优化建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 219

Page 228: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-93 内存分析(老年代对象)

表 4-74 老年代对象参数说明

参数 说明

分配时间 显示分配老年代对象的时间。

对象 显示类名称。

线程 显示线程名称。

堆使用大小 显示堆使用大小。

堆栈跟踪 显示堆栈跟踪。

引用链 显示引用链。

----结束

GC信息

步骤1 单击首页界面“采样分析记录”列表中指定分析任务的名称。

打开“概览”页签。

步骤2 单击“GC”页签。

查看GC分析结果,如图4-94、图4-95所示,参数说明如表4-75所示。

说明

点击 按钮可查看当前任务的优化建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 220

Page 229: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-94 GC

图 4-95 GC(采集 GC 事件信息)

表 4-75 GC 配置参数说明

参数 说明

GC配置

YoungCollector 显示年轻代垃圾收集器名称。

OldCollector 显示年老代垃圾收集器名称。

ConcGCThreads 显示并发GC线程数。

ParallelGCThreads 显示并行GC线程数。

ExplicitGCInvokesConcurrent

显示GC是否为并发执行。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 221

Page 230: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

DisableExplicitGC 显示是否禁用触发GC。

UseDynamicNumberOfGCThreads

显示是否动态调节GC线程数。

GCTimeRatio 显示垃圾收集时间占总时间的比率。

堆配置

InitialHeapSize 显示初始堆大小。

MinHeapSize 显示 小堆大小。

MaxHeapSize 显示 大堆大小。

UseCompressedOops 显示是否启用压缩指针。

PrintCompressedOopsMode

显示使用的压缩指针模式。

heapAddressBits 显示堆地址大小。

ObjectAlignmentInBytes 显示Java对象的内存对齐方式(字节)。

年轻代配置

NewSize 显示 小年轻代大小。

MaxNewSize 显示 大年轻代大小。

NewRatio 显示年轻代和年老代大小的比率。

InitialTenuringThreshold 显示对象被提升到老年代在年轻代存活的初始次数。

MaxTenuringThreshold 显示对象被提升到老年代在年轻代存活的 大次数。

UseTLAB 是否使用线程本地分配缓存。

MinTLABSize 显示线程本地分配缓存大小。

TLABRefillWasteFraction 显示允许TLAB浪费内存空间的大小。

GC活动

GC活动 显示GC活动编号。

原因 显示触发GC的原因。

收集器名称 显示垃圾收集器名称。

GC前内存大小 显示GC前内存大小。

GC后内存大小 显示GC后内存大小。

长暂停时间 显示此次GC的 长暂停时间。

暂停阶段

事件类型 显示暂停阶段的事件类型。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 222

Page 231: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

名称 显示阶段名称。

暂停时间 (µs) 显示暂停时间。

开始时间 显示暂停阶段开始时间。

采集GC事件信息

暂停时间 (ms) 显示暂停时间。

堆内存 (MiB) 显示堆内存。

元空间 (MiB) 显示元空间。

----结束

IO信息

步骤1 单击“IO”页签。

打开“文件IO”页面,如图4-96所示,参数说明如表4-76所示。

说明

页面下方“栈跟踪”区域显示程序调用堆栈信息。

图 4-96 文件 IO

表 4-76 文件 IO 参数说明

参数 说明

文件路径/调用线程

显示文件路径/调用线程。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 223

Page 232: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

I/O总时间 显示文件IO读写的总时间。

计数 显示文件IO读写的总次数。

读取计数 显示文件IO读取的次数。

写入计数 显示文件IO写入的次数。

读取的字节数

显示文件IO读取的字节数。

写入的字节数

显示文件IO写入的字节数。

文件IO读写速率

读取速率 显示文件IO读取速率。

写入速率 显示文件IO写入速率。

步骤2 单击“Socket IO”。

打开“Socket IO”分析页面,如图4-97所示,参数描述如表4-77所示。

说明

“栈跟踪”区域显示程序调用堆栈信息。

图 4-97 Socket IO

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 224

Page 233: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-77 Socket IO 参数说明

参数 说明

远程地址/端口/调用线程

显示远程地址/端口/调用线程。

I/O总时间 显示Socket IO读写的总时间。

计数 显示Socket IO读写的总次数。

读取计数 显示Socket IO读取的次数。

写入计数 显示Socket IO写入的次数。

读取的字节数

显示Socket IO读取的字节数。

写入的字节数

显示Socket IO写入的字节数。

Socket IO读写速率

读取速率 显示Socket IO读取速率。

写入速率 显示Socket IO写入速率。

----结束

4.2.3 系统诊断

4.2.3.1 内存泄漏诊断

系统诊断是针对基于鲲鹏的服务器的性能分析工具,提供内存泄漏诊断(包括内存未释放和异常释放)、内存越界访问、内存消耗信息分析展示、OOM诊断能力,帮助用户识别出源代码中内存使用的问题点,提升程序的可靠性。包含内存分析和网络IO分析。

4.2.3.1.1 特性描述

内存泄漏诊断主要分析应用程序存在的内存泄漏点(包括内存未释放和异常释放),得出具体的泄漏信息,并支持关联出调用栈信息和源码;分析后得出结果信息主要为CallTree信息、源码信息、内存消耗信息、OOM信息。

4.2.3.1.2 特性操作

Call Tree

步骤1 单击节点名称查看分析结果。

单击节点名称默认打开“Call Tree ”页签,如图4-98所示,界面参数描述如表4-78所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 225

Page 234: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-98 Call Tree

表 4-78 Call Tree 参数说明

参数 说明

进程名 显示进程名。

可通过下拉菜单切换进程。

内存泄漏次数 选择内存泄漏次数。

说明可通过下拉菜单切换成内存泄漏大小或内存异常释放次数。

调用深度 显示往下延伸的深度。

被调用深度 显示往上延伸的深度。

自身内存泄漏 显示自身泄漏的信息。

说明

可通过 筛选自身内存泄漏信息或者子程序内存泄漏信息。

函数名 显示存在内存泄漏的函数。

泄漏次数 显示泄漏次数。

可单击 按照泄漏次数进行排序。

泄漏大小(Byte) 显示泄漏大小。

可单击 按照泄漏大小进行排序。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 226

Page 235: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 单击 可查看自身发生泄漏的函数,单击 可查看整个调用栈的内存泄漏函数,单击

对函数按照次数或大小进行排序。

● 单击 可对调用栈图进行缩放,单击 可保存svg图。

● 节点框中,左侧显示函数名,右侧显示泄露次数或泄露大小,红点表示函数本身发生泄露。

● 当鼠标置于图中的节点时,会显示对应的信息。单击“查看源码”,右侧会显示源码弹窗,可查看具体泄漏的函数代码。

步骤2 单击 将“内存泄漏次数”切换成“内存泄漏大小”,如图4-99所示。

图 4-99 内存泄漏大小

步骤3 单击 将“内存泄漏大小”切换成“内存异常释放次数”,如图4-99所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 227

Page 236: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-100 内存异常释放次数

说明

可单击 展开表头勾选需要显示的列。

可单击操作栏下的“查看源码”查看具体异常释放的函数代码。

步骤4 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

步骤5 单击“任务日志”页签查看详细的日志信息。

----结束

源码

步骤1 单击节点名称查看分析结果。

单击节点名称后再选择“源码”页签,如图4-101所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 228

Page 237: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-101 源码

说明

● 单击 可查看自身发生泄漏的函数,单击 可查看整个调用栈的内存泄漏函数,单击

对函数按照次数或大小进行排序。

● 源码框中,存在泄漏的代码所在行数前会显示内存泄漏次数,其中红色表示自身内存泄漏次数,橙色表示子程序内存泄漏次数。

● 可通过 切换存在泄漏的代码行。

步骤2 单击 将“内存泄漏次数”切换成“内存泄漏大小”,如图4-102所示。

图 4-102 内存泄漏大小

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 229

Page 238: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 单击 将“内存泄漏大小”切换成“内存异常释放次数”,如图4-103所示。

图 4-103 内存异常释放次数

说明

可单击操作栏下的“查看源码”查看具体异常释放的函数代码。

步骤4 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

步骤5 单击“任务日志”页签查看详细的日志信息。

----结束

内存消耗

步骤1 单击节点名称查看分析结果。

单击节点名称后再选择“内存消耗”页签,如图4-104所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 230

Page 239: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-104 内存消耗

表 4-79 内存消耗参数说明

参数 说明

进程 显示进程名。

可通过下拉菜单切换进程,也可以同搜索框按进程名进行搜索。

系统 显示物理内存和虚拟内存大小。

应用 显示申请内存大小、申请次数、申请字节数、释放次数、释放字节数、泄漏次数以及泄漏字节数。

分配器 显示分配器的分配内存、空闲内存、使用内存、Arena数、mmap区域数量以及mmap区域大小。

进程内存MAP信息

显示各个模块的物理内存和虚拟内存大小。

步骤2 单击 按钮可进行列表切换,如图4-105所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 231

Page 240: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-105 列表视图

步骤3 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

步骤4 单击“任务日志”页签查看详细的日志信息。

----结束

OOM

步骤1 单击节点名称查看分析结果。

单击节点名称后再选择“OOM”页签,如图4-106所示。

图 4-106 OOM

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 232

Page 241: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-80 OOM 参数说明

参数 说明

基本信息 显示时间点、触发者以及被杀者。

调用栈信息 显示调用栈信息。

系统内存信息 显示系统内存信息。

进程内存信息 显示进程内存信息。

步骤2 单击“查看详细信息”可查看OOM的具体信息,如图4-107所示。

图 4-107 OOM 详细信息

步骤3 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 233

Page 242: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤4 单击“任务日志”页签查看详细的日志信息。

----结束

4.2.3.2 内存越界诊断

4.2.3.2.1 特性描述

内存越界诊断主要分析应用程序的内存异常访问点,给出异常访问类型和内存访问信息,并支持关联出调用栈和源码。

4.2.3.2.2 特性操作

步骤1 单击节点名称查看分析结果。

单击节点名称默认打开“内存越界诊断”页签,如图4-108所示。

图 4-108 内存越界诊断

说明

● 源码框中,会标记存在内存异常访问的代码所在行数。

● 可通过 切换存在内存异常访问的代码行。

步骤2 单击 按钮可进行视图切换,如图4-109所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 234

Page 243: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-109 列表视图

以异常类型为模块分成heap buffer overflow、global buffer overflow等,每个模块下分别显示访问类型、异常访问点、辅助信息。

步骤3 单击“查看更多信息”可查看异常的具体信息。

步骤4 单击“任务信息”页签查看当前节点任务的详细配置信息和采集信息。

说明

如果任务执行失败,“任务信息”界面上会显示任务失败的原因。

步骤5 单击“任务日志”页签查看详细的日志信息。

----结束

4.2.3.3 网络 IO 诊断

4.2.3.3.1 特性描述

压测网络,获得网络 大能力,为网络IO性能优化提供基础参考数据;诊断网络,定位网络疑难问题,解决因网络配置和异常而导致的网络IO性能问题。

4.2.3.3.2 特性操作

步骤1 单击节点名称查看分析结果。

单击节点名称默认打开“连通性拨测”页签,如图4-110所示,参数说明如表4-81所示。

说明

● 若分析连通性拨测成功,拨测KPI图连通,点击服务器,弹窗显示配置信息;若分析连通性拨测失败,拨测KPI断开,显示拨测失败原因及建议。

● 拨测成功后,可点击服务器图标下的“查看详情”,弹框展示拨测统计信息。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 235

Page 244: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-110 连通性拨测

表 4-81 连通性拨测页签-参数说明

参数 说明

发包 显示发送数据包数量。

收包 显示接受数据包数量。

丢包率(%) 显示数据包丢包比例。

大值 显示时延 大值。

小值 显示时延 小值。

平均值 显示平均时延。

标准偏差 显示平均偏差时延。

路由序号 显示路由序号。

路由设备IP 显示路由设备IP。

响应时间1(ms) 显示路由响应时间。

响应时间2(ms) 显示路由响应时间。

响应时间3(ms) 显示路由响应时间。

拨测类型选择“TCP拨测”时,TCP拨测如图4-111所示,参数说明如表4-82所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 236

Page 245: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-111 TCP 拨测

表 4-82 TCP 拨测-参数说明

参数 说明

连接信息

连接ID 显示拨测时连接的ID。

客户端IP 显示拨测时客户端IP地址。

客户端端口 显示拨测时客户端端口。

服务端IP 显示拨测时服务端IP地址。

服务端端口 显示拨测时服务端端口。

拨测统计信息

连接ID 显示拨测时连接的ID。

时间间隔(s) 显示拨测时采集数据的时间间隔。

传输数据量(MB) 显示某一时间间隔内传输的数据量。

带宽(Mbits/sec) 显示某一时间间隔内的带宽。

重传 显示是否存在数据失败重传的情况。

窗口大小(MB) 显示拨测时TCP数据窗口大小。

操作 显示详细信息,点击可查看。

拨测类型选择“UDP拨测”时,如图4-112所示,参数说明如表4-83所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 237

Page 246: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-112 UDP 拨测

表 4-83 UDP 拨测-参数说明

参数 说明

连接信息

连接ID 显示拨测时连接的ID。

客户端IP 显示拨测时客户端IP地址。

客户端端口 显示拨测时客户端端口。

服务端IP 显示拨测时服务端IP地址。

服务端端口 显示拨测时服务端端口。

拨测统计信息

连接ID 显示拨测时连接的ID。

时间间隔(s) 显示拨测时采集数据的时间间隔。

传输数据量(MB) 显示某一时间间隔内传输的数据量。

带宽(Mbits/sec) 显示某一时间间隔内的带宽。

延时抖动(ms) 显示延时抖动时间。

丢失数据包/总数据包 显示数据传输时丢失数据包和总数据包数。

操作 显示详细信息,点击可查看。

丢包率(%) 显示丢包率。

步骤2 单击“网络负载监控”页签。

查看“网络负载监控”分析内容,如图4-113所示,参数如表4-84所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 238

Page 247: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 在“网络负载监控”页签下的网络IO统计区域,点击网卡会弹出详细信息页面。

● CPU利用率区域可通过下拉列表切换CPU core和NUMA NODE查看详情。

● 网卡可通过下拉列表进行切换查看网络吞吐量图。

图 4-113 网络负载监控

表 4-84 网络负载监控-参数说明

参数 说明

CPU利用率

CPU core 显示CPU核编号。

MUMA NODE 显示MUMA编号。

%user 显示在用户态运行时所占用CPU总时间的百分比。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 239

Page 248: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

%nice 显示在用户态改变过优先级的进程运行时所占用CPU总时间的百分比。

%system 显示在内核态运行时所占用CPU总时间的百分比(不包括硬件中断和软件中断的时间)。

%iowait 显示CPU等待磁盘I/O操作导致空闲状态的时间占CPU总时间的百分比。

%irq 显示CPU服务硬件中断所花费时间占CPU总时间的百分比。

%soft 显示CPU服务软件中断所花费时间占CPU总时间的百分比。

%idle 显示CPU空闲且系统没有未完成的磁盘I/O请求的时间占总时间的百分比。

CPU负载

runq-sz 显示运行队列的长度,即等待运行任务的数量。

plist-sz 显示在任务列表中的任务的数量。

ldavg-1 显示 后1分钟的系统平均负载。

ldavg-5 显示 后5分钟的系统平均负载。

idavg-15 显示 后15分钟的系统平均负载。

blocked 显示当前阻塞的任务数,正在等待I/O完成。

内存利用率

total(KB) 显示系统总的可用内存大小。

free(KB) 显示剩余可用内存大小。

used(KB) 显示已被使用的内存大小。

%used 显示已被使用的内存占总内存的百分比。

avail(KB) 显示可被应用程序使用的内存大小。

buffers(KB) 显示显示被buffer的内存大小。

cached(KB) 显示显示cache中的内存大小。

网络IO统计

IFACE 显示网络接口名称。

rx(pck/s) 显示每秒接收的数据包总数。

tx(pck/s) 显示每秒发送的数据包总数。

rx(KB/s) 显示每秒接收的字节总数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 240

Page 249: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

tx(KB/s) 显示每秒发送的字节总数。

表 4-85 网卡信息页面参数说明

参数 说明

网络配置信息

Network Interface 显示网卡名称。

Status 显示网卡状态。

IPv4 显示是否支持IPv4协议类型。

IPv6 显示是否支持IPv6协议类型。

Supported Port 显示支持的端口。

Speed(Mb/s) 显示网络速率。

Duplex 显示网卡工作类型。

NUMA NODE 显示绑定的NUMA NODE。

driver 显示驱动名称。

version 显示驱动版本。

firmware version 显示软件的版本号。

adaptive-rx 显示接收队列的动态聚合执行功能开关状态。

adaptive-tx 显示发送队列的动态聚合执行功能开关状态。

rx-usecs 显示产生一个中断之前至少有一个数据包被接收之后的微秒数。

tx-usecs 显示产生一个中断之前至少有一个数据包被发送之后的微秒数。

rx-framcs 显示产生中断之前发送的数据包数量。

rx-checksumming 显示接收包校验和开关状态。

tx-checksumming 显示发送包校验和开关状态。

scatter-gatter 显示分散/聚集功能开关状态。

TSO 显示TCP-segmentation-offload开关状态。

UFO 显示UDP-fragmentation-offload开关状态。

LRO 显示large-receive-offload开关状态。

GSO 显示generic-segmentation-offload开关状态。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 241

Page 250: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

GRO 显示generic-receive-offload开关状态。

Tx 发送的环形缓冲区大小,单位为字节。

Rx 接收的环形缓冲区大小,单位为字节。

绑定名称 显示绑定网卡名。

模式 显示模式信息。

Destination 显示本地地址。

Gateway 显示网关信息。

Genmask 显示掩码信息。

Flags 显示网络接口状态。

Address 显示网络地址。

HWtype 显示网卡类型。

HWaddress 显示mac地址。

Flags 显示网络接口状态。

中断及XPS/RPS信息

硬中断编号 显示硬中断编号。

设备信息 显示设备信息。

PCIE设备BDF号 显示PCIE设备BDF号。

中断事件名称 显示中断事件名称。

中断绑核信息 显示中断绑核信息。

中断频率(次/s) 显示中断频率。

网络设备名称 显示网络设备名称。

xps_cpus 显示xps绑核的CPU。

rps_cpus 显示rps绑核的CPU。

rps_flow_cnt 显示每个队列负责flow的 大数量。

软中断信息 显示软中断信息。

CPU核 显示CPU核编号。

硬中断绑核数量 显示硬中断绑核数量。

XPS绑核数量 显示XPS的绑核数量。

RPS绑核数量 显示RPS的绑核数量

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 242

Page 251: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

软硬中断频率(次/s)

显示软硬中断的频率。

占用网络IO的进程

Local Interface 显示本端网口。

Protocol 显示支持的网络协议类型。

Local IP 显示本端IP。

Local Port 显示本端端口。

Remote IP 显示对端IP

Remote Port 显示对端端口。

PID 显示进程的进程号。

Command 显示具体操作信息。

步骤3 单击“丢包诊断”页签。

查看“丢包诊断”分析内容,如图4-114所示,参数说明如表4-87所示。

说明

单击“查看排查建议”可以查看系统给出的排查建议。

如参数后有 图标,可以点击进行搜索需要参数。

图 4-114 丢包诊断

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 243

Page 252: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-86 丢包诊断参数说明

参数 说明

网卡硬件和驱动丢包

IFACE 显示网络接口名称。

rxerr/s 显示每秒接收到的损坏的数据包数量。

txerr/s 显示发送数据包时,每秒发生错误的总数。

coll/s 显示每秒发生冲突的数据包数量。

rxdrop/s 显示发送数据包进入Ring Buffer后,每秒钟丢弃的数据包的数量。

txdrop/s 显示接收数据包进入Ring Buffer后,每秒钟丢弃的数据包的数量。

txcarr/s 显示每秒发送的载波错误数。

rxfram/s 显示接收数据包时,每秒发生的帧对齐错误数。

rxfifo/s 显示接收数据包时,每秒发生FIFO溢出错误的次数。

txfifo/s 显示发送数据包时,每秒发生FIFO溢出错误的次数。

协议栈缓存队列丢包

Queue(CPU core) 显示CPU核队列。

received/s 显示每秒接收的协议栈缓存。

drop/s 显示每秒丢弃的协议栈缓存。

drop rate(%) 显示丢包率。

内核调用栈丢包

函数名称 显示调用函数的名称。

模块名称 显示调用模块的名称。

协议类型 显示数据包的协议类型。

SKB丢弃次数 显示SKB丢包次数。

调用栈信息 显示调用栈信息。

步骤4 单击“网络抓包”页签。

查看“网络抓包”分析内容,如图4-115所示,参数说明如表4-87所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 244

Page 253: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-115 网络抓包

表 4-87 网络抓包参数说明

参数 说明

时间戳 显示抓包的时间点。

源MAC地址 显示源MAC地址。

目标MAC地址 显示目的MAC地址。

协议类型 显示协议类型。

长度 显示抓包的长度。

源IP地址 显示源IP地址。

源端口 显示源端口号。

目标IP地址 显示目的IP地址。

目标端口 显示目的端口号。

包头信息 显示抓包得到的包头信息。

----结束

4.2.4 调优助手

4.2.4.1 工程管理(调优助手)

4.2.4.1.1 特性描述

工程是鲲鹏性能分析工具对分析任务集合的总称,用户可以在工程下创建多个分析任务进行查看。

4.2.4.1.2 特性操作

步骤1 单击“鲲鹏性能分析”插件下“调优助手”后面的 。

打开“新建工程”页面。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 245

Page 254: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-116 新建工程

步骤2 设置工程参数。需要配置的选项如表4-88所示。

表 4-88 创建工程的参数说明

参数 说明

工程名称 输入工程名称。名称需要满足如下要求:

● 只能由字母、数字、特殊字符(@#$%^&*()[]<>._-!~+空格)组成

● 长度为1~32个字符

选择节点

节点名称 显示节点名称。

节点状态 显示节点状态。

节点IP 显示安装节点服务器的IP地址。

步骤3 单击“确认”完成工程的创建。

单击工程名称后面对应的图标按钮可以执行如下操作:

● :创建任务,在当前工程下新建分析任务。

● :删除工程,删除工程会将该工程相关的所有数据都删除,请谨慎操作。

说明

● 管理员用户(tunadmin)对所有用户创建的工程有浏览、删除权限。

● 普通用户对自建的工程有浏览和删除权限,对其他用户创建的工程只有浏览权限。

● 工程创建完成后,单击工程名称栏可查看工程的详细信息。

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 246

Page 255: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.2.4.2 任务管理(调优助手)

4.2.4.2.1 特性描述

鲲鹏性能分析工具调优助手目前支持四项任务分析,分别为系统配置、热点函数、系统性能和进程/线程性能。

所有用户都只能在自建的工程下新建分析任务。

4.2.4.2.2 特性操作

创建分析任务

步骤1 单击“鲲鹏性能分析插件”区域中调优助手后面的 。

打开“新建任务”页面。页面内容根据分析对象和模式变化,如图4-117、图4-118和图4-119所示。

图 4-117 新建任务(系统)

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 247

Page 256: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-118 新建任务(应用-Launch Application)

图 4-119 新建任务(应用-Attach to Process)

步骤2 配置任务参数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 248

Page 257: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-89 配置任务参数

参数 说明

任务名称 输入分析任务的名称。名称需要满足如下要求:

● 只能由字母、数字、特殊字符(@#$%^&*()[]<>._-!~+空格)组成

● 长度为1~32个字符

分析对象 选择分析的对象。可选择:

● 系统:采集整个服务器的数据,无需关注系统中有哪些类型的应用在运行,采样时长由配置参数控制,适用于多业务混合运行和有子进程的场景。

● 应用:采集指定应用或进程的数据进行分析。

模式 选择分析应用的模式。可选择:

● Launch Application:采集的同时启动Application,采样时长受Application的运行时长控制(适用于Application运行时长较短的场景)。该场景分析涵盖Application及其子进程。

● Attach to Process:采集时关联服务器中已存在的PID,需要配置采样时长参数(适用于应用运行时间较长的场景)。该场景分析仅涵盖参数中的PID,不涵盖PID对应的子进程。

仅在“分析对象”选择“应用”时,需要配置此参数。

应用路径 输入待分析应用的绝对路径。例如分析保存在“/home/test”目录下的“loop_test”应用,则输入:/home/test/loop_test仅在“分析对象”选择“应用”且“模式”选择“LaunchApplication”时需配置此参数。

应用参数(可选) 输入应用参数,请根据实际应用场景填写。

仅在“分析对象”选择“应用”且“模式”选择“LaunchApplication”时可选择配置此参数。

应用运行用户(可选)

仅在“分析对象”选择“应用”且“模式”选择“LaunchApplication”时可选择配置此参数,默认关闭。

● 关闭状态:应用运行用户为系统默认用户launcher。● 打开状态:应用运行用户为实际配置的用户。

进程名称 输入需要分析的进程名,支持正则表达式。

仅在“分析对象”选择“应用”且“模式”选择“Attach toProcess”时需配置此参数。

PID 输入需要分析的进程PID,支持用“,”隔开的多个PID。

仅在“分析对象”选择“应用”且“模式”选择“Attach toProcess”时可选择配置此参数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 249

Page 258: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

二进制/符号文件路径

输入二进制/符号文件在服务器上的绝对路径。

仅在“分析对象”选择“应用”时,需要配置此参数。

说明

● 当开发者需要观察源代码和汇编指令映射后的性能数据时,并且对应的应用程序无符号表信息,该参数用来导入对应应用程序的符号表。

● 如果应用程序的二进制文件带有debug信息,则只需要放置二进制文件即可。

● 如果应用程序的二进制文件不带debug信息,则需要放置二进制文件和对应的debuginfo文件。

采样时长(s) 设置记录的时间。默认为15秒,取值范围1~300秒。

采集文件大小(MiB)

设置采集文件的大小。默认为100,取值范围1~100。

步骤3 单击“确认”新建任务。

单击任务名称或节点名称后面对应的图标可以执行如下操作:

● :再次分析任务或节点,可修改任务参数配置并重新启动分析任务。

● :查看任务分析路径,可查看任务或节点的分析路径。

● :查看任务基本信息和日志,可查看任务基本信息和日志。

● :删除分析任务,删除分析任务会将该分析任务下的数据都删除,请谨慎操作。

● :取消正在进行的分析任务。

说明

● 管理员用户(tunadmin)对所有用户创建的工程有浏览、删除权限。

● 普通用户对自建的工程有浏览和删除权限,对其他用户创建的工程只有浏览权限。

● 工程创建完成后,单击工程名称栏可查看工程的详细信息。

----结束

查看系统配置分析结果

步骤1 在“鲲鹏性能分析插件”区域,依次单击“调优助手”、指定工程和分析任务名称前

的 。

展开节点列表。

步骤2 单击节点名称查看分析结果。

打开分析结果页面。分析结果分为四大块内容:系统配置、热点函数、系统性能和进程/线程性能。默认显示的是系统配置分析结果。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 250

Page 259: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-120 分析结果页面

步骤3 (可选)选择业务类型。

● 根据实际情况选择业务类型。可选的类型包括:CPU密集型、网络IO密集型和存储IO密集型。可以选择1~3个业务类型。选中后,选项的文字颜色变为蓝色。默认三个选项均被选中。

● 根据实际情况选择建议范围。可以调节优化建议拓扑树显示“全部建议”或“经过阈值过滤的建议”。

图 4-121 选择业务类型

步骤4 根据系统配置条件,进行调优设置。

1. 可根据系统配置情况,对右侧系统配置指标参数进行调整。

图 4-122 系统配置调优指标

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 251

Page 260: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表4-90描述了系统配置指标的各项参数。

表 4-90 系统配置指标

指标 描述

dirty_expire_centiseconds

用于标识脏数据在缓存中允许保留的时长,即时间结束后需要被写入到磁盘中。如果业务的数据是连续性的写,可以适当调小此参数,这样可以有效避免IO集中,导致突发的IO等待。

dirty_background_ratio

页面占用总内存 大的比例(以memfree+Cached-Mapped为基准),超过这个值,pdflush线程会刷新脏页面到磁盘。增加这个值,系统会分配更多的内存用于写缓存,因而可以提升写磁盘性能。但对于磁盘写入操作为主的业务,可以调小这个值,避免数据积压太多 后成为瓶颈,可以结合业务并通过观察await的时间波动范围来识别。

dirty_ratio 表示脏页面占用总内存 大的比例,超过这个值,系统不会新增加脏页面,文件读写也变为同步模式。文件读写变为同步模式后,应用程序的文件读写操作的阻塞时间变长,会导致系统性能变慢。对于写入为主的业务,可以增加此参数,避免磁盘过早的进入到同步写状态。

dirty_expire_centisecs 该参数控制内核的脏数据刷新进程pdflush的运行间隔,单位是1/100秒。缺省数值是500 (5秒)。

– 如果系统持续地执行写入动作,那么需要降低该值,这样可以把尖峰的写操作削平成多次写操作。

– 如果系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值。

内存空闲率 (%) 该参数控制内存使用率。

– 当内存使用率过高时,它会降低服务器的性能,此时就需要提高内存空闲率,以使服务器健康运行。

– 在内存使用率低的情况下,调小swappiness参数,使用物理内存,尽量减少交换分区的使用,避免加大IO操作,影响系统性能。

swappiness swappiness是一个Linux内核属性,用于设置将页面从物理内存交换到交换空间以及从页面缓存中删除页面之间的平衡。它基本上定义了系统使用交换空间的频率。

– 单击“应用”使用调整后的配置指标参数。

– 单击“重置”恢复默认指标参数。

2. 查看分析结果页面的优化建议拓扑树图,单击根据配置条件 ,单击 选择对应的调优建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 252

Page 261: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-123 优化建议拓扑树图

3. 查看右侧调优建议中的相关配置、指标说明、优化建议及优化指导。单击

确定采纳该调优建议,再次单击取消采纳该调优建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 253

Page 262: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-124 调优建议页面

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 254

Page 263: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4. 已采纳的调优建议将会保留在关联报告中,单击页面右下角“关联报告”进入关联报告页面。

关联报告页面会显示已经采纳的所有调优建议,单击任务名称可进行查看。根据采纳的调优建议是否达到预期目标,单击左下角“有效”和“无效”进行确定。

图 4-125 关联报告页面

步骤5 单击“系统配置”右侧的 查看系统配置详细数据。

系统配置详细数据中包含CPU、内存、存储、网络和OS配置信息,默认显示的是CPU信息。

图 4-126 查看系统配置详细数据

----结束

查看热点函数分析结果

步骤1 在“工程管理”区域,依次单击指定工程和分析任务名称前的 。

展开节点列表。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 255

Page 264: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 单击节点名称查看分析结果。

打开分析结果页面。

图 4-127 分析结果页面

步骤3 (可选)选择业务类型。

● 根据实际情况选择业务类型。可选的类型包括:CPU密集型、网络IO密集型和存储IO密集型。可以选择1~3个业务类型。选中后,选项的文字颜色变为蓝色。默认三个选项均被选中。

● 根据实际情况选择建议范围。可以调节优化建议拓扑树显示“全部建议”或“经过阈值过滤的建议”。

图 4-128 选择业务类型

步骤4 单击“热点函数”查看热点函数分析结果,进行调优设置。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 256

Page 265: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-129 查看热点函数分析结果

1. 查看分析结果页面的优化建议拓扑树图,单击根据配置条件 ,单击 选择对应的调优建议。

图 4-130 优化建议拓扑树图

2. 查看右侧调优建议中的相关配置、指标说明、优化建议及优化指导。单击

确定采纳该调优建议,再次单击取消采纳该调优建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 257

Page 266: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-131 调优建议页面

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 258

Page 267: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3. 已采纳的调优建议将会保留在关联报告中,单击页面右下角“关联报告”进入关联报告页面。

关联报告页面会显示已经采纳的所有调优建议,单击任务名称可进行查看。根据采纳的调优建议是否达到预期目标,单击左下角“有效”和“无效”进行确定。

图 4-132 关联报告页面

步骤5 单击“热点函数”右侧的 查看热点函数详细数据。

热点函数详细数据中包含“函数”和“模块”两个部分,可通过单击函数名称来查看函数详细信息。

图 4-133 查看热点函数详细数据

----结束

查看系统性能分析结果

步骤1 在“鲲鹏性能分析插件”区域,依次单击“调优助手”、指定工程和分析任务名称前

的 。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 259

Page 268: 2.3.T10 鲲鹏开发套件插件工具(VSCode

展开节点列表。

步骤2 单击节点名称查看分析结果。

打开分析结果页面。

图 4-134 分析结果页面

步骤3 (可选)选择业务类型。

● 根据实际情况选择业务类型。可选的类型包括:CPU密集型、网络IO密集型和存储IO密集型。可以选择1~3个业务类型。选中后,选项的文字颜色变为蓝色。默认三个选项均被选中。

● 根据实际情况选择建议范围。可以调节优化建议拓扑树显示“全部建议”或“经过阈值过滤的建议”。

图 4-135 选择业务类型

步骤4 点击“系统性能”,查看系统性能分析结果。

打开“系统性能”页面。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 260

Page 269: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-136 系统性能页面

在“系统性能”页面,可以进行以下操作。

● 在“CPU指标”下拉选择框中选择要查看的CPU指标。

表4-91描述了可选的CPU指标。

表 4-91 CPU 指标选项说明

CPU指标 描述

%sys 在内核态运行时所占用CPU总时间的百分比。该指标没有包含服务硬件和软件中断所花费的时间。

%user 在用户态运行时所占用CPU总时间的百分比。

%iowait CPU等待存储I/O操作导致空闲状态的时间占CPU总时间的百分比。

%irq CPU服务硬件中断所花费时间占CPU总时间的百分比。

%soft CPU服务软件中断所花费时间占CPU总时间的百分比。

%idle CPU空闲且系统没有未完成的存储I/O请求的时间占总时间的百分比。

● 单击 设置利用率区间。

在弹出“利用率区间”对话框中设置CPU利用率Normal范围的起始值和结束值,然后单击“确认”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 261

Page 270: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-137 设置利用率区间

● 单击 切换视图。

调优助手提供下面两种系统性能视图。

– 默认视图

“系统性能”页面提供的默认视图。默认视图下,CPU核首先根据利用率大小,被分为Idle、Normal和Busy三个区域。单击一个区域可以放大该区域。每个区域的上方是该区域对应的CPU利用率范围,中间是代表每个利用率在该区域的CPU核的圆圈,下方是这些核在各NUMA的分布情况。

图 4-138 默认视图

– NUMA视图

NUMA视图下,CPU核根据绑定的NUMA分为NUMA 0、NUMA 1、NUMA2和NUMA 3这4个区域。每个区域上方为绑定的NUMA名及绑定该NUMA的CPU核占总数的比值。

图 4-139 NUMA 视图

● 把鼠标悬停在一个圆圈上,查看该CPU核绑定的NUMA、Core ID和各项性能数据。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 262

Page 271: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-140 悬停查看 CPU 核系统性能数据

● 单击一个圆圈,在右边详情区域查看该CPU核的详细信息,包括该CPU核上运行和进程和线程、硬中断和软中断的信息。

图 4-141 查看 CPU 核详情

说明

可单击 展开详情区域。

步骤5 查看状态为Busy的CPU核的系统性能优化建议拓扑树图。

● 当CPU指标设置为%sys且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 263

Page 272: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-142 系统性能优化建议拓扑树图

表4-92描述了阈值设置区域的各项参数。

表 4-92 阈值设置区域参数说明

参数 描述

网络收发IOPS (%) IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

网络丢包 因为缓冲充满,每秒钟丢弃的已接收/已发送数据包数。

网络收发流量低 每秒接收/发送的数据包总数降低。

系统上下文切换 系统上下文切换就是先把上一个任务的 CPU 上下文(CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器, 后再跳转到程序计数器所指的新位置,运行新任务。

cswch/s 每秒主动任务上下文切换次数。

majflt/s 每秒产生的主缺页数,当虚拟内存地址映射成物理内存地址时,相应的页在交换分区中,这样的缺页为主缺页(Major Page Faults),一般在内存使用紧张时产生,需要从硬盘中加载页。

pswin/s 系统每秒换入的交换分区页面总数。

pswpout/s 系统每秒换出的交换分区页面总数。

系统内存使用 (%) 系统内存使用率。

表4-93描述了优化建议拓扑树图上的主要节点。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 264

Page 273: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-93 系统性能优化建议拓扑树图节点说明

问题节点 描述

网络IO:网络收发IOPS或流量高

IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

网络IO:网络收发IOPS或流量低

IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

调度开销:上下文切换次数高

上下文切换就是先把上一个任务的 CPU 上下文(CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器, 后再跳转到程序计数器所指的新位置,运行新任务。

而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来保持连续运行。

须知频繁的进行上下文切换将造成系统性能问题。

SWAP:majflt/s高,存在pswpin/s,pswpout/s

每秒钟产生的主缺页数高,系统中存在换入和换出的主缺页。

进程分析:分析TOP%system的进程

CPU的空闲时间占比。

针对表4-93中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

● 当CPU指标设置为%user且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

图 4-143 系统性能优化建议拓扑树图

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 265

Page 274: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表4-94描述了阈值设置区域的各项参数。

表 4-94 阈值设置区域参数说明

参数 描述

branch miss rate(%)

CPU运行指令分支缺失率。取值为1~100的正整数。

dTLB cache miss rate(%)

数据TLB缓存缺失率。取值为1~100的正整数。

iTLB cache miss rate(%)

指令TLB缓存缺失率。取值为1~100的正整数。

L1-dcache miss rate(%)

L1数据缓存缺失率。取值为1~100的正整数。

L1-icache miss rate(%)

L1指令缓存缺失率。取值为1~100的正整数。

fault/s 每秒系统产生的缺页数。取值为任意正整数。

跨片/跨DIE访问比例(%)

CPU跨片跨DIE访问内存比例。取值为1~100的正整数。

DIE内存消耗比例(%)

DIE内存实际占用与DIE内存 大的比例。取值为1~100的正整数。

表4-95描述了优化建议拓扑树图上的主要节点。

表 4-95 系统性能优化建议拓扑树图节点说明

问题节点 描述

Branch Miss高 指令运行分支缺失次数较多。

TLB Miss高 当需要访问的虚拟内存,不在TLB当中时,我们称之为TLB Miss。

Cache Miss高 当运算器需要从存储器中提取数据时,它首先在 高级的cache中寻找然后在次高级的cache中寻找。如果在cache中找到,则称为命中hit;反之,则称为不命中miss。

page fault高 系统产生的缺页数高。

L1-icache miss rate L1指令缓存缺失率较高。

跨片/跨DIE访问比例高

CPU跨片/跨DIE访问内存比例高。

各DIE内存消耗比例不均衡

各DIE内存消耗比例不均衡。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 266

Page 275: 2.3.T10 鲲鹏开发套件插件工具(VSCode

问题节点 描述

采用访存分析功能 跳转系统性能分析工具进行访存专项分析。

分析TOP %user的进程

切换进程/线程页面查看%user TOP50进程详细数据。

针对表4-95中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

● 当CPU指标设置为%iowait且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

图 4-144 系统性能优化建议拓扑树图

表4-96描述了阈值设置区域的各项参数。

表 4-96 阈值设置区域参数说明

参数 描述

iowait CPU处于空闲状态时间比例。

%util CPU等待磁盘I/O操作导致空闲状态的时间占CPU总时间的百分比。

读比例 每秒读数据量。

写比例 每秒写数据量。

吞吐量/时延 每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 267

Page 276: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 描述

IOPS 每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。指单位时间内系统能处理的I/O请求数量,I/O请求通常为读或写数据操作请求。

内存中free空间占比 当内存使用率过高时,它会降低服务器的性能,此时就需要提高内存空闲率。

表4-97描述了优化建议拓扑树图上的主要节点。

表 4-97 系统性能优化建议拓扑树图节点说明

问题节点 描述

存储IO: %util高 CPU等待磁盘I/O操作导致空闲状态的时间占CPU总时间的百分比。

当 iowait 占用率过高的时候,通常意味着某些程序的IO 操作效率很低,或者 IO 对应设备的性能很低以至于读写操作需要很长的时间来完成。

吞吐量小时延大 每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。

IOPS低 每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。指单位时间内系统能处理的I/O请求数量,I/O请求通常为读或写数据操作请求。

代码中采用调用异步读写IO接口的方式,如libaio接口

对于磁盘文件,文件的读取是同步的,导致线程读取文件时,属于阻塞状态。程序为了提升性能和磁盘的吞吐,程序会创建几个单独的磁盘读写线程,并通过信号量等机制进行线程间通信(同时带有锁)。显然线程多,锁多,会导致更多的资源抢占,从而导致系统整体性能下降。

内存中free空间占比 当内存使用率过高时,它会降低服务器的性能,此时就需要提高内存空闲率。

分析存储IO操作高的进程,降低读写操作

分析存储IO操作高的进程,降低读写操作。

针对表4-97中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

● 当CPU指标设置为%irq且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 268

Page 277: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-145 系统性能优化建议拓扑树图

表4-98描述了阈值设置区域的各项参数。

表 4-98 阈值设置区域参数说明

参数 描述

irq CPU服务硬件中断所花费时间占CPU总时间的百分比。

IOPS 每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。指单位时间内系统能处理的I/O请求数量,I/O请求通常为读或写数据操作请求。

表4-99描述了优化建议拓扑树图上的主要节点。

表 4-99 系统性能优化建议拓扑树图节点说明

问题节点 描述

网络IO:网络收发IOPS或流量高

IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

针对表4-99中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

● 当CPU指标设置为%soft且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 269

Page 278: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-146 系统性能优化建议拓扑树图

表4-100描述了阈值设置区域的各项参数。

表 4-100 阈值设置区域参数说明

参数 描述

soft CPU服务软件中断所花费时间占CPU总时间的百分比。

ksoftirq/<cpu> 占用 ksoftirq进程占用CPU百分比。

IOPS 每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。指单位时间内系统能处理的I/O请求数量,I/O请求通常为读或写数据操作请求。

表4-101描述了优化建议拓扑树图上的主要节点。

表 4-101 系统性能优化建议拓扑树图节点说明

问题节点 描述

软中断:进程ksoftirq/<cpu> 占用高

内核中的ksoftirqd进程专门负责软中断的处理,当它收到软中断后,就会调用相应软中断所对应的处理函数,对于网卡驱动模块抛出的软中断,ksoftirqd的 终处理逻辑是将网卡写入到内存中的数据包转换成内核网络模块能识别的skb格式,然后将数据交给协议栈处理。

网络收发IOPS或流量高

单位时间内通过某个网络(或信道、接口)的收发数据量过高。

针对表4-101中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 270

Page 279: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 当CPU指标设置为%idle且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为系统性能优化建议拓扑树图。

图 4-147 系统性能优化建议拓扑树图

表4-102描述了阈值设置区域的各项参数。

表 4-102 阈值设置区域参数说明

参数 描述

idle CPU空闲且系统没有未完成的存储I/O请求的时间占总时间的百分比。

网络收发吞吐量(%)

单位时间内通过某个网络(或信道、接口)的收发数据量过高。

net.ipv4.tcp_wmem CPU空闲且系统没有未完成的存储I/O请求的时间占总时间的百分比。

net.ipv4.tcp_rmem 内配置读缓冲的大小,三个值,第一个是这个读缓冲的小值,第三个是 大值,中间的是默认值。

net.core.wmem_max 发送套接字缓冲区大小的 大值(以字节为单位)。

net.core.rmem_max 接收套接字缓冲区大小的 大值。

net.core.somaxconn 服务端所能accept即处理数据的 大客户端数量,即完成连接上限。

net.ipv4.tcp_max_syn_backlog

tcp_max_syn_backlog是指定所能接受SYN同步包的大客户端数量。

表4-103描述了优化建议拓扑树图上的主要节点。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 271

Page 280: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-103 系统性能优化建议拓扑树图节点说明

问题节点 描述

网络收发吞吐量低 网络收发吞吐量和收发数量低。

并发少 同时工作的cpu核数较少,效率较低,提高并发,增加运行的核数可提高应用执行的效率。

针对表4-103中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

步骤6 根据优化建议拓扑树,进行调优设置。

1. 查看分析结果页面的优化建议拓扑树图,单击根据配置条件 ,单击 选择对应的调优建议。

图 4-148 优化建议拓扑树图

2. 查看右侧调优建议中的相关配置、指标说明、优化建议及优化指导。单击

确定采纳该调优建议,再次单击取消采纳该调优建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 272

Page 281: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-149 调优建议页面

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 273

Page 282: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3. 已采纳的调优建议将会保留在关联报告中,单击页面右下角“关联报告”进入关联报告页面。

关联报告页面会显示已经采纳的所有调优建议,单击任务名称可进行查看。根据采纳的调优建议是否达到预期目标,单击左下角“有效”和“无效”进行确定。

图 4-150 关联报告页面

步骤7 单击“系统性能”右侧的 查看系统性能详细数据。

图 4-151 查看系统性能详细数据

----结束

查看进程/线程性能分析结果

步骤1 在“鲲鹏性能分析插件”区域,依次单击“调优助手”、指定工程和分析任务名称前

的 。

展开节点列表。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 274

Page 283: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 单击节点名称查看分析结果。

打开分析结果页面。

图 4-152 分析结果页面

● 选择业务类型。

– 根据实际情况选择业务类型。可选的类型包括:CPU密集型、网络IO密集型和存储IO密集型。可同时选中多个业务类型。选中后,选项的文字颜色变为蓝色。

– 根据实际情况选择建议范围。可以调节优化建议拓扑树显示“全部建议”或“经过阈值过滤的建议”。

图 4-153 选择业务类型

● 查看进程/线程性能分析结果。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 275

Page 284: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-154 进程/线程性能页面

在“进程/线程性能”页面,可以进行以下操作。

– 在“CPU指标”下拉选择框中选择要查看的CPU指标。

表4-104描述了可选的CPU指标。

表 4-104 CPU 指标选项说明

CPU指标 描述

%user 在用户态运行时所占用CPU总时间的百分比。

%sys 在内核态运行时所占用CPU总时间的百分比。该指标没有包含服务硬件和软件中断所花费的时间。

%cpu CPU使用率(非idle状态下的CPU使用率)。

– 单击 设置利用率区间。

在弹出“利用率区间”对话框中设置CPU利用率Normal范围的起始值和结束值,然后单击“确认”。

图 4-155 设置利用率区间

– 把鼠标悬停在一个方块上,查看该CPU核的各项性能数据。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 276

Page 285: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-156 悬停查看 CPU 核性能数据

说明

可点击“查看相关线程”查看CPU核的相关线程(线程用三角形表示)。在线程视图中,可点击左上角的PID返回。

– 单击一个方块,在右边详情区域查看该CPU核的详细进程和线程信息,包括微架构指标、访存指标、CPU亲和性、内存亲和性、操作的函数、操作的文件、操作的网口和操作的系统调用。

图 4-157 查看 CPU 核进程/线程详情

说明

可单击可单击 展开详情区域。

步骤3 查看状态为Busy的CPU核的进程/线程性能优化建议拓扑树图。

● 当CPU指标设置为%user且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为进程/线程性能优化建议拓扑树图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 277

Page 286: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-158 进程/线程性能优化建议拓扑树

表4-105描述了阈值设置区域的参数。

表 4-105 阈值设置区域参数说明

参数 描述

cpu亲和性 CPU亲和性配置。

内存亲和性 内存亲和性配置。

并发数 并发数。

branch miss rate (%) CPU运行指令分支缺失率。取值为1~100的正整数。

L1-dcache miss rate(%)

L1数据缓存缺失率。取值为1~100的正整数。

L1-icache miss rate(%)

L1指令缓存缺失率。取值为1~100的正整数。

dTLB cache miss rate(%)

数据TLB缓存缺失率。取值为1~100的正整数。

iTLB cache miss rate(%)

指令TLB缓存缺失率。取值为1~100的正整数。

fault/s 每秒系统产生的缺页数。取值为任意正整数。

表4-106描述了进程/线程性能优化建议拓扑树图上的主要节点。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 278

Page 287: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-106 进程/线程性能优化建议拓扑树图一级节点

节点 描述

进程及其线程存在在不同NUMA NODE间切换

一个进程在执行的过程中,在不同的numa node上进行切换

进程/线程跨DIE或跨片访问内存

cpu跨片/跨DIE访问内存比例高。

并发度:并发度少 进程的线程数小于6。

Branch:Branch Miss高

指令运行分支缺失次数较多

Cache:Cache Miss高

当运算器需要从存储器中提取数据时,它首先在 高级的cache中寻找然后在次高级的cache中寻找。如果在cache中找到,则称为命中hit;反之,则称为不命中miss。

TLB:TLB Miss高 当需要访问的虚拟内存,不在TLB当中时,我们称之为TLB Miss。

内存:page fault高 内存产生的缺页数高。

JVM:JVM消耗CPU高

JVM消耗的CPU资源过高。

编译:编译器及编译选项

编译器及编译的选项。

内存访问能力评估:采用访存分析功能分析

分析内存的访存相关能力。

热点函数分析:分析TOP热点函数

分析系统或进程的热点函数。

针对表4-106中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

● 当CPU指标设置为%sys且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为进程/线程性能优化建议拓扑树图。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 279

Page 288: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-159 进程/线程性能优化建议拓扑树

表4-107描述了阈值设置区域的参数。

表 4-107 阈值设置区域参数说明

参数 描述

应用上下文切换 上下文切换指的是内核(操作系统的核心)在CPU上对进程或者线程进行切换。

应用系统调用 一次系统调用的过程,其实是发生了两次 CPU 上下文切换(用户态-内核态-用户态)。

进程majflt/s 每秒钟产生的主缺页数。

内存消耗 (%) 内存占用高,占比超过30%。

表4-108描述了进程/线程性能优化建议拓扑树图上的主要节点。

表 4-108 进程/线程性能优化建议拓扑树图一级节点

节点 描述

调度开销:上下文切换次数高

上下文切换次数过多,会导致耗费大量CPU资源,降低性能。

SWAP:majflt/s高 每秒钟产生的主缺页数过高。

热点函数分析:分析TOP热点函数

分析系统或进程的热点函数。

针对表4-108中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 280

Page 289: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 当CPU指标设置为%cpu且有状态为Busy的CPU核时,页面右边可设置相关参数的阈值并查看详情,页面下方为进程/线程性能优化建议拓扑树图。

图 4-160 进程/线程性能优化建议拓扑树

表4-109描述了阈值设置区域的参数。

表 4-109 阈值设置区域参数说明

参数 描述

每秒平均系统调用 应用每秒调用系统函数的次数。

网络收发吞吐量 单位时间内通过某个网络(或信道、接口)的数据量。

应用每秒读大小 进程每秒从硬盘读取的数据量。

应用每秒写大小 进程每秒向硬盘写入的数据量。

应用IO延迟 块 I/O 延迟(iodelay),包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。

表4-110描述了进程/线程性能优化建议拓扑树图上的主要节点。

表 4-110 进程/线程性能优化建议拓扑树图一级节点

节点 描述

任务阻塞:阻塞式的系统调用多

阻塞式的系统调用会导致性能下降。

网络IO:网络收发吞吐量和收发数量低

网络收发吞吐量和收发数量低。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 281

Page 290: 2.3.T10 鲲鹏开发套件插件工具(VSCode

节点 描述

任务阻塞:采用锁与等待分析功能分析

进入系统性能分析,采用锁与等待分析,确定性能瓶颈。

存储IO:进程读写存储量大或延时高

进程读写存储量大或延时高。

针对表4-110中列出的每个问题,可以单击节点查看问题详情并单击下一级节点查看对应的优化建议。

步骤4 根据优化建议拓扑树,进行调优设置。

1. 查看分析结果页面的优化建议拓扑树图,单击根据配置条件 ,单击 选择对应的调优建议。

图 4-161 优化建议拓扑树图

2. 查看右侧调优建议中的相关配置、指标说明、优化建议及优化指导。单击

确定采纳该调优建议,再次单击取消采纳该调优建议。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 282

Page 291: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-162 调优建议页面

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 283

Page 292: 2.3.T10 鲲鹏开发套件插件工具(VSCode

3. 已采纳的调优建议将会保留在关联报告中,单击页面右下角“关联报告”进入关联报告页面。

关联报告页面会显示已经采纳的所有调优建议,单击任务名称可进行查看。根据采纳的调优建议是否达到预期目标,单击左下角“有效”和“无效”进行确定。

图 4-163 关联报告页面

步骤5 单击“进程/线程性能”右侧的 查看进程/线程性能详细数据。

图 4-164 查看进程/线程性能详细数据

----结束

创建对比分析任务

说明

创建对比分析任务务必满足以下条件。

● 已在“普通分析”成功创建工程,且当前工程下不存在“离线”状态的节点。

● 所有用户都只能在自建的工程下新建分析任务。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 284

Page 293: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤1 单击“对比分析”后的 。

新建对比分析任务,系统提供两种分析方式,如表4-111所示。

表 4-111 对比分析任务方式

分析方式 描述

横向分析 同一工程同一任务下的多个节点间分析结果对比。

纵向分析 不同任务两个节点间分析结果对比。

步骤2 (可选)新建对比分析任务,选择横向分析方式。

1. 单击选中同一工程统一任务下的不同节点。单击 ,可对对象1和对象2的位置进行调换。

图 4-165 新建横向对比分析任务

2. 单击确认,横向对比分析任务创建完成。

步骤3 (可选)新建对比分析任务,选择纵向分析方式。

1. 单击选中不同任务下的两个节点。单击 ,可对对象1和对象2的位置进行调换。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 285

Page 294: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-166 新建纵向对比分析任务

2. 单击确认,纵向对比分析任务创建完成。

步骤4 (可选)删除历史报告。

说明

删除历史报告后,该历史报告的分析数据将无法恢复,请谨慎操作。

1. 选中左侧分析报告管理下的历史报告。单击选中历史报告右侧的 。

图 4-167 删除历史报告

2. 单击确认,删除该历史报告。

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 286

Page 295: 2.3.T10 鲲鹏开发套件插件工具(VSCode

查看对比分析结果

步骤1 在左侧的“对比分析”中单击选中的分析报告,进入分析报告页面。

图 4-168 分析报告页面

步骤2 单击分析报告顶部区域选项可查看系统配置、热点函数、系统性能、进程/线程性能、对象信息等分析结果。

----结束

4.3 常用操作

4.3.1 配置 SSH 密钥认证以下内容以Windows系统为例。

步骤1 打开本地cmd终端。

步骤2 执行如下命令生成公私钥对。

ssh-keygen -m PEM -t rsa -b 2048

过程中需要:

● (可选)输入保存的文件名,默认为在“C:\Users\username/.ssh”目录下保存为“id_rsa”(私钥)和“id_rsa.pub”(公钥)文件。

● (可选)设置密钥的密码口令。

回显信息如下:

Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\username/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\username/.ssh/id_rsa.

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 287

Page 296: 2.3.T10 鲲鹏开发套件插件工具(VSCode

Your public key has been saved in C:\Users\username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:rCRpryf6uZU+dQd/S8WN1azvay58zi3gtb53gayhvO8 china\username@HGHY4USERNAME The key's randomart image is: +---[RSA 2048]----+| ..|| +|| =.|| . . . o +|| + . S o. .o || . + o. ..+o+..|| =....o+= +.|| .=o o ..o=o=|| .o=+.. .+E .OO+|+----[SHA256]-----+

步骤3 用户登录服务器并上传公钥文件“id_rsa.pub”。

● 普通用户将公钥文件上传至“/home/操作系统用户名/.ssh”目录下。

● root用户将公钥文件上传至“/root/.ssh”目录下。

上传后将公钥文件“id_rsa.pub”名字改为“authorized_keys”。如已存在此“authorized_keys”文件,将公钥文件内容复制至“authorized_keys”文件中即可。

步骤4 设置“authorized_keys”文件的权限为600。

chmod 600 /home/操作系统用户名/.ssh/authorized_keys

步骤5 查看服务器ssh配置文件。

cat /etc/ssh/sshd_config

检查以下两处开关:

PubkeyAuthentication yes

RSAAuthentication yes

如果不是“yes”,要将上述开关设为“yes”后保存配置文件,并重启sshd服务。

步骤6 在IDE插件中选择密钥认证。

在界面上直接导入本地的私钥文件即可。

----结束

4.3.2 修改用户密码

前提条件

以普通用户成功登录鲲鹏性能分析工具。

操作步骤

步骤1 单击“鲲鹏性能分析插件”菜单右侧的“更多操作…” ,在下拉菜单中选择“修改密码”。

打开设置界面。

步骤2 点击“修改”。

打开“修改密码”界面,如图4-169所示,参数如表4-112所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 288

Page 297: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-169 修改密码

表 4-112 修改密码参数说明

参数 说明

旧密码 输入用户当前密码。

新密码 输入新密码。密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上的字符

● 密码不能是用户名或用户名的逆序

● 新密码不能是旧密码的逆序

● 新密码不能在弱口令字典中

确认密码 再次输入设置的密码。

步骤3 参考表4-112修改密码后,单击“确认”。

----结束

4.3.3 修改内部端口号

8080 端口的修改方法

步骤1 修改thor.properties文件中THOR_WEB_SERVER_PORT参数。

cd /opt/hyper_tuner/thor-server-*/config

修改thor.properties中THOR_WEB_SERVER_PORT=8080 。修改8080端口号为其它未被监听的端口号。

步骤2 修改nginx.conf文件proxy_pass参数。

cd /opt/hyper_tuner/tool/nginx/conf

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 289

Page 298: 2.3.T10 鲲鹏开发套件插件工具(VSCode

修改nginx.conf 中 proxy_pass http://127.0.0.1:8080 。修改8080端口号,与步骤1修改的端口号一致。

步骤3 修改install.ini文件的THOR_WEB_SERVER_PORT参数。

cd /opt/hyper_tuner/

修改install.ini中THOR_WEB_SERVER_PORT=8080。修改8080端口号,与步骤1修改端口号一致。

步骤4 重启服务。

systemctl restart hyper_tuner_nginx

systemctl restart gunicorn_user

----结束

8000 端口的修改方法

步骤1 修改nginx.conf文件的proxy_pass参数。

cd /opt/hyper_tuner/tool/nginx/conf

修改nginx.conf 中proxy_pass http://127.0.0.1:8000 。修改8000端口号为其它未被监听的端口号。

步骤2 修改gunicorn.py.ini文件的bind参数。

cd /opt/hyper_tuner/user_management/visualization/Django/user_management/user_management

修改gunicorn.py.ini中bind = '127.0.0.1:8000'。修改8000端口,与步骤1修改端口号一致。

步骤3 修改install.ini文件中GUNICORN_PORT参数。

cd /opt/hyper_tuner/

修改install.ini中GUNICORN_PORT=8000。修改8000端口号,与步骤1修改端口号一致。

步骤4 重启服务。

systemctl restart hyper_tuner_nginx

systemctl restart gunicorn_user

----结束

8001 端口修改方法

步骤1 修改nginx.conf文件的proxy_pass参数。

cd /opt/hyper_tuner/tool/nginx/conf

修改nginx.conf 中proxy_pass http://127.0.0.1:8001 。修改8001端口号为其它未被监听的端口号。

步骤2 修改gunicorn.py.ini文件的bind参数。

cd /opt/hyper_tuner/sys_perf/visualization/Django/resource/resource

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 290

Page 299: 2.3.T10 鲲鹏开发套件插件工具(VSCode

修改gunicorn.py.ini中bind = '127.0.0.1:8001'。修改8001端口,与步骤1修改端口号一致。

步骤3 修改install.ini文件的SYS_PERF_GUNICORN_PORT。

cd /opt/hyper_tuner/

修改install.ini中SYS_PERF_GUNICORN_PORT=8001。修改8001端口号,与步骤1修改端口号一致。

步骤4 重启服务。

systemctl restart hyper_tuner_nginx

systemctl restart gunicorn_user

----结束

8002 端口修改方法

步骤1 修改nginx.conf 中proxy_pass参数。

cd /opt/hyper_tuner/tool/nginx/conf

修改nginx.conf 中 proxy_pass http://127.0.0.1:8002 。修改8002端口号为其它未被监听的端口号。

步骤2 修改install.ini中INTERNAL_LISTEN_PORT参数。

cd /opt/hyper_tuner/

修改install.ini中INTERNAL_LISTEN_PORT=8002。修改8002端口号,与步骤1修改端口号一致。

步骤3 修改nginx.conf 中THOR_EXTERNAL_AUTH_SERVICE_END_POINT_URL参数。

cd /opt/hyper_tuner/tool/nginx/conf

修改nginx.conf 中THOR_EXTERNAL_AUTH_SERVICE_END_POINT_URL=http://127.0.0.1:8002/user-management/api/v2.2/。修改8002端口号,与步骤1修改端口号一致。

步骤4 重启服务。

systemctl restart hyper_tuner_nginx

systemctl restart gunicorn_sys

systemctl restart thor

----结束

4.3.4 采集 MySQL Trace 数据

本节以为MySQL源码为例,描述为 /home/mysql-8.0.17/sql/sql_parse.cc文件中dispatch_command函数添加trace的操作步骤。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 291

Page 300: 2.3.T10 鲲鹏开发套件插件工具(VSCode

须知

下文中的/home/mysql-8.0.17统一指代的是mysql源代码的根目录,可根据自己的源代码目录修改调整

步骤1 创建function-tp.h文件。

执行命令mkdir /home/mysql-8.0.17/trace, 在/home/mysql-8.0.17下面创建一个trace目录,在/home/mysql-8.0.17/trace下面创建文件function-tp.h。

#undef TRACEPOINT_PROVIDER#define TRACEPOINT_PROVIDER function_trace#undef TRACEPOINT_INCLUDE#define TRACEPOINT_INCLUDE "trace/function-tp.h"#if !defined(_FUNCTION_TP_H) || defined(TRACEPOINT_HEADER_MULTI_READ)#define _FUNCTION_TP_H#include <lttng/tracepoint.h>TRACEPOINT_EVENT( function_trace, function_enter, TP_ARGS( char *, function_name ), TP_FIELDS( ctf_string(funcname, function_name) ))TRACEPOINT_EVENT( function_trace, function_exit, TP_ARGS( char *, function_name ), TP_FIELDS( ctf_string(funcname, function_name) ))#endif#include <lttng/tracepoint-event.h>

步骤2 创建function-tp.c文件。

在相同目录 /home/mysql-8.0.17/trace 下创建源文件function-tp.c。

#define TRACEPOINT_CREATE_PROBES#define TRACEPOINT_DEFINE#include "function-tp.h"

步骤3 编译动态库。

执行以下命令进行编译。

gcc -I/home/mysql-8.0.17 -fpic -c -o function-tp.o function-tp.c

gcc -Wl,--no-as-needed -o lttng-ust-function.so -shared -fpic function-tp.o -ldl-llttng-ust

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 292

Page 301: 2.3.T10 鲲鹏开发套件插件工具(VSCode

执行完以上步骤就编译成功了一个提供tracepoint函数的动态链接库。

步骤4 封装tracepoint函数,对外暴露更友好接口

在/home/mysql-8.0.17/trace下创建function_trace.h

代码如下:

#ifndef _FUNCTIONTRACE_h_#define _FUNCTIONTRACE_h_#define FUNC_TRACE(funcname) \ FunctionTrace lttng_func_trace(funcname, funcname)class FunctionTrace {

public:

FunctionTrace(const char *category, const char *name); ~FunctionTrace();private: const char *category_; const char *name_;};#endif

同时,在/home/mysql-8.0.17/trace下创建function_trace.cc的文件

#include <sys/time.h>#define TRACEPOINT_DEFINE#define TRACEPOINT_PROBE_DYNAMIC_LINKAGE#include "trace/function-tp.h"#include "trace/function_trace.h"

FunctionTrace::FunctionTrace(const char *category, const char *name) : category_(category), name_(name) { tracepoint(function_trace, function_enter, const_cast<char *>(name_));}

FunctionTrace::~FunctionTrace() { tracepoint(function_trace, function_exit, const_cast<char *>(name_));}

步骤5 业务代码中加入需要打点信息,跟踪业务逻辑。

打开MySQL源码的sql目录下的sql_parse.cc,在代码 后一个#include后添加如下代码。

#include "trace/function_trace.h"

步骤6 在sql_parse.cc中添加参数。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 293

Page 302: 2.3.T10 鲲鹏开发套件插件工具(VSCode

在sql_parse.cc中找到调用dispatch_command的地方,在函数开头添加FUNC_TRACE("dispatch_command")

步骤7 修改CMakeLists.txt文件。

在/home/mysql-8.0.17/sql中打开CMakeLists.txt, 添加function_trace.cc到如下图所示的位置,让该源文件参与mysql编译。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 294

Page 303: 2.3.T10 鲲鹏开发套件插件工具(VSCode

在如下图所示的位置,添加dl动态库到sql_main中

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 295

Page 304: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤8 初始化MySQL。

重新编译MySQL,安装部署后,执行必要的初始化命令后,使用如下命令启动LD_PRELOAD="/home/mysql-8.0.17/trace/lttng-ust-function.so" mysqld --defaults-file=/etc/my.cnf 。

步骤9 检测trace事件是否生效。

lttng create hellotest1

lttng enable-event -u function_trace:*

lttng add-context --userspace --type vtid --type vpid

lttng start

用mysql –h 127.0.0.1 –uroot –pxxx进入mysql client,执行一些sql语句。

lttng stop

lttng destroy

执行babeltrace /root/lttng-traces/hellotest1-20210505-104018,如果出现如下的回显就表示已经OK。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 296

Page 305: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤10 在/etc/sudoers.d/malluma_sudoers文件的末尾增加lttng和babeltrace的免密执行权限。

echo 'malluma ALL=(root) NOPASSWD:/usr/local/bin/lttng' >> /etc/sudoers.d/malluma_sudoers

echo 'malluma ALL=(root) NOPASSWD:/usr/bin/babeltrace' >> /etc/sudoers.d/malluma_sudoers

----结束

4.3.5 创建用户

前提条件

以管理员用户成功登录鲲鹏性能分析工具。

说明

只有管理员用户(tunadmin)可以执行创建、修改和删除用户操作。

操作步骤

步骤1 单击“鲲鹏性能分析插件”菜单右侧的“更多操作…” ,在下拉菜单中选择“用户管理”。

打开设置界面。

步骤2 点击“创建用户”。

打开“创建用户”界面,如图4-170所示,需要配置的参数如表4-113所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 297

Page 306: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-170 创建用户

表 4-113 创建用户参数说明

参数 说明

用户名 输入新建用户的名称。用户名需要满足如下要求:

● 用户名以英文字母开头

● 默认长度范围为:6~32● 可以包含字母、数字、中划线(-)和下划线(_)

管理员密码 输入管理员用户的密码。

密码 输入新建用户的密码。密码需要满足如下复杂度要求:

● 密码长度为8~32个字符

● 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上的字符

● 密码不能是用户名或用户名的逆序

● 密码不能在弱口令字典中

确认密码 再次输入设置的密码。

说明

普通用户在创建时设置初始密码,在首次登录时强制要求重置密码。为了保证安全,用户应定期修改自己的登录密码。

步骤3 参考表4-113配置新用户后,单击“确认”。

新创建的用户会出现在“用户管理”页面的用户列表中。

可单击指定用户“操作列”对应的操作:

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 298

Page 307: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 修改密码:输入旧密码和新密码后修改管理员用户密码。

● 重置密码:输入管理员密码和新密码后重置用户密码。

● 删除:输入管理员密码后删除用户。删除用户后,该用户相关的所有历史数据都会被删除,请谨慎操作。

说明

如果用户下存在工程,管理员不可以删除用户,必须先删除用户下的工程后才可删除。

----结束

4.3.6 管理弱口令字典弱口令通常是指容易被别人猜测到或被破解工具破解的口令。密码的设置或修改时如果设置的密码是弱口令字典中的口令,则系统会强制用户重新设置,以提升用户密码的安全性。

前提条件

已成功登录鲲鹏性能分析工具。

说明

● 管理员用户(tunadmin)可以添加和删除弱口令,普通用户只能查看弱口令。

● 多可添加1000条弱口令。

操作步骤

步骤1 单击“鲲鹏性能分析插件”菜单右侧的“更多操作…” ,在下拉菜单中选择“弱口令字典”。

打开“弱口令字典”页面。

步骤2 单击“添加弱口令”

打开“添加弱口令”对话框。

步骤3 在文本框中输入需要添加的弱口令。弱口令需要满足如下要求:

● 长度为8~32个字符

● 至少包含以下字符中的两种:

– 大写字母:A~Z– 小写字母:a~z– 数字:0~9– 特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/?

步骤4 单击“确认”添加弱口令。

步骤5 如需删除弱口令,单击对应弱口令“操作”列的“删除”。在弹出的“删除弱口令”对话框中单击“确认”。

----结束

4.3.7 管理服务证书

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 299

Page 308: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.7.1 Agent 服务证书管理

Agent服务证书,即鲲鹏性能分析工具的服务端和Agent端之间通讯的证书。

前提条件

已成功安装系统性能分析并登录鲲鹏性能分析插件。

说明

管理员用户(tunadmin)可以执行生成证书、更换证书和更换工作密钥的操作,普通用户只能查看Agent服务证书信息。

查看 Agent 服务证书信息

步骤1 右键单击“系统性能分析”,在菜单选项中单击“Agent服务证书”。

打开“Agent服务证书”页面。

步骤2 在如图4-171所示的“Agent服务证书”界面中查看Agent服务证书,界面参数描述如表4-114所示。

图 4-171 Agent 服务证书

表 4-114 参数说明

参数 说明

节点IP 显示节点IP地址。

节点别名 显示节点别名。

证书名称 显示证书名称。

证书到期时间 显示证书到期时间。

状态 显示证书当前状态。

● 有效:证书剩余有效时间超过证书自动告警时间。

● 即将过期:证书剩余有效时间小于等于证书自动告警时间。

● 已过期:已过证书到期时间。

说明

● 工具每天凌晨2点自动检查并更新证书状态。

● Agent服务证书自动告警时间默认为30天。管理员用户可以单击

“鲲鹏性能分析插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“公共配置”,手动配置“Agent服务证书过期告警阈值”,可配置范围为7~180天。

操作 支持更换证书和更换工作密钥操作。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 300

Page 309: 2.3.T10 鲲鹏开发套件插件工具(VSCode

----结束

生成和更换证书

SSL证书通过在Agent与Hyper Tuner Server之间建立一条SSL安全通道,实现数据信息在Agent和Hyper Tuner Server之间的加密传输,可以防止数据信息的泄漏。为提高安全性,建议用户定期更新证书,保证证书的有效性。

须知

● 不支持在分析任务执行过程中更换证书。

● 请在生成证书的当日完成证书的更换。

步骤1 在“Agent服务证书”界面,单击“生成证书”。

步骤2 单击节点“操作”列的“更换证书”。

打开“更换证书”对话框,如图4-172所示,参数说明如表4-115所示。

图 4-172 更换证书

表 4-115 更换证书参数说明

参数 说明

节点IP 显示节点服务器的IP地址。

用户名 显示安装节点的用户名,默认为root。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 301

Page 310: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

认证方式 选择认证方式。可选择:

● 口令认证

● 密钥认证

说明选择“密钥认证”时需要在安装鲲鹏性能分析工具的服务器上设置SSH认证信息,详细操作请参见“常用操作 > 设置节点服务器SSH认证信息”章节。

口令 输入添加节点时使用的用户密码。

说明“认证方式”选择“口令认证”时显示该参数。

私钥文件 输入登录节点服务器的SSH私钥文件的绝对路径。

说明“认证方式”选择“密钥认证”时显示该参数。

密码短语 输入登录节点服务器的SSH私钥文件的口令。如果未配置SSH私钥口令可省略该参数。

说明“认证方式”选择“密钥认证”时显示该参数。

步骤3 单击“确定”完成证书的更换。

----结束

更换工作密钥

工作密钥用于加密服务端和Agent端的私钥文件。为提高系统安全性,建议定期更新。

须知

不支持在分析任务执行过程中更换工作密钥。

步骤1 在页面右上方 菜单选项中单击“Agent服务证书”。

步骤2 单击节点“操作”列的“更换工作密钥”。

打开“更换工作密钥”对话框,如图4-173所示,参数说明如表4-116所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 302

Page 311: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-173 更换工作密钥

表 4-116 更换工作密钥参数说明

参数 说明

节点IP 显示节点服务器的IP地址。

用户名 显示安装节点的用户名,默认为root。

认证方式 选择认证方式。可选择:

● 口令认证

● 密钥认证

说明选择“密钥认证”时需要在安装鲲鹏性能分析工具的服务器上设置SSH认证信息,详细操作请参见“常用操作 > 设置节点服务器SSH认证信息”章节。

口令 输入添加节点时使用的用户密码。

说明“认证方式”选择“口令认证”时显示该参数。

私钥文件 输入登录节点服务器的SSH私钥文件的绝对路径。

说明“认证方式”选择“密钥认证”时显示该参数。

密码短语 输入登录节点服务器的SSH私钥文件的口令。如果未配置SSH私钥口令可省略该参数。

说明“认证方式”选择“密钥认证”时显示该参数。

步骤3 单击“确定”完成工作密钥的更换。

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 303

Page 312: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.7.2 内部通信证书管理

内部通信证书,即Java性能分析的内部模块之间通讯的证书。

前提条件

已成功安装Java性能分析并登录鲲鹏性能分析插件。

说明

只有管理员用户(tunadmin)可以执行刷新工作密钥的操作。普通用户只能查看内部通信证书信息。

查看内部通信证书信息

内部证书用于服务器与目标环境以及服务器与Agent之间TLS通信。

步骤1 右键单击“Java性能分析”,在菜单选项中单击“内部通信证书”。

打开“内部通信证书”页面。

步骤2 在如图4-174所示的“内部通信证书”界面中查看内部通信证书信息,界面参数描述如表4-117所示。

图 4-174 内部通信证书

表 4-117 参数说明

参数 说明

证书名称 显示证书名称。

证书类型 显示证书类型。

证书到期时间 显示证书到期时间。

状态 显示证书当前状态。

● 有效:证书剩余有效时间超过证书自动告警时间。

● 即将过期:证书剩余有效时间小于等于证书自动告警时间。

● 已过期:已过证书到期时间。

说明

● 工具每天凌晨2点自动检查并更新证书状态。如果当前证书即将过期或者已过期,工具将自动更新内部通信证书。

● 内部通信证书自动告警时间默认为90天。管理员用户可以右键单击“Java性能分析”,在菜单选项中单击“Java性能分析配置”,手动配置内部通信证书自动告警时间,可配置范围为7~180天。

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 304

Page 313: 2.3.T10 鲲鹏开发套件插件工具(VSCode

刷新工作密钥

须知

不支持在证书更新过程中刷新工作密钥。

工作密钥用于对软件内需要保护的数据进行加密保护。为提高系统安全性,建议定期更新。

步骤1 右键单击“Java性能分析”,在菜单选项中单击“工作密钥”。

打开“工作密钥”页面。

步骤2 单击“刷新工作密钥”按钮更新工作密钥。

说明

一天只能刷新一次工作密钥。

----结束

4.3.7.3 如何管理 Web 服务端证书

Web服务端证书用于客户端浏览器和Web服务器之间的通讯,实现数据信息在客户端和Web服务器之间的加密传输,可以防止数据信息的泄露。为提高安全性,建议替换成自己的证书,并及时更新证书,保证证书的有效性。

前提条件

已成功安装并登录鲲鹏性能分析插件。

说明

管理员用户(tunadmin)可以执行生成CSR文件、导入证书、更换工作密钥和重启服务的操作。普通用户只能查看Web服务端证书信息。

查看当前 Web 端服务证书

步骤1 单击“鲲鹏性能分析插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“Web端服务证书”。

打开“Web服务端证书”页面。

步骤2 查看证书信息,如图4-175所示,界面参数描述如表4-118所示。

图 4-175 Web 服务端证书信息

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 305

Page 314: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-118 Web 服务端证书参数说明

参数 说明

证书名称 显示证书名称。

证书到期时间 显示证书到期时间。

状态 显示证书的当前状态。

有效:证书剩余有效时间超过证书过期告警阈值。

即将过期:证书剩余有效时间小于或等于证书过期告警阈值。

已过期:已过证书到期时间。

说明

● 工具每天自动检查并更新证书状态。

● Web服务证书自动告警时间默认为90天。管理员用户可以单击

“鲲鹏性能分析插件”菜单右侧“视图和更多操作…” ,在下拉菜单中选择“公共配置”,手动配置“Web服务证书过期告警阈值”,可配置范围为7~180天。

操作 ● 生成CSR文件

说明CSR(Certificate Signing Request)是证书请求文件。证书申请者在申请数字证书时,由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,即证书。

● 导入Web服务器证书

● 更换工作密钥

● 重启服务

----结束

自定义服务器证书信息并导入

步骤1 在“Web服务端证书”界面中单击“生成CSR文件”。

打开“生成CSR文件”对话框,如图4-176所示,界面参数描述如表4-119所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 306

Page 315: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-176 生成 CSR 文件

表 4-119 CSR 文件参数说明

参数 说明

国家 使用者所在的国家代号。

仅支持字母(如:CN)。长度为2个字符,为必填项。

省份 使用者所在的省份。

支持字母、数字、连字符、下划线、句点和空格, 大长度128个字符。

城市 使用者所在的城市。

支持字母、数字、连字符、下划线、句点和空格, 大长度128个字符。

公司 使用者所在的公司。

支持字母、数字、连字符、下划线、句点和空格, 大长度64个字符。

部门 使用者所在部门。

支持字母、数字、连字符、下划线、句点和空格, 大长度64个字符。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 307

Page 316: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

常用名 使用者的名称。

支持字母、数字、连字符、下划线、句点和空格, 大长度64个字符,为必填项。

步骤2 单击“确认”生成CSR文件。

步骤3 将导出的CSR文件发往SSL证书颁发机构,并申请SSL证书。

获取到正式的证书后,保存到本地。

说明

用户也可以使用其根证书进行自签名获取正式的证书。

步骤4 单击“导入证书”。

弹出“导入证书”对话框。

步骤5 单击“导入”,选择需要导入的证书文件。

说明

● 导入的证书文件不得大于1MB,支持的格式为*.crt、*.cer、*.pem。

● 步骤步骤1中生成的CSR文件与向CA机构申请的服务器证书是一一对应的,在导入服务器证书之前请不要再次生成新的CSR文件,否则需要向CA机构重新申请服务器证书。

● 导入的SSL证书如果不是从正式的证书颁发机构获取,而是用户自己使用工具生成,在导入该SSL证书后,还需要确认客户端浏览器中是否已存在对应的根证书。

步骤6 单击“确认”导入Web服务端证书。

步骤7 单击“更多 > 重启服务”使证书生效。

说明

用户手动在服务器上重启Nginx服务,证书不会生效,必须在Web上进行重启操作。

----结束

更新工作密钥

工作密钥用于加密启动Nginx服务的口令,根密钥用于加密工作密钥。为提高系统安全性,建议定期更新。

步骤1 在“Web服务端证书”界面中单击“更多 > 更换工作密钥”。

步骤2 (可选)单击“更多 > 重启服务”重启Nginx服务使工作密钥生效。如果不立即重启,工作密钥会在服务下次重启后自动生效。

----结束

4.3.8 反馈建议

如对本插件有任何建议,请执行以下步骤反馈。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 308

Page 317: 2.3.T10 鲲鹏开发套件插件工具(VSCode

操作步骤

步骤1 在鲲鹏性能分析插件首页Banner上单击“上鲲鹏社区,反馈建议”,或者单击界面右

下角的 。

在浏览器中打开“建议反馈”页面,如图4-177所示。

图 4-177 建议反馈

说明

如弹出“连接失败”提示框,请按照提示排除故障。

步骤2 在“建议反馈”页面上按要求填写问题详情及邮箱地址,选择“已阅读并同意 《隐私政策声明》”,然后单击“提交”。

----结束

4.3.9 普通用户连接鲲鹏性能分析工具当用户没有在服务器上部署工具时,单击插件界面上的“点击此处部署”开始部署安装鲲鹏性能分析工具。

在安装过程中配置目标服务器参数时,若想通过操作系统的普通用户来安装工具,该普通用户需要满足以下要求:

1. 创建home目录。mkdir /home/xxx

2. 设置新创建的目录所属者为xxx。chown -R xxx:yy /home/xxx

3. 设置用户所在的用户组为wheel。usermod -G wheel xxx

说明

命令中xxx为普通用户的用户名,yy为普通用户的组名。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 309

Page 318: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.10 添加节点(系统性能分析及调优助手)节点是一组用于性能数据的采集的组件。系统性能分析工具通过“添加节点”在待分析的服务器上完成源数据的采集。安装鲲鹏性能分析插件的服务器已默认安装了节点,如果待分析的服务器与安装工具的服务器是同一个,请跳过本章节。

前提条件

已成功安装鲲鹏性能分析工具。

说明

● 多可添加100个节点,包括在服务器上默认安装的节点。

● 不能将Docker容器环境添加为节点。

操作步骤

步骤1 右键单击“系统性能分析”或“调优助手”,在菜单选项中单击“节点管理”。

打开“节点管理”页面。

步骤2 单击“添加节点”。

打开“添加节点”对话框,以默认root用户为例,如图4-178,参数描述如表4-120所示。

图 4-178 添加节点

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 310

Page 319: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-120 添加节点参数说明

参数 说明

节点名称(可选) 输入节点名称。默认为节点服务器的IP地址。名称需要满足如下要求:

● 以英文字母开头

● 长度为6~32个字符

● 可包含字母、数字、英文点(.)和下划线(_)

安装路径 输入安装节点的绝对路径,默认为“/opt”。

节点IP 输入待安装节点的服务器IP地址。

SSH端口 输入节点服务器SSH端口,默认为“22”。取值范围1~65535。

用户名 输入登录节点服务器的用户名,默认为“root”。

说明为保证SSH通道安全,建议您使用普通用户进行节点的安装部署。

认证方式 选择认证方式。可选择:

● 口令认证

● 密钥认证

说明选择“密钥认证”时需要在安装鲲鹏性能分析工具的服务器上设置SSH认证信息,详细操作请参见《鲲鹏性能分析工具 (系统性能分析) 用户指南》中“设置节点服务器SSH认证信息”章节。

口令 输入登录节点服务器的用户密码。

说明

● “认证方式”选择“口令认证”时显示该参数。

● 使用root用户安装的节点需要输入root口令,使用普通用户安装的节点需要输入用户口令和root口令。

私钥文件 输入登录节点服务器的SSH私钥文件的绝对路径。

说明“认证方式”选择“密钥认证”时显示该参数。

密码短语(可选) 输入登录节点服务器的SSH私钥文件的口令。如果未配置SSH私钥口令可省略该参数。

说明“认证方式”选择“密钥认证”时显示该参数。

步骤3 参考表4-120配置节点参数后,单击“确认”完成节点的添加。

新添加的节点会出现在“节点管理”页面节点列表的末尾。

可对添加的节点执行如下操作:

● 修改:修改节点名称。

● 删除:删除节点。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 311

Page 320: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

– 服务器上默认安装的节点不可删除。

– 删除节点后新建的分析任务将不再分析此节点,但仍可查看此节点历史分析报告(如果节点被工程占用,请修改工程后再删除节点)。

– 使用root用户安装的节点,在删除时需要输入root用户口令。

使用普通用户安装的节点,在删除时需要输入用户口令和root用户口令。

● 查看安装日志:查看系统缺少的组件及对应处理意见,日志内容支持拷贝和下载。

说明

仅添加多节点的环境可以查看安装日志。

● 运行目录/日志目录容量监控:显示节点磁盘空间容量的告警和恢复信息。

说明

– 运行目录的 大使用空间限定为2GB,运行日志目录的 大使用空间限定为150MB。

– 当“磁盘空间剩余容量”小于“ 大使用空间”的10%,或者“工具使用空间”达到90%,或者sever端磁盘剩余空间小于5G时,后台会停止正在该节点上运行的任务。如果任务不包含该节点,或任务包含了该节点但任务已处于分析期间,不停止该任务。新建的任务如果包括该节点则创建失败。

– 当“磁盘空间剩余容量”小于“ 大使用空间”的20%,或者“工具使用空间”达到“ 大使用空间”的80%,将产生告警。

– 当“磁盘空间剩余容量”恢复到大于“ 大使用空间”的25%,并且“工具使用空间”小于“ 大使用空间”的75%,告警将恢复,界面显示告警恢复。

----结束

4.3.11 添加目标环境(Java 性能分析)分析辅助软件是一款支持部署到多台服务器目标环境上,实现对整个业务集群的数据采集和优化的组件。

前提条件● 已成功登录Java性能分析。

● 待安装分析辅助软件的服务器已开启sshd。

● 已安装JDK并配置环境变量。

操作步骤

步骤1 选择Java性能分析。

步骤2 展开“Java性能分析”功能菜单,点击“目标环境列表”右侧的 按钮。

打开“添加目标环境”界面,如图4-179所示,参数如表4-121所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 312

Page 321: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-179 添加目标环境

表 4-121 添加目标环境参数说明

参数 说明

目标环境类型

选择需要添加的目标环境类型,可选“远程服务器”和“本地服务器”。

服务器IP地址 输入待安装分析辅助软件的远程服务器的IP地址,详情请参考“常用操作 > 查询服务器物理IP地址“。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 313

Page 322: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

端口 输入远程服务器的SSH服务端口号。默认为22。

说明如果在Docker容器中部署分析辅助软件,需要在启动Docker容器时设置“-p映射端口号:22”参数,然后在此处输入Docker的SSH服务所映射的宿主机端口号。

例如:

执行如下命令启动Docker:docker run -di --name dockername -p 20086:22 --privileged=trueimageid /usr/sbin/init则在“端口”文本框中输入:20086

用户名 输入登录远程服务器的用户名。

说明

● 操作系统管理员用户部署的分析辅助软件可以获取服务器上所有已运行的Java进程。

● 非操作系统管理员用户部署的分析辅助软件只能获取服务器上该用户权限下的已运行的Java进程。

● 为保证SSH通道安全,建议您使用非root用户部署分析辅助软件。

密码 输入登录远程服务器的用户密码。

步骤3 参考表4-121配置参数后,单击“添加目标环境”。

弹出操作确认对话框,单击“确认”完成目标环境的添加。

说明

指纹为要部署分析辅助软件的服务器的SSH公钥指纹。

----结束

4.3.12 创建分析任务

4.3.12.1 创建系统分析任务(系统性能分析)

前提条件

当前工程下至少存在一个“在线”状态的节点。

操作步骤

步骤1 单击“系统性能分析”,选择“请新建工程”。

打开“新建工程”页面,如图4-180所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 314

Page 323: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-180 新建工程

输入工程名称、选择场景类型和节点完成工程的创建。

步骤2 点击工程名称右侧的 。

打开“新建任务”页面,如图4-181所示。

图 4-181 新建任务

输入任务名称、选择分析对象和分析类型、配置相关参数并点击确认可以完成分析任务的创建。

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 315

Page 324: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.12.2 创建 Java 分析任务

前提条件● 已成功添加目标环境且目标环境处于在线状态。

● 创建在线分析任务时,运行Java进程的JDK版本要求为JDK 8及以上。

● 创建采样分析任务时,运行Java进程的JDK版本要求为JDK 11及以上。

操作步骤

步骤1 单击目标环境名称。

打开Java进程列表,如图4-182所示。

图 4-182 Java 进程列表

步骤2 选择进程进行“在线分析”或“采样分析”,完成分析任务的创建。

步骤3 进入“在线分析”或“采样分析”详情页面,即可查看相关分析数据。

说明

在线分析的栈跟踪、采样分析的堆栈数据可使用快捷键进行查看:

● TAB键可以切换焦点至树组件的文本区域。

● 上下键可以在并列的节点移动,左右键可以展开收起节点及跨层级移动焦点。

● 当焦点在节点名称上时,按下ENTER或SPACE键可选中或取消选中该节点。

----结束

4.3.12.3 创建系统诊断任务

步骤1 单击“系统诊断”,选择“请新建工程”。

打开“新建工程”页面,如图4-183所示。

图 4-183 新建工程

输入工程名称和节点完成工程的创建。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 316

Page 325: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 点击工程名称右侧的 。

打开“新建任务”页面,如图4-184所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 317

Page 326: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-184 新建内存任务

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 318

Page 327: 2.3.T10 鲲鹏开发套件插件工具(VSCode

输入任务名称、选择模式和填写应用路径、选择诊断内容、配置相关参数并点击确认可以完成分析任务的创建。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 319

Page 328: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-185 创建网络诊断任务

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 320

Page 329: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.13 安装根证书(Java 性能分析)

Windows使用Java性能分析工具创建在线分析任务前,请先参考以下步骤安装根证书。

步骤1 选择待分析的目标环境,在Java进程列表中选择想要分析的进程,单击“在线分析”。

图 4-186 Java 进程列表

步骤2 打开“安装根证书”对话框,如图4-187所示。

图 4-187 安装根证书

步骤3 按照对话框“1、下载根证书”提示,点击链接,下载证书到本机,进入“证书导入向导”对话框。

步骤4 选择存储在本地计算机,单击“下一步”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 321

Page 330: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-188 证书导入向导

步骤5 选择“将所有的证书都放入下列存储”,在“选择证书存储”对话框中选择“受信任的根证书颁发机构”,确定后单击“下一步”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 322

Page 331: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-189 选择证书存储

步骤6 按照提示完成证书导入向导,系统提示“导入成功”后单击“确定”,完成证书安装。

说明

证书导入成功后,重启VSCode生效。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 323

Page 332: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-190 导入成功

----结束

MacOS

步骤1 选择待分析的目标环境,在Java进程列表中选择想要分析的进程,单击“在线分析”。

图 4-191 Java 进程列表

步骤2 打开“安装根证书”对话框,如图4-192所示。

图 4-192 安装根证书

步骤3 按照对话框“1、下载根证书”提示,点击链接,下载证书到本机。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 324

Page 333: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-193 下载证书

步骤4 打开钥匙串访问,将ca.crt证书拖入其中。

图 4-194 证书放入钥匙串访问

步骤5 将证书改为“始终信任”。

在证书上单击右键选择 “显示简介”,将使用“系统默认”改为“始终信任”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 325

Page 334: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-195 证书简介

图 4-196 证书配置修改

步骤6 更新配置。

点击左上角关闭按钮输入开机密码后 点击更新设置。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 326

Page 335: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-197 更新配置

步骤7 重启任务,再次点击采样分析。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 327

Page 336: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-198 新建采样分析

----结束

4.3.14 优化建议指导

4.3.14.1 系统配置

4.3.14.1.1 升级网卡驱动

升级网卡驱动

步骤1 下载网卡驱动包。

下载地址:https://support.huawei.com/enterprise/zh/software/250631875-ESW2000134264

步骤2 上传网卡驱动包并解压。

图 4-199 上传网卡驱动包

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 328

Page 337: 2.3.T10 鲲鹏开发套件插件工具(VSCode

driver为kmod驱动存放目录,firmware为网卡固件存放目录,tools为hinicadm网卡工具目录。

在安装驱动时,根据实际情况选择配套的工具和驱动包。本次选择driver/linux/nic/CentOS7.6_arm/kmod-hinic-2.3.2.1_4.14.0_115-1.el7.aarch64.rpm。

步骤3 安装网卡工具hinicadm,显示如下信息表示网卡工具安装成功。

rpm –ivh tools/linux_arm/nic/hinicadm-2.3.2.1-1.aarch64.rpm

图 4-200 安装网卡工具

步骤4 卸载自带网卡驱动包。

rmmod hinic

步骤5 进入驱动包路径。

cd /driver/linux/nic/CentOS7.6_arm/

步骤6 安装网卡驱动,显示如下信息表示网卡安装成功。

rpm -ivh kmod-hinic-2.3.2.1_4.14.0_115-1.el7.aarch64.rpm

图 4-201 安装网卡驱动

步骤7 加载驱动包。

modprobe hinic

步骤8 查看驱动版本信息,验证是否安装成功。

hinicadm version -i hinic0

图 4-202 查看驱动版本信息

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 329

Page 338: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.14.1.2 中断 NUMA 绑核

中断 NUMA 绑核

步骤1 关闭irqbalance。

若要对网卡进行绑核操作,则需要关闭irqbalance。

1. 执行以下命令,停止irqbalance服务,重启失效。

systemctl stop irqbalance.service2. 执行以下命令,关闭irqbalance服务,永久有效。

systemctl disable irqbalance.service3. 执行以下命令,查看irqbalance服务状态是否已关闭。

systemctl status irqbalance.service

步骤2 执行以下命令,查看网卡pci设备号,举例当前网卡名为enp131s0。

ethtool -i enp131s0

查询结果如下。

driver:hinicversion:2.3.2.1firmware-version:2.3.2.1

步骤3 执行以下命令,查看pcie网卡所属NUMA node。

lspci -vvvs <bus-info>

查询结果如下。

步骤4 执行以下命令查看NUMA node对应的core的区间,例如此处就可以绑定到48~63.

lscpu

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 330

Page 339: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤5 进行中断绑核操作,1822网卡上共计有16个队列,将这些中断逐个绑定至所在NumaNode的16个core上(此处举例中断绑定至NUMA node1 对应的48~63上面)。

脚本内容如下:

#!/bin/bashirq_list=(`cat /proc/interrupts | grep enp131s0 | awk -F: '{print $1}'`)cpunum=48 # 修改为所在node的第一个Corefor irq in ${irq_list[@]}doecho $cpunum > /proc/irq/$irq/smp_affinity_listecho `cat /proc/irq/$irq/smp_affinity_list`(( cpunum+=1 ))done

执行以下命令编辑脚本。

bash smartIrq.sh

步骤6 利用脚本查看是否绑核成功。

脚本内容如下。

#!/bin/bash# 网卡名intf=$1log=irqSet-`date "+%Y%m%d-%H%M%S"`.log# 可用的CPU数cpuNum=$(cat /proc/cpuinfo |grep processor -c)# RX TX中断列表irqListRx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')irqListTx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')# 绑定接收中断rx irqfor irqRX in ${irqListRx[@]}docat /proc/irq/${irqRX}/smp_affinity_listdone# 绑定发送中断tx irqfor irqTX in ${irqListTx[@]}docat /proc/irq/${irqTX}/smp_affinity_listdon

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 331

Page 340: 2.3.T10 鲲鹏开发套件插件工具(VSCode

执行脚本查看是否绑核成功。

sh irqCheck.sh enp131s0

查询结果如下。

----结束

4.3.14.2 热点函数

已知函数给出优化建议● 函数名或事件:__crc32c_le

参考链接:https://bbs.huaweicloud.com/forum/thread-86540-1-1.html● 函数名或事件:headle_ipi

参考链接:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a6211caa634da39d861a47437ffcda8b38ef421b

● 函数名或事件:ip_idents_reserve参考链接:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a6211caa634da39d861a47437ffcda8b38ef421b

4.3.14.3 系统性能

4.3.14.3.1 %USER

?.1. TLB Miss 高

增大 Page Size (64KB)

修改Linux内核编译选项,并重新编译(以CentOS为例)。

步骤1 获取内核源码,在内核源码所在路径下(如:/root/rpmbuild/BUILD/kernel-alt-4.14.0-115.el7a/linux-4.14.0-115.el7.0.1.aarch64),执行以下命令。

make menuconfig

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 332

Page 341: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 选择PAGESIZE参数为64K。Kernel Features-->Page size(64KB)

步骤3 参考以下链接重新编译安装内核。

https://bbs.huaweicloud.com/forum/thread-24362-1-1.html

----结束

?.2. page fault 高

增大 Page Size (64KB)

修改Linux内核编译选项,并重新编译(以CentOS为例)。

步骤1 获取内核源码,在内核源码所在路径下(如:/root/rpmbuild/BUILD/kernel-alt-4.14.0-115.el7a/linux-4.14.0-115.el7.0.1.aarch64),执行以下命令。

make menuconfig

步骤2 选择PAGESIZE参数为64K。Kernel Features-->Page size(64KB)

步骤3 参考以下链接重新编译安装内核。

https://bbs.huaweicloud.com/forum/thread-24362-1-1.html

----结束

4.3.14.3.2 %IOWAIT

?.1. 写比例高

存储 Cache 写机制调整为 write back

步骤1 重启机器,按下Ctrl+R,进入配置页面。

图 4-203 配置页面 1

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 333

Page 342: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 选择“Virtual Disks”中选项,按F2进入如下界面。

图 4-204 配置页面 2

步骤3 按下“Enter”,进入设置页面。

图 4-205 设置页面

----结束

?.2. 吞吐量小时延大

调整 RAID 级别和 RAID 参数

步骤1 服务器启动过程中,出现如下图所示的“Press <Ctrl><R> to Run MegaRAIDConfiguration Utility”提示信息时,按下Ctrl+R,进入“SAS3108 BIOSConfiguration Utility”界面,页签含义如表4-122所示。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 334

Page 343: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-206 BIOS 配置界面

表 4-122 页签说明

页签 说明

VD Mgmt 虚拟磁盘管理界面。

PD Mgmt 物理磁盘管理界面。

Ctrl Mgmt 控制器管理界面。

Properties RAID卡属性查询界面。

Foreign View 当检测到外部配置时,显示外部配置管理界面。

步骤2 进入“Create Virtual Driver”界面,如图4-207。

1. 按Ctrl+P或Ctrl+N切换到VD Mgmt页签。

2. 按“↑”、“↓”将光标移至“SAS3108 (Bus 0x01, Dev 0x00)”。

3. 按F2,在弹出的页面中选择“Create Virtual Driver”,按“Enter”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 335

Page 344: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-207 配置界面

步骤3 设置RAID级别。

1. 在“RAID Level”区域框按下“Enter”,并通过“↑”、“↓”选择RAID级别“RAID-0”。

说明

– 配置RAID 0、RAID 1、RAID 5、RAID 6可不进行该操作。

– 配置RAID 10、RAID 50、RAID 60需要进行该操作。

2. 按“↓”将光标迁移到“PD per Span”的输入框。

3. 输入单个Span要包含的硬盘数量。

步骤4 添加硬盘。

1. 按“↓”将光标迁移到“Drives”区域。

2. 按“↑”、“↓”移动光标,按“Enter”选择要添加到RAID的硬盘。

说明

选中硬盘的“ID”会显示为“[X]”。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 336

Page 345: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤5 设置RAID容量和名称。

1. 在“Size”区域中输入要设置的VD的容量。

说明

– 若不需要配置多个VD,可不设置RAID容量,在设置完名称后,可直接跳至步骤7。此时默认RAID的容量为 大值。

– 若要将Drive Group划分为多个VD,需要手工设置VD的容量。此处根据实际需求,可创建多个VD,每个“Drive Group” 多支持16个“Virtual Drive”。

2. 按“↓”将光标移至“Name”区域,设置RAID名称,并选择“OK”。

3. 弹出确认窗口,选择“OK”并按“Enter”返回到“VD Mgmt”界面。

步骤6 (可选)创建多个VD。

1. 创建Drive Group完成后,在“VD Mgmt”界面中,选择“Drive Group”并按“F2”,在弹出的列表中选择“Add New VD”,进入“Add VD in DriveGroup”界面。

2. 在“Size”中设置VD的容量,选中“OK”并按“Enter”,进入确认界面。

3. 选择“OK”并按“Enter”,返回“VD Mgmt”界面,创建VD完成。

步骤7 设置高级属性。

1. 按下“↓”选中“Advanced”,并按“Enter”,打开RAID高级属性设置界面。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 337

Page 346: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-208 高级属性设置界面

高级属性参数说明如下表所示。

表 4-123 高级属性参数说明

参数项 说明

Strip Size 每个硬盘上的数据条带的大小。

LSI SAS3108支持多种条带单元,包括64KB、128KB、256KB、512KB及1MB。配置RAID时一般采用默认值,默认配置为256KB。

Read Policy 虚拟磁盘数据的读策略,分以下两种:

– Normal:关闭预读取功能(No Read Ahead)。

– Ahead:使能预读取功能。控制器可以预读取顺序数据或预测需要即将使用到的数据并存储在Cache中。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 338

Page 347: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数项 说明

Write Policy 虚拟磁盘数据的写策略。LSI SAS3108不同版本的Firmware可配置的策略不同,主要区别是:

– 当LSI SAS3108的Firmware版本为4.270.00-4382及以下时,写策略分为以下三种:Write Back:当控制器Cache收到所有的传输数据后,将给主机返回数据传输完成信号。

Write Through:当磁盘子系统接收到所有传输数据后,控制器将给主机返回数据传输完成信号。

Write Back with BBU:在控制器无BBU(Battery BackupUnit)、BBU处于充放电状态、BBU损坏或Pinned/Preserved Cache达到RAID卡物理Cache容量的50%时,RAID控制卡将自动切换到Write Through模式。该设置为推荐设置的标准模式。

– 当LSI SAS3108的Firmware版本为4.650.00-6121及以上时,写策略分为以下三种Write Back:在RAID控制卡无BBU(Battery BackupUnit)、BBU处于充放电状态、BBU损坏或Pinned/Preserved Cache达到RAID卡物理Cache容量的50%时,RAID控制卡将自动切换到Write Through模式。该设置为推荐设置的标准模式。

Write Through:当磁盘子系统接收到所有传输数据后,控制器将给主机返回数据传输完成信号。

Always Write Back:当控制器Cache收到所有的传输数据后,将给主机返回数据传输完成信号。

说明“Always Write Back”模式下,当电容不在位或在充电状态下,RAID卡中DDR的写数据将会丢失。不推荐使用该模式。

I/O Policy 应用于特殊的虚拟磁盘读取,不影响预读取Cache。分以下两种:

– Direct:

▪ 在读场景中,直接从硬盘读取数据。(“Read Policy”设置为“Ahead”时除外,此时读数据经过RAID卡的Cache处理。)

▪ 在写场景中,写数据经过RAID卡的Cache处理。(“Write Policy”设置为“Write Through”时除外,此时写数据不经过RAID卡的Cache处理,直接写入硬盘。)

Cached:所有读和写均经过RAID卡Cache处理。仅在配置CacheCade 1.1时需要设置为此参数值,其他场景不推荐。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 339

Page 348: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数项 说明

Disk cachePolicy

物理磁盘Cache策略:

– Enable:读写过程中数据经过硬盘写Cache,使写性能提升,但当系统意外掉电时,如果没有保护机制,数据会丢失。

– Disable:读写过程中数据不经过硬盘写Cache,当系统意外掉电时,数据不会丢失。

Unchanged:保持当前磁盘Cache策略。

Emulation 设置虚拟扇区大小。

说明:

当LSI SAS3108的Firmware版本为4.660.00-8102及以上时,支持该参数。

Initialize 选中“Initialize”后,RAID创建完成后自动进行快速初始化操作。初始化会破坏RAID成员盘上数据。

选中后,会在前方显示“[X]”。

ConfigureHotSpare

为RAID配置热备盘。

选中后,会在前方显示“[X]”。

创建RAID 0时,该参数无效。

Disable BGI 关闭后台初始化功能。

说明:

当LSI SAS3108的Firmware版本为4.660.00-8102及以上时,支持该参数。

2. 按照实际情况设置RAID高级属性参数。

须知

初始化操作会导致硬盘数据被破坏,如果需要保留硬盘的原始数据,请不要选中“Initialize”选项。

3. 完成设置后,选择“OK”,按“Enter”,返回“Create New VD”界面。若选中了“Initialize”,初始化完成后,会弹出确认对话框,按“Enter”返回CU主界面。

步骤8 检查配置结果。

在CU主界面中,按“→”展开折叠信息查看详细配置情况。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 340

Page 349: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤9 按下ESC,退出CU配置界面,重启服务器。

----结束

4.3.14.3.3 %IRQ

?.1. 网络收发 IOPS 或流量高

网口中断绑核

步骤1 关闭irqbalance。

若要对网卡进行绑核操作,则需要关闭irqbalance。

1. 执行以下命令,停止irqbalance服务,重启失效。

systemctl stop irqbalance.service2. 执行以下命令,关闭irqbalance服务,永久有效。

systemctl disable irqbalance.service3. 执行以下命令,查看irqbalance服务状态是否已关闭。

systemctl status irqbalance.service

步骤2 执行以下命令,查看网卡pci设备号,举例当前网卡名为enp131s0。

ethtool -i enp131s0

查询结果如下。

driver:hinicversion:2.3.2.1firmware-version:2.3.2.1

步骤3 执行以下命令,查看pcie网卡所属NUMA node。

lspci -vvvs <bus-info>

查询结果如下。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 341

Page 350: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤4 执行以下命令查看NUMA node对应的core的区间,例如此处就可以绑定到48~63.

lscpu

步骤5 进行中断绑核操作,1822网卡上共计有16个队列,将这些中断逐个绑定至所在NumaNode的16个core上(此处举例中断绑定至NUMA node1 对应的48~63上面)。

脚本内容如下:

#!/bin/bashirq_list=(`cat /proc/interrupts | grep enp131s0 | awk -F: '{print $1}'`)cpunum=48 # 修改为所在node的第一个Corefor irq in ${irq_list[@]}doecho $cpunum > /proc/irq/$irq/smp_affinity_listecho `cat /proc/irq/$irq/smp_affinity_list`(( cpunum+=1 ))done

执行以下命令编辑脚本。

bash smartIrq.sh

步骤6 利用脚本查看是否绑核成功。

脚本内容如下。

#!/bin/bash# 网卡名intf=$1log=irqSet-`date "+%Y%m%d-%H%M%S"`.log# 可用的CPU数cpuNum=$(cat /proc/cpuinfo |grep processor -c)

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 342

Page 351: 2.3.T10 鲲鹏开发套件插件工具(VSCode

# RX TX中断列表irqListRx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')irqListTx=$(cat /proc/interrupts | grep ${intf} | awk -F':' '{print $1}')# 绑定接收中断rx irqfor irqRX in ${irqListRx[@]}docat /proc/irq/${irqRX}/smp_affinity_listdone# 绑定发送中断tx irqfor irqTX in ${irqListTx[@]}docat /proc/irq/${irqTX}/smp_affinity_listdon

执行脚本查看是否绑核成功。

sh irqCheck.sh enp131s0

查询结果如下。

----结束

4.3.14.3.4 %SOFT

?.1. 升级网卡驱动

升级网卡驱动

步骤1 下载网卡驱动包。

下载地址:https://support.huawei.com/enterprise/zh/software/250631875-ESW2000134264

步骤2 上传网卡驱动包并解压。

图 4-209 上传网卡驱动包

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 343

Page 352: 2.3.T10 鲲鹏开发套件插件工具(VSCode

driver为kmod驱动存放目录,firmware为网卡固件存放目录,tools为hinicadm网卡工具目录。

在安装驱动时,根据实际情况选择配套的工具和驱动包。本次选择driver/linux/nic/CentOS7.6_arm/kmod-hinic-2.3.2.1_4.14.0_115-1.el7.aarch64.rpm。

步骤3 安装网卡工具hinicadm,显示如下信息表示网卡工具安装成功。

rpm –ivh tools/linux_arm/nic/hinicadm-2.3.2.1-1.aarch64.rpm

图 4-210 安装网卡工具

步骤4 卸载自带网卡驱动包。

rmmod hinic

步骤5 进入驱动包路径。

cd /driver/linux/nic/CentOS7.6_arm/

步骤6 安装网卡驱动,显示如下信息表示网卡安装成功。

rpm -ivh kmod-hinic-2.3.2.1_4.14.0_115-1.el7.aarch64.rpm

图 4-211 安装网卡驱动

步骤7 加载驱动包。

modprobe hinic

步骤8 查看驱动版本信息,验证是否安装成功。

hinicadm version -i hinic0

图 4-212 查看驱动版本信息

----结束

4.3.14.4 进程线程性能

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 344

Page 353: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.3.14.4.1 %USER

?.1. TLB Miss 高

增大 Page Size (64KB)

修改Linux内核编译选项,并重新编译(以CentOS为例)。

步骤1 获取内核源码,在内核源码所在路径下(如:/root/rpmbuild/BUILD/kernel-alt-4.14.0-115.el7a/linux-4.14.0-115.el7.0.1.aarch64),执行以下命令。

make menuconfig

步骤2 选择PAGESIZE参数为64K。Kernel Features-->Page size(64KB)

步骤3 参考以下链接重新编译安装内核。

https://bbs.huaweicloud.com/forum/thread-24362-1-1.html

----结束

?.2. page fault 高

增大 Page Size (64KB)

修改Linux内核编译选项,并重新编译(以CentOS为例)。

步骤1 获取内核源码,在内核源码所在路径下(如:/root/rpmbuild/BUILD/kernel-alt-4.14.0-115.el7a/linux-4.14.0-115.el7.0.1.aarch64),执行以下命令。

make menuconfig

步骤2 选择PAGESIZE参数为64K。Kernel Features-->Page size(64KB)

步骤3 参考以下链接重新编译安装内核。

https://bbs.huaweicloud.com/forum/thread-24362-1-1.html

----结束

?.3. 编译器及编译选项

使用高版本 GCC

将Ubuntu系统中的GCC版本升级到GCC 10.1.0。

步骤1 获取GCC的 新源码包。

源码包获取地址:http://ftp.gnu.org/gnu/gcc/gcc-10.1.0

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 345

Page 354: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤2 执行以下命令解压安装包。

tar -xzvf gcc-10.1.0.tar.gz

步骤3 执行以下命令进入解压缩后的目录,并运行“download_prerequisites”脚本。

cd gcc-10.1.0/

./contrib/download_prerequisiles

说明

“download_prerequisites”脚本文件会进行下载、配置、安装依赖库。

步骤4 执行以下命令创建目录,并将所有输出放入该目录。

mkdir gcc_temp

cd gcc_temp

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 346

Page 355: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤5 执行以下命令进行编译安装。

1. 执行以下命令进行编译。

make -j32

说明

编译过程过程可能持续1~2小时,编译前请注意时间安排。

2. 进行安装。

– 以root用户执行以下命令进行安装。

make install– 以普通用户执行以下命令进行安装。

sudo make install

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 347

Page 356: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 4-213 安装过程

步骤6 安装后检查验证。

执行以下任意命令检查gcc版本信息。

gcc --version

gcc -v

g++ -v

说明

如果显示的gcc版本仍是以前的版本,就需要重启系统;或者执行以下命令查看gcc的安装位置:which gcc;然后执行以下命令查看版本信息 /usr/local/bin/gcc -v,通常gcc都安装在该处位置。

图 4-214 安装成功页面

----结束

4.3.14.4.2 %SYSTEM

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 348

Page 357: 2.3.T10 鲲鹏开发套件插件工具(VSCode

?.1. 内存消耗高

线程多,调整线程栈大小

步骤1 执行以下命令查看目前资源限制大小。

ulimit -a

默认情况下线程栈大小为8192(8MB),可以使用 ulimit -s xxx 命令修改线程默认栈大小。

步骤2 修改默认线程栈。

1. 检查默认线程栈大小为8MB。

2. 使用pthread_attr_setstack()修改栈大小,如下图修改栈大小为16MB,其中线程栈的空间从堆中进行分配。pthread_attr_t attr; //创建线程属性变量struct sched_param param;

pthread_attr_init(&attr); //初始化线程属性变量 pthread_attr_setstacksize (&attr, 16*1024*1024); //修改栈大小为16M

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 349

Page 358: 2.3.T10 鲲鹏开发套件插件工具(VSCode

pthread_attr_getschedparam(&attr, &param); //线程优先级param.sched_priority += 5;pthread_attr_setschedparam(&attr, &param)

3. 创建两个线程,使用默认栈大小执行。

4. 不使用任何线程。

5. 线程栈从进程栈中进行分配。

6. 关于进程栈和线程栈总结:

– 进程栈大小时执行时确定的,与编译链接无关。

– 进程栈大小是随机确认的,至少比线程栈要大,但不会超过2倍。

– 线程栈是固定大小的,可以使用ulimit -a 查看,使用ulimit -s 修改。

----结束

4.4 代码样例如表4-124所示的性能分析案例,旨在通过这些代码样例演示不同场景下性能分析过程,指导用户如何找到性能瓶颈点,并针对性的进行优化,进而提升应用程序和整个系统的性能。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 350

Page 359: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 4-124 案例说明

场景示例 场景说明 代码样例

示例1:触发SWAP程序

SWAP是Linux下的交换分区,类似Windows的虚拟内存,当物理内存不足时,系统可以把一些内存中不常用到的程序放入SWAP,解决物理内存不足的情况。本示例主要针对大量使用内存进而触发SWAP区域使用的情况,通过鲲鹏性能分析工具触发使用SWAP分区的警告,以此来提醒用户当前系统存在大量使用内存的程序,建议增加内存大小,或减少内存使用。

test_swap.c

示例2:矩阵分析

本示例主要针对for循环实现一维矩阵计算的程序进行优化,通过鲲鹏性能分析工具热点函数性能分析功能模块中热点函数的检测,发现矩阵计算的热点函数 - multiply,采用neon指令进行优化,并对比优化效果。

multiply.c、multiply_simd.c、multiply_start.sh

示例3:列访问循环性能工具检测优化

本示例基于二维数组循环遍历程序,通过鲲鹏性能分析工具访存分析功能,比较按行访问与按列访问Miss事件的分析结果,以此来说明按行访问可以优化CPU Cache命中效率。

cache_hit.c、cache_miss.c、miss_start.sh、hit_start.sh

示例4:锁频繁抢占

多线程程序,经常会存在锁频繁抢占问题,锁的争抢会导致CPU的资源浪费,可以基于实际的业务减少公共资源的抢占。本示例主要针对这一问题,通过鲲鹏性能分析工具资源调度和锁与等待分析功能来观测,建议用户分析业务逻辑减少锁的争抢,例如大锁变小锁,减少线程并发数等。

pthread_mutex.c

示例5:锁长期等待

多线程程序,经常存在锁不合理长期占用的问题。本示例主要针对这一问题,通过鲲鹏性能分析工具资源调度功能来观测,建议用户分析业务逻辑将不需要锁的计算移出互斥量加锁操作。

pthread_mutex_long.c

示例6:伪共享分析

多个CPU上的多个线程同时修改在同一个Cache Line上的变量,会产生伪共享falsesharing现象。本示例模拟了伪共享现象,主要通过鲲鹏性能分析工具访存分析中伪共享分析功能,观测到这一问题,通过定义变量时进行内存对齐的方式,解决了伪共享问题完成程序优化。

falsesharing.c、falsesharing_mod.c、falsesharing_start.sh

4.5 FAQ

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 351

Page 360: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.5.1 工具检测连接失败提示算法不匹配

现象描述

安装性能分析工具,点击“检测连接”提示算法不匹配。

可能原因

客户端算法与服务器端不匹配。

处理步骤

步骤1 使用SSH远程登录工具,以系统用户登录Linux操作系统命令行界面。

说明

该步骤必须在root用户下执行,若以普通系统用户登录,需要执行su切换到root用户下执行后续操作。

步骤2 执行vim /etc/ssh/sshd_config指令检测如下算法是否配置(每项满足其一即可)。

● KexAlgorithms: diffie-hellman-group-exchange-sha256

● MACs: hmac-sha2-512,hmac-sha2-256,hmac-sha1

● Ciphers: aes256-gcm,[email protected],aes128-ctr,aes192-ctr,aes256-ctr

● HostKey: /etc/ssh/ssh_host_rsa_key

----结束

4.5.2 工具安装失败提示 OpenSSL 库未找到

现象描述

工具安装失败并提示OpenSSL库未找到。部分回显信息如下:

OpenSSL 1.1.1-dev xx XXX xxxxopenssl already installed!openssl-devel already installed!checking for OS+ Linux 4.14.0-115.el7a.0.1.aarch64 aarch64checking for C compiler ... found+ using GNU C compiler+ gcc version: 7.3.0 (GCC) ...checking for OpenSSL library ... not found..../auto/configure: error: SSL modules require the OpenSSL library....with nginx by using --with-openssl=<path> option. make: *** No rule to make target 'build', needed by 'default'. Stop.make: *** No rule to make target 'install'. Stop.nginx模块安装错误!cp: cannot create directory ‘/opt/portadv/tools/nginx-install/html/’: No such file or directory...hmod: cannot access ‘/opt/portadv/tools/nginx-install/html/’: No such file or directoryInstallation failed!

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 352

Page 361: 2.3.T10 鲲鹏开发套件插件工具(VSCode

可能原因

系统上升级过OpenSSL,但未对应升级OpenSSL依赖组件。

解放方法是恢复OpenSSL组件至系统自带的OpenSSL 1.0.2版本,或者升级完OpenSSL组件至系统上安装的OpenSSL 1.1.1版本,然后重新安装工具。

说明

OpenSSL组件包括openssl,openssl-libs,openssl-devel。

恢复 SSL 组件

以CentOS 7.7 为例,其他操作系统步骤相同。

步骤1 从CentOS官网下载CentOS镜像文件“CentOS-7-aarch64-Everything-1908.iso”。

步骤2 使用SSH远程登录工具,将CentOS镜像上传至服务器任意目录下(例如“root”目录)。

步骤3 使用SSH远程登录工具,以系统用户登录Linux操作系统命令行界面。

说明

该步骤必须在root用户下执行,若以普通系统用户登录,需要执行su切换到root用户下执行后续操作。

步骤4 执行如下命令,将CentOS的ISO镜像文件挂载到本地目录下(“root”为保存镜像文件的路径,请用实际路径代替)。

mount /root/CentOS-7-aarch64-Everything-1908.iso /media -o loop

须知

系统重启后需要重新挂载。

步骤5 执行如下命令进入挂载目录。

cd /media

步骤6 执行如下命令找出OpenSSL组件所在的位置。

find . -name "openssl*"

步骤7 执行如下命令安装OpenSSL组件。

rpm -ivh /media/Packages/openssl-devel-1.0.2k-19.el7.aarch64.rpm --nodeps--force

rpm -ivh /media/Packages/openssl-libs-1.0.2k-19.el7.aarch64.rpm --nodeps --force

rpm -ivh /media/Packages/openssl-1.0.2k-19.el7.aarch64.rpm --nodeps --force

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 353

Page 362: 2.3.T10 鲲鹏开发套件插件工具(VSCode

注意

下载对应版本的OpenSSL相关RPM包,在升级过程中需要挂载对应操作系统版本的ISO镜像文件安装相关依赖。

升级 OpenSSL 组件

适用于以下版本操作系统:

● CentOS 6.5/6.9/6.10/7.2/7.3

● RedHat 6.5/6.9/6.10/7.2/7.3

步骤1 下载如下OpenSSL相关RPM包:

● openssl-libs-1.0.2k-19.el7.x86_64.rpm

https://centos.pkgs.org/7/centos-x86_64/openssl-libs-1.0.2k-19.el7.x86_64.rpm.html

● openssl-devel-1.0.2k-19.el7.x86_64.rpm

https://centos.pkgs.org/7/centos-x86_64/openssl-devel-1.0.2k-19.el7.x86_64.rpm.html

● openssl-1.0.2k-19.el7.x86_64.rpm

https://centos.pkgs.org/7/centos-x86_64/openssl-1.0.2k-19.el7.x86_64.rpm.html

步骤2 将相关RPM包上传至服务器任意目录下,使用cd命令切换至该目录。

步骤3 分别执行如下命令安装OpenSSL。

rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm

rpm -ivh openssl-devel-1.0.2k-19.el7.x86_64.rpm

rpm -ivh openssl-1.0.2k-19.el7.x86_64.rpm

说明

● 如果需要安装依赖,执行yum install命令安装相关依赖,再安装OpenSSL。

● 安装过程中如果遇到报错,可在命令后加相关参数--force或--nodeps。--force是强制安装,--nodeps是安装时不检查依赖关系。

例如:rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force --nodeps

步骤4 安装完后,执行如下命令查看OpenSSL版本。

openssl version

显示如下内容说明OpenSSL成功升级。

OpenSSL 1.0.2k-fips

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 354

Page 363: 2.3.T10 鲲鹏开发套件插件工具(VSCode

4.5.3 工具安装时出现 nginx 编译错误而导致安装失败

现象描述

工具安装时出现nginx编译错误而导致安装失败。

可能原因

系统中存在加速库提供的libwd.so文件导致工具安装时nginx编译失败。

处理步骤

执行find / -name libwd*指令查询系统中是否存在版本号为1.2.10的libwd.so文件,如果存在建议将此文件升级到 新版本。

4.5.4 工具在容器中安装失败

现象描述

工具在Docker中安装失败。

可能原因

Docker的/usr/include目录下缺少sys文件夹。

处理步骤

在Docker的/usr/include目录查找sys文件夹,若无此文件夹,则从Docker对应的操作系统中拷贝sys文件夹至Docker的/usr/include目录下,然后卸载并重新安装工具。

4.5.5 工具安装时 SELinux 处于强制模式导致安装失败

现象描述

工具安装时提示SELinux处于强制模式,将导致安装失败。显示内容如下:

The SELinux enforcing mode is enabled on the server, which will cause a tool installation failure.

可能原因

SELinux处于强制执行模式限制了所有未经允许的访问导致安装失败。

处理步骤● 临时关闭

a. 执行sestatus命令查询SELinux状态。“Current mode”显示“enforcing”表示SELinux已开启强制模式。

b. 执行如下命令将SELinux模式设置为“permissive”。

setenforce 0c. 执行sestatus命令查询SELinux状态。“Current mode”显示“permissive”

表示SELinux已临时关闭强制模式。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 355

Page 364: 2.3.T10 鲲鹏开发套件插件工具(VSCode

须知

服务器重启后失效,工具使用过程中可能会出现服务异常。

● 永久关闭

a. 执行sestatus命令查询SELinux状态。“SELinux status”显示“enabled”表示SELinux已开启。

b. 执行如下命令修改“/etc/selinux/config”文件。

vi /etc/selinux/configc. 按“i”进入编辑模式,将“SELINUX=enforcing”改为

“SELINUX=disabled”。

d. 按“ESC”,输入“:wq”,按“Enter”保存并退出。

e. 执行reboot命令重启服务器。

f. 执行sestatus命令查询SELinux状态。“SELinux status”显示“disabled”表示SELinux已关闭。

4.5.6 服务端状态异常问题排查

步骤1 使用root用户登录安装鲲鹏性能分析工具的服务端。

步骤2 检查相关服务运行状态。

请确认如下服务是否均处于正常运行状态,按启动顺序排列如下:

服务名称 说明

hyper_tuner_nginx.service Nginx服务

gunicorn_user.service 用户服务

gunicorn_sys.service Malluma关联服务

mallumad.service 核心采集服务

magent.service Agent服务

通过systemctl命令查看对应服务运行状态,例如:

systemctl status hyper_tuner_nginx.service

如下图所示,回显信息中提示active (running),则表明服务处于正常运行状态。

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 356

Page 365: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤3 如果上述5个服务中任意一个服务未处于正常运行状态,请重启所有后端服务。

cd /opt/hyper_tuner/

./service.sh restart

----结束

鲲鹏开发套件插件工具(VSCode) 4 性能分析插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 357

Page 366: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5 编译插件

5.1 介绍

5.2 特性指南

5.3 常用操作

5.4 佳实践

5.5 FAQ

5.1 介绍编译插件是其中的一个子工具。编译插件即插即用,支持一键安装鲲鹏GCC编译器,以及鲲鹏平台远程调试能力,支持的功能特性如下:

● 一键式部署

支持从Visual Studio Marketplace下载并在线安装插件,同时支持一键部署服务端鲲鹏GCC编译器

● 编译调试

– 一键式安装鲲鹏GCC– 可视化编译配置任务,一键式任务运行

– 远程单步调试C/C++代码

– 编译调试过程信息实时展示

– gtest框架用例树渲染及状态展示

5.2 特性指南

5.2.1 配置服务器和编译器部署

5.2.1.1 特性描述

鲲鹏编译插件支持用户快速添加目标服务器并部署鲲鹏GCC、毕昇编译器和毕昇JDK。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 358

Page 367: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.2.1.2 特性操作

5.2.1.2.1 配置服务器

前提条件● 目标服务器已安装操作系统,并且处于联网状态。

● 目标服务器已安装鲲鹏编译插件。

配置目标服务器

步骤1 单击“目标服务器”模块中的“配置服务器”按钮,如图5-1所示。也可以单击 ,选择“配置远端服务器”,打开“添加目标服务器”页签。

图 5-1 配置服务器

步骤2 填写目标服务器参数,如表5-1所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 359

Page 368: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-2 添加目标服务器

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 360

Page 369: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-3 添加目标服务器

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 361

Page 370: 2.3.T10 鲲鹏开发套件插件工具(VSCode

表 5-1 目标服务器参数

参数 说明

服务器IP地址 待连接的目标服务器IP地址。

SSH端口 待连接的目标服务器SSH端口。

SSH用户名 待连接的目标服务器SSH用户名。

工作空间 远程编译调试时,服务器上同步代码的存放路径。

公钥认证

如没在服务器配置公钥,是否需要工具自动上传

● 自动

● 手动

● 是

● 否

说明选择“自动”模式后,工具将自动传输公钥至目标服务器。若您不再需要通过公钥认证进行ssh连接,可在服务器~/.ssh/authorized_key文件中删除不需要的公钥。选择“手动”模式则意味着您需要手动在目标服务器配置公钥。

选择“是”,则需要指定公钥文件及SSH密码。选择“否”,则需要确保服务器端已配置公钥。

SSH密码 输入目标服务器的SSH密码。

公钥 导入id_rsa公钥文件。

说明密钥对可通过以下方式产生:ssh-keygen [-b bits] [-t dsa | ecdsa |ed25519 | rsa] [-C comment] [-f output_keyfile]。

私钥 导入id_rsa私钥文件。

说明

● 密钥对可通过以下方式产生:ssh-keygen [-b bits] [-t dsa |ecdsa | ed25519 | rsa] [-C comment] [-f output_keyfile]。

● 可单击“私钥”后的问号,并在弹出的气泡提示中单击复制图标复制产生密钥对的命令。

步骤3 单击“配置”按钮添加目标服务器。

弹出提示框,提示两种模式之间的区别。

步骤4 单击“确认”。

弹出消息,提示主机可信度不能确定。

步骤5 单击“是”。

弹出提示框,提示“配置已完成,您可以开始编译调试任务了。”

步骤6 单击“确认”。

步骤7 (可选)单击右侧 图标,登入目标服务器。

----结束

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 362

Page 371: 2.3.T10 鲲鹏开发套件插件工具(VSCode

修改目标服务器

步骤1 选中目标服务器列表中的目标服务器,单击右侧 图标,进入修改目标服务器页面。

图 5-4 修改目标服务器

步骤2 修改目标服务器参数,参数描述如下表表5-2。

表 5-2 目标服务器参数

参数 说明

服务器IP地址 待连接的目标服务器IP地址。

SSH端口 待连接的目标服务器SSH端口。

SSH用户名 待连接的目标服务器SSH用户名。

工作空间 远程编译调试时,服务器上同步代码的存放路径。

公钥认证

如没在服务器配置公钥,是否需要工具自动上传

● 自动

● 手动

● 是

● 否

说明选择“自动”模式后,工具将自动传输公钥至目标服务器。若您不再需要通过公钥认证进行ssh连接,可在服务器~/.ssh/authorized_key文件中删除不需要的公钥。选择“手动”模式则意味着您需要手动在目标服务器配置公钥。

选择“是”,则需要指定公钥文件及SSH密码。选择“否”,则需要确保服务器端已配置公钥。

SSH密码 输入目标服务器的SSH密码。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 363

Page 372: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

公钥 导入id_rsa公钥文件。

说明密钥对可通过以下方式产生:ssh-keygen [-b bits] [-t dsa | ecdsa |ed25519 | rsa] [-C comment] [-f output_keyfile]。

私钥 导入id_rsa私钥文件。

说明

● 密钥对可通过以下方式产生:ssh-keygen [-b bits] [-t dsa |ecdsa | ed25519 | rsa] [-C comment] [-f output_keyfile]。

● 可单击“私钥”后的问号,并在弹出的气泡提示中单击复制图标复制产生密钥对的命令。

步骤3 修改完成后,单击“修改”,完成对目标服务器的修改。

----结束

删除目标服务器

步骤1 单击选中目标服务器列表中的目标服务器,单击右侧的 。

步骤2 在弹出的选择框中,单击确认,完成删除目标服务器。

图 5-5 删除目标服务器。

----结束

5.2.1.2.2 安装鲲鹏 GCC 编译器

如果您需要使用鲲鹏GCC编译器中一些加速库,则需要先在服务端安装鲲鹏GCC编译器。鲲鹏GCC编译器是针对鲲鹏平台的高性能编译器,它基于开源GCC开发的编译器工具链(包含编译器、汇编器、链接器),支持C、C++、Fortran语言及其运行库。

当前仅以下操作系统下支持安装鲲鹏GCC编译器:

● openEuler 20.03(LTS)

● openEuler 21.03(LTS)

● CentOS 7.6

● Ubuntu 18.04

● Ubuntu 18.04.2 LTS

● Ubuntu 20.04 LTS

● Ubuntu 20

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 364

Page 373: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● Kylin Linux Advanced Server V10 (Azalea)● UOS Server Euler 20

步骤1 在左侧菜单栏单击 > 部署编译器,进入部署页面。

图 5-6 部署编译器

步骤2 配置目标服务器参数后,单击“开始部署”,一键式安装鲲鹏GCC编译器。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 365

Page 374: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-7 安装鲲鹏 GCC 编译器

表 5-3 安装鲲鹏 GCC 参数

参数 说明

服务器IP地址 待安装鲲鹏GCC的服务器IP地址。

SSH端口 待安装鲲鹏GCC的服务器SSH端口。

SSH用户名 登录待安装鲲鹏GCC的服务器的SSH用户名。

说明如果想通过普通用户安装,需要满足一些条件,具体参照5.3.3如何通过普通用户安装编译器。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 366

Page 375: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

选择连接方式 密码认证或密钥认证。

SSH密码 输入SSH密码。

私钥 导入id_rsa私钥文件。

密码短语 (可选)输入生成密钥设置的密码短语。

安装过程中需要:

● 再次输入服务器用户密码

● 输入服务器root用户密码安装鲲鹏GCC

----结束

说明

由于root用户拥有 高权限,直接使用root用户登录服务器可能会存在安全风险。建议您使用普通用户登录服务器后切换为root用户,再执行后续安装操作,并建议您通过配置禁止root用户SSH登录的选项,来提升系统安全性。具体配置如下:

先以普通用户登录服务器,切换至root登录后检查/etc/ssh/sshd_config配置项PermitRootlogin,如果显示no,说明禁止了root用户登录;如果显示yes,则需要将配置项PermitRootlogin是否设置no。

5.2.1.2.3 安装毕昇编译器

如果您需要使用毕昇编译器,则需要先在服务端安装毕昇编译器。毕昇编译器基于开源LLVM开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器,是针对鲲鹏平台的高性能编译器。

当前仅以下操作系统下支持安装毕昇编译器:

● openEuler 20.03(LTS)

● openEuler 21.03(LTS)

● CentOS 7.6

● Ubuntu 18.04

● Ubuntu 18.04.2 LTS

● Ubuntu 20.04 LTS

● Ubuntu 20

● Kylin Linux Advanced Server V10 (Azalea)

● UOS Server Euler 20

步骤1 在左侧菜单栏单击 > 部署编译器,进入部署页面。

步骤2 配置目标服务器参数后,单击“开始部署”,一键式安装毕昇编译器。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 367

Page 376: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-8 安装毕昇编译器

表 5-4 安装毕昇编译器参数

参数 说明

服务器IP地址 待安装毕昇编译器的服务器IP地址。

SSH端口 待安装毕昇编译器的服务器SSH端口。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 368

Page 377: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

SSH用户名 登录待安装毕昇编译器的服务器的SSH用户名。

说明如果想通过普通用户安装,需要满足一些条件,具体参照5.3.3 如何通过普通用户安装编译器。

选择连接方式 密码认证或密钥认证。

SSH密码 输入SSH密码。

私钥 导入id_rsa私钥文件。

密码短语 (可选)输入生成密钥设置的密码短语。

安装过程中需要:

● 再次输入服务器用户密码

● 输入服务器root用户密码安装毕昇编译器

----结束

5.2.1.2.4 安装毕昇 JDK

如果您需要使用毕昇JDK,则需要先在服务端安装毕昇JDK。毕昇JDK基于OpenJDK开发,是一个高性能、可用于生产环境的OpenJDK发行版,它积累了大量使用场景和Java开发者反馈的问题和诉求,解决了业务实际运行中遇到的多个问题,并在ARM架构上进行了性能优化。

当前仅以下操作系统下支持安装毕昇JDK:

● openEuler 20.03(LTS)

● openEuler 21.03(LTS)

● CentOS 7.6● Ubuntu 18.04● Ubuntu 18.04.2 LTS● Ubuntu 20.04 LTS● Ubuntu 20● Kylin Linux Advanced Server V10 (Azalea)● UOS Server Euler 20

步骤1 在左侧菜单栏单击 > 部署编译器,进入部署页面。

步骤2 配置目标服务器参数后,单击“开始部署”,一键式安装毕昇JDK。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 369

Page 378: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-9 安装毕昇 JDK

表 5-5 安装毕昇 JDK 参数

参数 说明

服务器IP地址 待安装毕昇JDK的服务器IP地址。

SSH端口 待安装毕昇JDK的服务器SSH端口。

SSH用户名 登录待安装毕昇JDK的服务器的SSH用户名。

说明如果想通过普通用户安装,需要满足一些条件,具体参照5.3.3 如何通过普通用户安装编译器。

选择连接方式 密码认证或密钥认证。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 370

Page 379: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

SSH密码 输入SSH密码。

私钥 导入id_rsa私钥文件。

密码短语 (可选)输入生成密钥设置的密码短语。

安装过程中需要:

● 再次输入服务器用户密码

● 输入服务器root用户密码安装毕昇JDK

----结束

5.2.2 编译调试

5.2.2.1 特性描述

鲲鹏编译器插件支持用户配置代码编译和调试任务,然后选择右侧功能栏中对应的任务运行。

5.2.2.2 特性操作

配置远程环境(settings.json)

步骤1 生成settings.json文件。

● 方法一:在VSCode上选择“文件 > 首选项 > 设置”,再选择“工作区”,并在输入框搜索“kunpeng.remote.ssh.machineinfo”, 单击“在settings.json中编辑”后生成settings.json文件。如图5-10所示。

图 5-10 生成 settings.json 文件

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 371

Page 380: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 方法二:在VSCode上选择“资源管理器”,找到“.vscode”文件夹,单击右键选择“新建文件”, 输入文件名“settings.json”生成settings.json文件。如图5-11所示。

图 5-11 新建生成 settings.json 文件

步骤2 配置远程环境信息。

方法1:复制以下代码至新创建的settings.json文件中,修改以下代码中的服务器名称、目标服务器的IP、目标服务器IP对应的端口、登录目标服务器的用户名和同步代码到服务器的路径。"kunpeng.remote.ssh.machineinfo": [ { "label": "xxx",/*服务器名称*/ "ip": "xxx.xxx.xxx.xxx",/*目标服务器的IP*/ "port": "xxx",/*目标服务器IP对应的端口*/ "user": "xxx", /*登录目标服务器的用户名*/ "workspace": "xxx"/*同步代码到服务器的路径*/ }, { "label": "xxx", "ip": "xxx.xxx.xxx.xxx", "port": "xxx", "user": "xxx", / "workspace": "xxx" } ]

方法2:

配置样例如下:

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 372

Page 381: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-12 settings.json

----结束

配置本地 SSH 公私钥登录

配置本地SSH公私钥登录(以Windows为例)

步骤1 制作公私钥对。

Windows下可以通过cmd执行ssh-keygen -b 2048 -t rsa命令生成公私钥对,默认回车即可。生成的公私钥对默认保存在“~/.ssh/目录”下的id_rsa、id_rsa.pub文件中。

步骤2 拷贝本地.ssh文件夹到SSH服务端(即要连接的远程环境),然后将公钥文件中的内容导入到authorized_keys文件中。

cd ~/.ssh cat id_rsa.pub >> authorized_keys

步骤3 配置目录权限。

● SSH服务端用户目录权限配置为700chmod 700 ~

● .ssh目录权限配置为700chmod 700 ~/.ssh

● authorized_keys权限配置为600chmod 600 ~/.ssh/authorized_keys

----结束

配置本地SSH私钥文件id_rsa的路径

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 373

Page 382: 2.3.T10 鲲鹏开发套件插件工具(VSCode

在VSCode上选择“文件 > 首选项 > 设置”,选择“工作区”,并在输入框搜索“kunpeng.remote.ssh.privatekeypath”,然后在编辑框填写私钥文件id_rsa的路径。

路径格式为:x:\xxx\xxx\xxx\id_rsa

配置编译任务(tasks.json)

步骤1 生成tasks.json文件。

● 方法一:当vscode项目中没有tasks.json文件时,选择“终端 > 配置任务 > 使用模板创建tasks.json文件 > Others”,生成tasks.json文件。如图5-13所示。

图 5-13 生成 tasks.json 文件

● 方法二:在VSCode上选择“资源管理器”,找到“.vscode”文件夹,单击右键选择“新建文件”,输入文件名“tasks.json”生成tasks.json文件。如图5-14所示。

图 5-14 新建生成 tasks.json 文件

● 方法三:在“编译任务”区域,单击 ,打开“创建编译任务”页签。填写任务参数,并单击“开始创建”。如图5-15所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 374

Page 383: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-15 创建编译任务

说明

单击“打开配置文件”可打开到task.json文件。

步骤2 配置编译任务信息。

复制以下代码至新创建的tasks.json文件中,修改以下代码中的编译任务名称和启动编译的命令(命令里包含的路径为相对于workspace的路径),如图5-16所示。

{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "type": "shell", "group": { "kind": "build", "isDefault": true }, "options": { "env": { "xxx": "xxx" } }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared" }, "label": "xxx", /*编译任务名称*/ "command": "xxx", /*启动编译的命令,命令里包含的路径为相对于workspace的路径*/ "problemMatcher": { "owner": "cpp", "fileLocation": [ "relative", "${workspaceRoot}"

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 375

Page 384: 2.3.T10 鲲鹏开发套件插件工具(VSCode

], "pattern": { "regexp": "^([^:]*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] }

配置样例如下:

图 5-16 tasks.json

----结束

配置测试用例(launch.json)

说明

使用调试功能需要依赖C/C++插件,若未安装,请根据提示或手动在插件市场下载C/C++插件安装包。

步骤1 生成launch.json文件。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 376

Page 385: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 方法一:当vscode项目中没有launch.json文件时,选择“运行 > 添加配置 >Chrome”,生成launch.json文件。如图5-17所示。

图 5-17 生成 launch.json 文件

● 方法二:在VSCode上选择“资源管理器”,找到“.vscode”文件夹,单击右键选择“新建文件”, 输入文件名“launch.json”生成launch.json文件。如图5-14所示。

图 5-18 新建生成 launch.json 文件

● 方法三:在“测试用例”区域,单击 ,打开“添加测试用例”页签。填写任务参数,并单击“开始开始添加”。如图5-19所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 377

Page 386: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-19 添加测试用例

说明

单击“打开配置文件”可打开launch.json文件。

步骤2 配置测试用例信息。

复制以下代码至新创建的launch.json文件中,修改以下代码中的测试用例名称、需要测试的二进制文件名称、需要测试的二进制文件的绝对路径和测试需要依赖的前置编译任务名称,如图5-20所示。

{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "xxx", /*测试用例名称*/ "type": "cppdbg", "request": "launch", "program": "./swm_llt", /*需要测试的二进制文件名称*/ "args": [], "stopAtEntry": true, "cwd": "${command:remotessh.remoteworkspace}/xxx/xxx/xxx/swm_llt",/*需要测试的二进制文件的绝对路径*/ "externalConsole": true, "MIMode": "gdb", "pipeTransport": { "pipeCwd": "", "pipeProgram": "${command:remotessh.sshclientpath}",

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 378

Page 387: 2.3.T10 鲲鹏开发套件插件工具(VSCode

"pipeArgs": [ "-p", "${command:remotessh.remoteport}", "${command:remotessh.remoteuser}@${command:remotessh.remoteip}" ], "debuggerPath": "/usr/bin/gdb" }, "sourceFileMap": { "${command:remotessh.remoteworkspace}": "${workspaceRoot}" }, "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "text": "handle SIGPIPE nostop noprint pass", "description": "ignore SIGPIPE", "ignoreFailures": true } ], "preLaunchTask": "xxx" /*测试需要依赖的前置编译任务名称*/ } ] }

配置样例如下:

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 379

Page 388: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-20 launch.json

----结束

编译调试

插件安装完成后在左侧工具栏会显示三个视图,依次是编译任务视图、调试任务视图和当前使用的VM列表视图,如图5-21所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 380

Page 389: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-21 视图

开始启动编译调试前,需要同意同步代码到workspace 路径下(“kunpeng.remote.ssh.machineinfo”中定义的“workspace”),同步完成即可启动编译任务和调试任务。

启动编译任务

启动调试任务

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 381

Page 390: 2.3.T10 鲲鹏开发套件插件工具(VSCode

您可以参考以下图片进行远程编译和调试。

图 5-22 远程编译

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 382

Page 391: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-23 远程调试

5.2.3 自动同步

5.2.3.1 特性描述

开启自动同步特性后,发生变更(增加、删除、修改、重命名)的文件将会自动同步到目标服务器。

说明

自动同步特性不适用于从外部拖进的项目。

5.2.3.2 特性操作

开启自动同步

须知

在配置目标服务器成功后,插件自动会弹出提示框询问用户是否要开启自动同步。在此时没有选择开启自动同步才需要进行下列操作。

步骤1 在“目标服务器”区域,单击 ,选择“设置自动同步功能”。

打开“设置自动同步”页签,如所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 383

Page 392: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-24 设置自动同步

步骤2 单击“修改设置”。

步骤3 单击“是”。

界面增加目标服务器下拉选择框。

步骤4 选择目标服务器。

步骤5 单击“保存设置”。

----结束

关闭自动同步

步骤1 在“目标服务器”区域,单击 ,选择“设置自动同步功能”。

打开“设置自动同步”页签,如所示。

图 5-25 设置自动同步

步骤2 单击“修改设置”。

步骤3 单击“否”。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 384

Page 393: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤4 单击“保存设置”。

----结束

5.2.4 手动同步

5.2.4.1 特性描述

用户可以手动将发生变更(增加、删除、修改、重命名)的文件同步到目标服务器。

5.2.4.2 特性操作

步骤1 在编译界面上单击右键,然后选择“同步代码到远端服务器”,如图5-26所示。

图 5-26 手动同步

步骤2 选择目标服务器,如图5-27所示。

图 5-27 选择目标服务器

----结束

5.3 常用操作

5.3.1 安装编译调试工具为满足编译调试需要,远端服务器需要预先安装编译调试工具(如已安装,可忽略),以openEuler 20.03(LTS)为例:

yum install make

yum install cmake

yum install gcc-c++

yum install git

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 385

Page 394: 2.3.T10 鲲鹏开发套件插件工具(VSCode

yum install gdb

5.3.2 申请并配置远程实验室

前提条件● 目标服务器已安装操作系统,并且处于联网状态。

● 目标服务器已安装鲲鹏编译插件。

● 未配置目标服务器。

操作步骤

步骤1 单击“目标服务器”模块中的“免费试用”按钮,如图图5-28所示。也可以单击“目

标服务器”模块中的 ,然后选择“申请试用远程实验室”。

图 5-28 单击免费试用

显示“申请试用远程实验室流程”页面,如图5-29所示。

图 5-29 申请试用远程实验室流程

步骤2 单击“立即申请”。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 386

Page 395: 2.3.T10 鲲鹏开发套件插件工具(VSCode

打开“远程云环境申请”页面,如图5-30所示。

图 5-30 远程云环境申请页面

步骤3 在“邮箱”框中填入邮箱地址,单击“立即申请”,选择“申请使用额度”,勾选“我已阅读并同意《隐私政策声明》和《设备借用协议》”,然后单击“确认”。

说明

在申请成功后,可在“远程云环境”页面上根据需要提前释放资源或延长资源的使用时间。

步骤4 待邮箱收到远程云环境信息后,在“申请试用远程实验室流程”页面上单击“立即配置”。

步骤5 在“添加目标服务器”页面,填入收到的远程实验室信息。

说明

关于“添加目标服务器”页面上的参数描述,请参见表5-1。

----结束

5.3.3 如何通过普通用户安装编译器

如果想要使用鲲鹏GCC编译器、毕昇编译器和毕昇JDK,需要先在服务器上安装鲲鹏GCC编译器、毕昇编译器和毕昇JDK。

用户可以在插件中配置目标服务器参数后,单击“开始部署”,一键式安装鲲鹏GCC编译器、毕昇编译器和毕昇JDK。

在配置目标服务器参数时,若想通过操作系统的普通用户来安装编译器,该普通用户需要满足以下要求:

1. 创建home目录。mkdir /home/xxx

2. 设置新创建的目录所属者为xxx。chown -R xxx:yy /home/xxx

3. 设置用户所在的用户组为wheel。usermod -G wheel xxx

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 387

Page 396: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

命令中xxx为普通用户的用户名,yy为普通用户的组名。

5.3.4 反馈建议

如对本插件有任何建议,请执行以下步骤反馈。

操作步骤

步骤1 在Banner上单击“上鲲鹏社区,反馈建议”,或者单击界面右下角的 。

在浏览器中打开“建议反馈”页面,如图5-31所示。

图 5-31 建议反馈

说明

如弹出“连接失败”提示框,请按照提示排除故障。

步骤2 在“建议反馈”页面上按要求填写问题详情及邮箱地址,选择“已阅读并同意 《隐私政策声明》”,然后单击“提交”。

----结束

5.4 佳实践

5.4.1 编译调试插件

编译调试插件向用户提供了快速在服务器实现安装编译器、代码同步、编译调试功能。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 388

Page 397: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.4.1.1 安装

在插件市场搜索“Kunpeng”,然后选择编译调试插件“Kunpeng CompilerPlugin”,点击安装,如图5-32所示。

图 5-32 插件市场

5.4.1.2 配置服务器

5.4.1.2.1 添加目标服务器

步骤1 按照实际情况填写具体参数,然后点击配置按钮,进行下一步,如图5-33所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 389

Page 398: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-33 添加目标服务器

表 5-6 目标服务器参数说明

参数 说明

服务器IP地址 待配置工具的服务器IP地址。

SSH端口 待配置工具的服务器SSH端口。

SSH用户名 说明用来与服务器建立SSH连接的用户名。

工作空间 工作空间为进行远程编译调试时,同步代码到目标服务器的存放路径。

SSH密码 用于建立SSH链接对应用户名的密码。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 390

Page 399: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

公钥认证 方式可选择:

● 自动

● 手动

说明选择“自动”模式后,工具将自动传输公钥至目标服务器。若您不再需要通过公钥认证进行ssh连接,可在服务器~/.ssh/authorized_key文件中删除不需要的公钥。选择“手动”模式则意味着您需要手动在目标服务器配置公钥。

步骤2 点击确认按钮配置公钥,如图5-34所示。

图 5-34 配置公钥

右下角提示指纹验证,点击“是”进行下一步,如图5-35所示。

图 5-35 验证指纹

步骤3 点击确认,初始配置完成,开始编译调试任务,如图5-36所示。

图 5-36 编译调试

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 391

Page 400: 2.3.T10 鲲鹏开发套件插件工具(VSCode

步骤4 配置完成后,插件自动完善settings.json文件。

点击目标服务器右侧配置按钮,可查看服务器相关配置信息。(具体实际样例内容参见5.4.1.6.1 配置文件settings.json。)

示例settings.json中,可配置参数,如所示。

表 5-7 settings.json 参数说明

参数 说明

lable 服务器名称

ip 目标服务器的IP

port 目标服务器IP对应的端口

user 登录到目标服务器的用户名

workspace 同步代码到服务器的路径

图 5-37 settings.json

----结束

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 392

Page 401: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.4.1.2.2 免费试用

如果当前没有服务器时,可申请免费试用鲲鹏服务器,请通过以下操作执行。

步骤1 点击左侧树“免费试用”按钮,打开申请试用远程实验室页面,如图5-38所示。

图 5-38 申请远程实验室

步骤2 单击“立即申请”。

打开“远程实验室”页面,如图5-39所示。

图 5-39 远程实验室

步骤3 单击“立即申请”。

打开“申请远程实验室”页面。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 393

Page 402: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-40 申请远程实验室

步骤4 正确填写邮箱地址,选择试用额度,勾选“我已阅读并同意《隐私政策声明》,《设备借用协议》”,并单击“提交申请”按钮。

实验室信息将及时发送至您的邮箱。

----结束

5.4.1.3 部署编译器

点击部署编译器菜单栏中“部署编译器”按钮,打开部署编译器页面并部署编译器,如图5-41所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 394

Page 403: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-41 部署编译器

表 5-8 编译器参数说明

参数 说明

选择编译器类型 可根据实际情况按需选择鲲鹏GCC、毕昇编译器和毕昇JDK。

● 鲲鹏GCC编译器是针对鲲鹏平台的高性能编译器,它基于开源GCC开发的编译器工具链(包含编译器、汇编器、链接器),支持C、C++、Fortran语言及其运行库。

● 毕昇编译器基于开源LLVM开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器,是针对鲲鹏平台的高性能编译器。

● 毕昇JDK基于OpenJDK开发,是一个高性能、可用于生产环境的OpenJDK发行版,它积累了大量使用场景和Java开发者反馈的问题和诉求,解决了业务实际运行中遇到的多个问题,并在ARM架构上进行了性能优化。

服务器IP地址 待安装工具的服务器IP地址。

SSH端口 待安装工具的服务器SSH端口。

SSH用户名 用于建立SSH链接对应用户名的密码。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 395

Page 404: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

选择SSH连接方式 连接方式可选择:

● 密码认证

● 密钥认证

说明选择“密钥认证”后需要先配置SSH公钥在您的服务器上,然后页面选择私钥文件以建立连接。

说明

如果服务器是通过“免费试用”申请回去,则服务器默认携带编译器,无需部署。

5.4.1.4 编译任务

5.4.1.4.1 生成 tasks.json 文件

当vscode项目中没有tasks.json文件时,选择“终端 > 配置任务 > 任务:配置任务 >使用模板创建tasks.json文件 > Others”,生成tasks.json文件,如图5-42所示。

图 5-42 task.json

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 396

Page 405: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.4.1.4.2 配置编译任务信息

点击编译任务左侧树帮助文档按钮,查看详细信息,然后复制示例代码到tasks.json文件中,示例代码中lable(编译任务名称)和command(启动编译命令)以实际项目替换,配置成功后保存,编译任务下会生成任务名称同名的编译任务。

图 5-43 帮助文档

实际样例如图5-44所示。(具体实际样例内容见5.4.1.6.2 编译任务配置文件tasks.json。)

图 5-44 样例

表 5-9 tasks.json 参数说明

参数 说明

lable 编译任务名称。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 397

Page 406: 2.3.T10 鲲鹏开发套件插件工具(VSCode

参数 说明

command 启动编译的命令,命令里包含的路径为相对于workspace的路径。

5.4.1.4.3 启动编译

环境准备完成后,在编译任务一栏点击对应的编译任务(由task.json中label配置自动生成的),启动编译,根据页面中进一步的提示信息完成编译。

步骤1 点击“启动编译”,并选择对应服务器,如图5-45所示。

图 5-45 启动编译

步骤2 点击同步并编译,如图5-46所示。

图 5-46 同步并编译

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 398

Page 407: 2.3.T10 鲲鹏开发套件插件工具(VSCode

显示编译成功,如图5-47所示。

图 5-47 编译成功

----结束

5.4.1.4.4 修改或删除编译任务

前提条件

已经存在创建完成的编译任务。

操作步骤

步骤1 单击选中“编译任务列表”中的编译任务。

步骤2 单击编译任务右侧的 图标,进行配置修改。

步骤3 单击编译任务右侧的 图标,进行删除操作。

----结束

5.4.1.5 测试用例

5.4.1.5.1 生成 launch.json 文件

当vscode项目中没有launch.json文件时,选择“运行 > 添加配置 > Chrome”,生成launch.json文件,如图5-48所示。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 399

Page 408: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-48 launch.json

5.4.1.5.2 配置调试任务信息

点击编译任务左侧树帮助文档按钮,查看详细信息,复制示例代码到launch.json文件中,示例代码中的name, program, cmd, preLaunchTask以实际项目所需替换。

实际样例如图5-49所示。(具体实际样例内容见5.4.1.6.3 测试用例配置文件launch.json。)

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 400

Page 409: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-49 样例

表 5-10 launch.json 参数说明

参数 说明

name 调试任务名称。

program 需要调试的二进制文件名称。

cmd 需要调试的二进制文件的绝对路径。

preLaunchTask 调试需要依赖的前置编译任务名称。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 401

Page 410: 2.3.T10 鲲鹏开发套件插件工具(VSCode

5.4.1.5.3 调试任务

编译通过后,点击测试用例目录下的节点,如果有编写gtest用例则点击 ,如图5-50所示。

图 5-50 gtest 用例

调试demo生成的可执行文件,则可以Run All或者Debug All ,点击Run All后终端中输出可执行文件的执行结果如图5-51所示。

图 5-51 运行结果

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 402

Page 411: 2.3.T10 鲲鹏开发套件插件工具(VSCode

点击Debug All会在主函数的入口停下来,可以在本地文件中添加断点调试(确保本地目录结构、文件和服务端一致,否则会出现不可预期的错误),如图5-52所示。

图 5-52 调试

5.4.1.5.4 修改或删除测试用例

前提条件

已经存在创建完成的测试用例。

操作步骤

步骤1 单击选中“测试用例列表”中的“测试用例”。

步骤2 单击“测试用例”右侧的 图标,进行配置修改。

步骤3 单击“测试用例”右侧的 图标,进行删除操作。

----结束

5.4.1.6 附录

5.4.1.6.1 配置文件 settings.json{"kunpeng.remote.ssh.privatekeypath": "c:\\Users\\.ssh\\id_rsa",

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 403

Page 412: 2.3.T10 鲲鹏开发套件插件工具(VSCode

"kunpeng.remote.ssh.machineinfo": [{"label": "x.x.x.x", /*服务器IP地址*/"ip": "x.x.x.x", /*服务器IP地址*/"port": "22","user": "root","workspace": "/home/compile"}]}

5.4.1.6.2 编译任务配置文件 tasks.json{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"type": "shell","group": {"kind": "build","isDefault": true},"options": {"env": {"xxx": "xxx"}},"presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared"},"label": "devkit", /*编译任务名称*/"command": "cd world;gcc world.c -o world -g", /*启动编译的命令,命令里包含的路径为相对于workspace的路径*/"problemMatcher": {"owner": "cpp","fileLocation": ["relative","${workspaceRoot}"],"pattern": {"regexp": "^([^:]*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file": 1,"line": 2,"column": 3,"severity": 4,"message": 5}}}]}

5.4.1.6.3 测试用例配置文件 launch.json{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "dekit", /*调试任务名称*/"type": "cppdbg","request": "launch",

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 404

Page 413: 2.3.T10 鲲鹏开发套件插件工具(VSCode

"program": "./world", /*需要调试的二进制文件名称*/"args": [],"stopAtEntry": true,"cwd": "${command:remotessh.remoteworkspace}/",/*需要调试的二进制文件的绝对路径*/"externalConsole": true,"MIMode": "gdb","pipeTransport": {"pipeCwd": "","pipeProgram": "${command:remotessh.sshclientpath}","pipeArgs": ["-p","${command:remotessh.remoteport}","${command:remotessh.remoteuser}@${command:remotessh.remoteip}"],"debuggerPath": "/usr/bin/gdb"},"sourceFileMap": {"${command:remotessh.remoteworkspace}": "${workspaceRoot}"},"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"text": "handle SIGPIPE nostop noprint pass","description": "ignore SIGPIPE","ignoreFailures": true}],"preLaunchTask": "" /*调试需要依赖的前置编译任务名称*/}]}

5.4.1.6.4 实际样例 demo(world.c)

#include <stdio.h>int functest1(){printf("hello, world\n");return 0;}int main(){functest1();printf("hello, Devkit\n");return 0;}

5.5 FAQ

5.5.1 编译器系统信息文件校验不通过

现象描述

工具部署失败,“编译系统信息文件超大,校验不通过。请点击XXX查看详情后重试。”

说明

XXX代表网页地址。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 405

Page 414: 2.3.T10 鲲鹏开发套件插件工具(VSCode

下面是示例:

图 5-53 工具部署失败

可能原因

编译系统信息文件超大。

处理步骤

步骤1 访问提示中的网页地址,查看信息文件大小。

● 如果信息文件大于1MB,请执行步骤2。

● 如果信息文件小于1MB,请执行步骤3。

步骤2 检查网络环境,确保当前网络环境没有受到DoS攻击。

步骤3 点击“重新部署”。

----结束

5.5.2 编译器部署失败

现象描述

工具部署失败。

图 5-54 安装的编译器版本不一致

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 406

Page 415: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 5-55 安装失败

图 5-56 目标服务器的操作系统为编译器不兼容的操作系统

可能原因● 目标服务器已经安装GCC编译器/毕昇编译器/毕昇JDK。

● 安装失败。

● 目标服务器的操作系统为编译器不兼容的操作系统。

处理步骤● 直接使用目标服务器上已安装的编译器。

● 移除目标服务器中已安装的其它版本编译器,重新安装所需版本的编译器。

● 在终端中查看产生的错误日志信息,依照日志信息进行处理。

● 更换编译器兼容的操作系统进行安装。

鲲鹏开发套件插件工具(VSCode) 5 编译插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 407

Page 416: 2.3.T10 鲲鹏开发套件插件工具(VSCode

6 加速库插件

6.1 介绍

6.2 特性指南

6.3 常用操作

6.4 FAQ

6.1 介绍鲲鹏加速库插件即插即用,能够扫描代码文件中可使用鲲鹏加速库优化后的函数或汇编指令,生成可视化报告;编码时能够自动匹配鲲鹏加速库函数字典,智能提示、高亮、联想字典中可以替换的库和函数。关于鲲鹏加速库的详细介绍请参见鲲鹏加速库。

目前,鲲鹏加速库插件支持以下加速库:

表 6-1 支持的加速库

类别 名称 说明

系统库 glibc-patch 对内存、字符串、锁等接口基于华为鲲鹏920处理器微架构特点进行了加速优化

hyperscan 基于鲲鹏微架构优势,使用鲲鹏指令加速正则表达式的编译、扫描性能

AvxToNeon AvxToNeon是一款接口集合库。使用鲲鹏加速指令对传统平台定义的gccIntrinsic内建函数进行适配,以支持使用了传统平台Intrinsic接口的应用能平滑迁移到鲲鹏平台

压缩 gzip 基于gzip-1.10,通过数据预取、循环展开、CRC指令替换等方法,来提升其在鲲鹏计算平台上的压缩和解压缩速率,尤其对文本类型文件的压缩及解压具有更明显的性能优势

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 408

Page 417: 2.3.T10 鲲鹏开发套件插件工具(VSCode

类别 名称 说明

zstd 基于zstd-1.4.4,通过使用NEON指令、内联汇编、代码结构调整、内存预取、指令流水线排布优化等方法,实现zstd在鲲鹏计算平台上压缩和解压性能的提升

snappy 基于snappy-1.1.7,使用内联汇编、宽位指令、优化CPU流水线、内存预取等方法,实现snappy在鲲鹏计算平台上的压缩和解压速率提升

KAEzip KAEzip是鲲鹏加速引擎的压缩模块,使用鲲鹏硬加速模块实现deflate算法,结合无损用户态驱动框架,提供高性能gzip/zlib格式压缩接口

加解密 KAECrypto 使用鲲鹏硬加速模块实现RSA/SM3/SM4/DH/MD5/AES算法,结合无损用户态驱动框架,提供高性能对称加解密、非对称加解密算法能力,兼容openssl1.1.1a及其之后版本,支持同步&异步机制

媒体 x265-patch 使用鲲鹏加速指令对x265开源库的转码核心代码进行重构,在保证原有接口及算法不变情况下,在鲲鹏平台下能获得较好的转码性能。针对ffmpeg视频转码场景,对x265的转码底层算子使用鲲鹏向量指令进行加速优化,提高转码性能

HW265 HW265视频编码器是符合H.265/HEVC视频编码标准、基于鲲鹏处理器NEON指令加速的华为自研H.265视频编码器。HW265支持四个预设编码档位可选,对应不同编码速度的应用场景,码率控制支持平均比特率模式(ABR)和恒定QP模式(CQP),功能涵盖直播、点播等各个场景,整体性能优于目前的主流开源软件

HMPP 鲲鹏超媒体性能库HMPP(Hyper MediaPerformance Primitives)包括向量缓冲区的分配与释放、向量初始化、向量数学运算与统计学运算、向量采样与向量变换、滤波函数、变换函数(快速傅里叶变换),支持IEEE 754浮点数运算标准,支持鲲鹏平台下使用

数学库 KML_FFT KML_FFT基于鲲鹏架构,通过向量化、算法改进,对快速离散傅里叶变换进行了深度优化,使得快速傅里叶变换接口函数的性能有大幅度提升

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 409

Page 418: 2.3.T10 鲲鹏开发套件插件工具(VSCode

类别 名称 说明

KML_BLAS KML_BLAS基于鲲鹏架构,通过向量化、数据预取、编译优化、数据重排等手段,对BLAS的计算效率进行了深度挖掘,使得BLAS接口函数的性能逼近理论峰值

KML_SPBLAS KML_SPBLAS基于鲲鹏架构,充分利用鲲鹏的指令集和架构特点,开发了高性能稀疏矩阵运算库,提升HPC和大数据解决方案业务性能

KML_MATH KML_MATH通过周期函数规约、算法改进等手段,提供了基于鲲鹏处理器性能提升较大的函数实现

KML_VML KML_VML通过NEON指令优化、内联汇编等方法,对输入数据进行向量化处理,充分利用了鲲鹏架构下的寄存器特点,实现了在鲲鹏处理器上的性能提升

KML_LAPACK KML_LAPACK通过分块、求解算法组合、多线程、BLAS接口优化等手段,基于鲲鹏架构对LAPACK的计算效率进行了优化,实现了在鲲鹏处理器上的性能提升

鲲鹏加速库插件支持的功能特性如下:

● 智能联想

Coding时自动联想鲲鹏加速库优化后的相关函数

● 函数搜索

支持鲲鹏加速库函数的代码定义跳转、函数搜索

● 语法高亮

Coding时高亮鲲鹏加速库优化后的相关函数

● 加速分析

支持工程和文件扫描,识别出可以用鲲鹏加速库替换的函数

● 字典管理

支持加速库函数字典管理,可线上(自动)和线下更新

6.2 特性指南

6.2.1 加速分析

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 410

Page 419: 2.3.T10 鲲鹏开发套件插件工具(VSCode

6.2.1.1 特性描述

鲲鹏加速库插件提供加速分析特性(在VSCode资源栏目,用户可以右键点击自己项目下的任意文件或者文件夹或者空白区域,此时会出现特性相关的“鲲鹏加速分析”、“清除加速分析报告”和“查看加速分析报告”菜单选项。)。

6.2.1.2 特性操作

单击“鲲鹏加速分析”后,插件会分析工程里面依赖加速库的函数,并将扫描的结果在可视化面板以及VSCode的问题栏展示。点击问题栏中的问题可以跳转到函数方法,点击可视化界面中的“函数所在路径”可以跳转到函数方法。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 411

Page 420: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 6-1 加速分析

6.2.2 编码辅助

6.2.2.1 特性描述

当插件安装完成后,插件会自动下载鲲鹏的字典库数据,字典数据下载完成后,插件会启用针对加速库函数的语法高亮、函数定义跳转、以及代码自动补全。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 412

Page 421: 2.3.T10 鲲鹏开发套件插件工具(VSCode

6.2.2.2 特性操作

系统会根据输入的内容自动联想函数或补全代码。用户可以使用上下方向键高亮智能联想内容的说明,还可以点击说明框中的链接地址查看函数的详细定义。也可单击代码查看补全选项。

图 6-2 编码辅助(语法高亮/智能联想/智能提示/定义跳转)

6.2.3 函数搜索

6.2.3.1 特性描述

鲲鹏加速库架插件提供对function函数的名称、优化点、描述搜索,以及Intrinsic函数的名称、函数详细定义、Intel对应的Intrinsic功能函数名称、Intel对应的汇编指令名称、ARM对应的汇编指令名称的搜索。

6.2.3.2 特性操作

单击编辑区右上角的 ,在搜索框中输入搜索关键字,然后单击function函数会跳转头文件定义,单击Intrinsic函数会打开Intrinsic的帮助文档地址。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 413

Page 422: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 6-3 加速库优化后的函数搜索

6.3 常用操作

6.3.1 字典管理

● 单击编辑区右上角 ,即可配置远程字典地址,导入本地字典,和配置加速库提示选项,如图6-4所示。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 414

Page 423: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

● 用户启动鲲鹏加速库插件时会自动从远程字典地址获取 新字典数据。请提前确认VSCode网络代理是否正常配置,并能联网。

● 如果要导入本地字典,请从以下连接获取:

https://gitee.com/kunpengcompute/kunpengacclibdict/raw/master/dictionary.json

图 6-4 字典管理

6.3.2 选择加速分析类型

单击编辑区右上角 ,选择加速分析的类型,然后点击“保存设置”,如图6-5图6-6。

图 6-5 选择加速分析类型

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 415

Page 424: 2.3.T10 鲲鹏开发套件插件工具(VSCode

图 6-6 选择加速分析类型

6.3.3 检测新版本

单击编辑区右上角 ,即可检测新版本。插件自身也存在自动检测机制。

6.3.4 反馈建议步骤1 选择“鲲鹏加速分析>加速库分析”。

打开“设置加速分析类型”页面。

步骤2 单击Banner上的“上鲲鹏社区,反馈建议”或界面右下角的 。

在浏览器中打开“建议反馈”页面,如图6-7所示。

图 6-7 建议反馈

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 416

Page 425: 2.3.T10 鲲鹏开发套件插件工具(VSCode

说明

如弹出“连接失败”提示框,请按照提示排除故障。

步骤3 在“建议反馈”页面上按要求填写问题详情及邮箱地址,选择“已阅读并同意 《隐私政策声明》”,然后单击“提交”。

----结束

6.4 FAQ

6.4.1 无法下载字典文件

问题

使用插件时,提示“无法获取远程字典文件”,如何解决?

回答

步骤1 请单击“重置远程地址”,将字典远程地址重置为默认值。

步骤2 重置后如果还是不能下载字典文件,此时需要检测网络是否处于封闭网络,如果是则需要配置代理才能访问字典地址。

● 请单击错误提示框中的“检查网络代理”,进入VSCode网络代理配置界面。

● 或者单击VSCode右上角“字典管理”,进入字典管理界面,然后单击“VSCode网络代理”,进入VSCode网络代理配置界面。

说明

“工作区”的优先级高于“用户”,该参数 好配置在“用户”。

配置网络代理,变量值配置格式:http://用户名:密码@proxy.xx.com:8080● 如果您的代码服务器需要认证,则请配置用户名和密码,注意密码有特殊字符需

要转义。

● proxy.xx.com为代理服务器的域名

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 417

Page 426: 2.3.T10 鲲鹏开发套件插件工具(VSCode

● 8080为代理服务器的端口

----结束

6.4.2 无法解析字典文件内容

问题

远程字典下载成功,但该字典文件不是有效的json格式,内容无法解析,如何解决?

回答

可能由于用户修改过字典的默认远程地址导致的。请单击错误提示框中的“重置远程地址”进行重置。或者在VSCode上选择“文件 > 首选项 > 设置”,重置“用户”和“工作区”的远程地址。

说明

“工作区”的优先级高于“用户”,请保持这2个都被重置为默认值。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 418

Page 427: 2.3.T10 鲲鹏开发套件插件工具(VSCode

6.4.3 无法获取远端校验文件

问题

远程字典下载成功,且字典文件也是有效的json格式,内容可以解析,但在下载校验文件时,提示“无法获取远程校验文件”,如何解决?

说明

该校验文件用于对字典内容进行合法性校验,确认是否被篡改等。

回答

可能由于用户修改过校验地址导致的。请单击错误提示框中的“重置校验地址”进行重置。或者在VSCode上选择“文件 > 首选项 > 设置”,重置“用户”和“工作区”的校验地址。

说明

“工作区”的优先级高于“用户”,请保持这2个都被重置为默认值。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 419

Page 428: 2.3.T10 鲲鹏开发套件插件工具(VSCode

6.4.4 字典文件校验不通过

问题

校验文件下载成功,但是字典文件与其不匹配,如何解决?

回答

可能是由于字典文件下载后被篡改,或者校验文件下载后被篡改导致的。请单击错误提示框中的“是”,重新下载字典文件和校验文件。

6.4.5 字典文件校验不合法

问题

远程字典下载成功,且字典文件也是有效的json格式,内容可以解析,校验sha256通过,但里面的内容不合法,会弹出如下提示。如何解决?

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 420

Page 429: 2.3.T10 鲲鹏开发套件插件工具(VSCode

回答

由于字典文件内容被篡改导致的。请单击错误提示框中的“是”,重新下载字典文件和校验文件。

6.4.6 导入本地字典文件常见问题

问题1:导入本地字典文件时,提示“本地字典路径无效”,如何解决?

回答:由于填写的路径不规范,不是本地有效的磁盘路径导致的。请单击错误提示框中的“是”,重新选择有效的字典文件或输入有效的路径。

问题2:导入本地字典文件时,文件路径有效,但是无法正常解析json格式,如何解决?

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 421

Page 430: 2.3.T10 鲲鹏开发套件插件工具(VSCode

回答:由于本地字典文件不是标准json格式导致的,例如文件中缺失冒号等。请打开要导入的文件,检查文件中是否有缺失冒号或逗号的情况,请修改为标准的json格式后重新导入。

问题3:导入本地字典文件时,文件路径有效且正常解析json格式,但提示“字典文件内容校验不合法”,如何解决?

回答:请从字典远程地址重新获取一份字典文件,然后重新导入。

问题4:导入本地字典文件时,文件路径有效,但不是有效的文件类型,如何解决?

回答:由于本地字典文件的文件类型不是json导致,请重新上传json文件。

问题5:导入本地字典文件时,文件路径有效且正常解析json格式,但提示“本地字典文件大小”不在有效范围内,如何解决?

回答:请从字典远程地址重新获取一份字典文件,然后重新导入。

6.4.7 函数搜索功能常见问题

使用函数搜索功能时,为什么有的跳转定义有的打开网站?

回答:字典中的Function函数会跳转定义,Intrinsic函数会打开帮助文档链接。

6.4.8 待扫描文件中函数数量与扫描结果中的函数数量不一致

问题

为什么待扫描文件中函数数量与扫描结果中的函数数量不一致?

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 422

Page 431: 2.3.T10 鲲鹏开发套件插件工具(VSCode

回答

扫描分析只扫描分析字典里面的function函数,不分析Intrinsic函数。同时扫描也是根据用户所选的加速库类型来扫描的。

6.4.9 为什么语法没有高亮

问题

在插件正常安装配置后,为什么语法没有高亮?

回答

请根据VSCode右下角提示,重启VSCode。

鲲鹏开发套件插件工具(VSCode) 6 加速库插件

文档版本 01 (2021-10-25) 版权所有 © 华为技术有限公司 423