鲲鹏原生开发技术白皮书总结
鲲鹏原生开发的机遇和挑战
- 鲲鹏计算产业聚焦计算架构创新和开源基础软件研发,以及华为云服务,致力于推动鲲鹏生态发展。
- 鲲鹏全栈创新已覆盖国计民生核心场景,主流伙伴核心应用已迁移到鲲鹏,但面临应用持续发布和高效率开发挑战。
- 技术挑战包括:流水线改造繁琐、鲲鹏微架构优化不足、安全合规扫描缺失、多算力测试效率低。
鲲鹏原生开发的核心技术理念
- 核心理念:基于鲲鹏硬件+openEuler+双Kit(DevKit、BoostKit)套件,实现1套代码+1条流水线+N个版本,持续且首发商用版本。
- 包含代码开发阶段和流水线阶段:
- 代码开发阶段:通过鲲鹏DevKit、BoostKit开发代码,充分应用鲲鹏架构优势,性能更优。
- 流水线阶段:鲲鹏DevKit以命令行方式1小时接入CI/CD,便捷发布多平台版本。
- 关键特性:
- 极简融入&高效发布:DevKit原生开发插件1小时接入两大主流CI/CD流水线。
- 鲲鹏亲和&极致性能:鲲鹏流水线使能鲲鹏亲和分析工具、编译器、性能工具等,实现应用性能提升。
- 多架构兼容:1套流水线同时支持多样性算力版本构建及测试。
鲲鹏原生开发能力介绍
代码开发阶段
- 提供DevKit应用开发工具和BoostKit应用使能套件,通过启发式编程及多场景化SDK提供的示例Demo和文档,有效提升鲲鹏原生开发效率。
- 应用开发工具:
- 支持创建鲲鹏应用工程,支持C/C++开发语言,编码时自动匹配鲲鹏加速库函数字典、智能提示、高亮、联想。
- 支持功能:鲲鹏应用工程、字典管理、编程辅助。
- 鲲鹏BoostKit应用使能套件:
- 提供高性能开源组件、基础加速软件包和应用加速软件包,使能应用极致性能。
- 针对场景:
- ARM原生:ExaGear AArch32指令翻译软件、Kbox云手机容器、视频流引擎、指令流引擎。
- 大数据:openEuler和毕昇JDK性能优化、OmniRuntime、机器学习和图分析算法加速库、HBase索引优化、存算分离加速。
- 分布式存储:压缩算法、KAE zlib压缩、IO智能预取、KAE MD5摘要算法、存储加速算法库、存储维护工具库、EC Turbo、智能写Cache、IO直通、数据压紧、元数据加速、Ucache智能读缓存、BoostIO、RDMA网络加速。
- 机密计算:iTrustee套件(TEE OS、REE Patch、TEE SDK、BIOS、BMC)。
- 数据库:Gazelle网络优化、鲲鹏GCC CFGO反馈优化、KAEzip压缩解压缩优化、MySQL并行查询优化、MySQL无锁优化、MySQL细粒度锁优化、MySQL NUMA调度优化、MySQL可插拔线程池、CRC32指令优化、MySQL可插拔在线向量化分析引擎。
- 虚拟化:负载感知加速系统、OVS流表归一化、OVS流表网卡加速、高性能云盘优化、虚拟化DPU卸载。
- Web/CDN:KAE RSA加解密。
- HPC:多瑙管理平台、多瑙调度器。
- 鲲鹏BoostKit基础加速:
- 提供基于ARM指令深度优化和基于鲲鹏KAE开发的加速库,覆盖系统库、压缩、加解密、媒体、数学库、存储、网络和AI库等8类加速库。
- 组件包括:Glibc-patch、Hyperscan、AVX2KI、KQMalloc、HTL、KSL_ASN1、HAF。
代码优化
- 提供DevKit亲和分析工具,可实现鲲鹏亲和代码优化建议,帮助开发者写出更适配鲲鹏平台的代码。
- 亲和分析工具功能:
- 64位运行模式检查、字节对齐检查、缓存行对齐检查、内存一致性静态检查、向量化检查、矩阵化检查、构建亲和。
编译
- 提供毕昇编译器、毕昇JDK、GCC for openEuler。
- 毕昇编译器:支持C11、C++14/17、Fortran语言标准,OpenMP 4.5/5.0 API标准,高性能编译算法,支持安全/高效编码工具集。
- 毕昇JDK:基于OpenJDK开发,支持Java 8、11、17、21四个LTS版本,支持架构:Linux/AArch64、Linux/x86_64,支持操作系统:openEuler全系列操作系统、CentOS 7.6、Ubuntu 20.04、Ubuntu 22.04、麒麟V10、UOS 20。
- GCC for openEuler:基于开源GCC开发的编译器工具链,支持C11、C++14/17、Fortran 2018语言标准,OpenMP 4.5/5.0 API标准,针对鲲鹏平台进行质量加固。
调试
- 提供编译调试工具,支持C/C++/Fortran代码调试能力、单机下GPU应用调试能力、HPC场景多节点应用并行调试能力。
- 编译调试工具功能:
- 一键式部署鲲鹏编译器。
- 可视化配置编译调试参数,一键式编译、运行、调试。
- 远程单步调试C/C++代码。
- 编译调试过程中信息实时交互。
- CUDA支持调试源码、汇编代码。
- HPC支持调试源码、汇编代码,支持历史通信组详细信息展示和堆栈切换。
调优
- 提供系统性能分析工具、Java性能分析工具、系统诊断工具,通过通用性能调优和场景化性能调优,可实现应用性能提升5%-10%。
- 系统性能分析工具:
- 通用分析:全景分析、进程/线程分析、热点函数分析。
- 系统部件分析:微架构分析、访存分析、I/O分析。
- 专项分析:资源调度分析、锁与等待分析、Roofline分析。
- 调优助手:系统化组织性能指标,引导用户分析性能瓶颈,实现快速调优。
- AI调优:通过AI技术自动推荐参数配置,提升调优效率和效果。
- 场景化调优:针对HPC应用进行性能分析,提供MPI timeline等可视化结果。
- Java性能分析工具:
- 在线分析:对目标JVM和Java程序进行双重分析,图形化显示堆、线程、锁、垃圾回收等信息。
- 采样分析:通过采样方式收集JVM的内部活动/性能事件,进行离线分析。
系统诊断工具
- 提供内存诊断、网络IO诊断、存储IO诊断功能,识别异常点并给出优化建议。
- 内存诊断:识别内存泄漏、内存越界等问题。
- 网络IO诊断:识别网络丢包等问题。
- 存储IO诊断:识别存储性能瓶颈等问题。
流水线阶段
- 门禁检查:
- 提供DevKit应用迁移工具、亲和分析工具和编码规范检查,拦截不适配鲲鹏服务器的代码,提供优化建议。
- 应用迁移命令行:软件迁移评估、源码迁移。
- 亲和分析命令行:64位运行模式检查、字节对齐检查、内存一致性检查、向量化检查、矩阵化检查、构建亲和、缓存行对齐检查、BC文件生成。
- 编码规范检查:使用SonarQube进行编码规范检查,涵盖架构设计、注释、编码规范、潜在缺陷、代码复杂度、重复代码等多个维度。
- 编译构建:提供毕昇编译器、毕昇JDK、GCC for openEuler。
- 调优:提供自动反馈优化功能,通过流水线自动触发,实现应用编译优化。
- 自动反馈优化:A-FOT工具支持AutoFDO、AutoPrefetch、AutoBOLT三种模式。
- 测试:
- 兼容性测试工具:提供一系列兼容测试用例集,实现鲲鹏兼容测试自动化。
- Java性能测试工具:结合Jmeter,对目标程序进行压测,采集目标进程的性能数据,生成压测报告。
- 版本发布:使用开源病毒扫描工具ClamAV,实现版本安全合规扫描自动化。
OS底座(openEuler系操作系统)
- openEuler简介:
- 面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统。
- 软件包总数已超过3.5万,提供可靠开源软件供应链。
- openEuler基础能力:
- iSulad轻量级容器引擎:轻量级容器引擎,资源占用更少,容器启动更快,可应用范围更广,支持系统容器与安全容器。
- StratoVirt:基于Linux内核虚拟化(KVM)的开源轻量级虚拟化技术,降低内存资源消耗,提高虚拟机启动速度,可应用于微服务或函数计算等Serverless场景。
- 核心架构:外部API、bootloader、模拟主板microvm、通用机型。
- openEuler AI软件栈:兼容NVIDIA、Ascend等主流算力平台的软件栈,提供高效的开发运行环境。
- 容器镜像:SDK镜像、AI框架镜像、模型应用镜像。
- A-Tune智能调优引擎:基于AI的操作系统性能调优引擎,简化IT系统调优工作,让应用程序发挥出色性能。
- 功能:智能决策(重要特征分析、两层分类模型、负载变化感知)、自动调优(重要参数选择、调优算法构建、知识库构建)。
- openEuler工具和社区服务:
- 操作系统迁移:x2openEuler工具套件,具有批量化原地升级能力,实现端到端的无感迁移。
- 迁移方案:成立迁移保障组织、迁移分析、方案设计、移植适配、迁移实施、测试上线。
- EulerMaker构建系统:软件包构建系统,完成源码到二进制软件包的构建,支持开发者通过搭积木方式,组装和定制出适合自己需求的场景化OS。
- 功能:增量/全量构建、构建依赖关系、分层定制、镜像定制、支持本地任务复现、一键工程创建。
- EulerTest测试管理平台:承载社区全流程测试活动的管理平台,使能社区版本测试可跟踪可追溯。
- 功能:资源管理、自动化测试、用例管理、产品/里程碑管理、测试任务管理、版本质量看板、自动化测试结果整合。
- EulerPipeline流水线:面向社区开发者,构建多架构、高质量的源码及二进制仓库。
- CVE Manager漏洞管理:对安全漏洞进行感知、收集、处理以及披露的流程、工具和机制。
- openEuler官方仓及扩展仓:提供超过3万+源码包、百万级二进制软件包,支持一站式兼容性软件包、文件查询、下载、开源软件包的使用风险感知服务。